Oracle Logminer クイックスタート詳細
I. Logminerとは?
{LogMinerは、Oracleが製品8i以降に提供する実戦的で非常に便利な分析ツールです。 LogMinerは、Oracleが製品8i以降に提供する、Oracle redoログファイル(アーカイブされたログファイル)の特定の内容を簡単に取得できる、実際に非常に便利な分析ツールで、LogMiner分析ツールは、実際には、Oracle Databaseの一部として配布されるPL/SQLパッケージといくつかの動的ビューのセットで構成されています。LogMiner分析ツールは、実際にはPL/SQLパッケージといくつかの動的なビューのセットであり、それはOracleデータベースの一部としてリリースされている、Oracleが提供する完全に無料のツールです。
具体的には ユーザーデータやデータベース辞書に加えられたすべての変更は、OracleのREDOログファイルRedoLogに記録されており、LogminerはRedoLogを解析して対応するSQLデータを取得するツールである。
Oracle RedoLogの書き込み処理。Oracle RedoLogはラウンドロビン方式で書き込まれ、各Oracleインスタンスは少なくとも2つのグループのログを持つことになります。alter system switch logfile. Oracle Databaseでアーカイブが有効になっている場合、ロググループの切り替えが発生すると、前のロググループのログファイルがアーカイブディレクトリにアーカイブされます。
上記からわかるように、Oracleには2種類のRedoLogファイルが存在します。
-
現在書き込まれているロググループのファイルであり、このファイルには
v$log
とv$logfile
を取得する。 -
アーカイブされたREDOLOGファイル。
v$archived_log
取得
ループして最新のマッチするRedoLogを見つけ、Logminerに解析のためにそれをロードさせる、解析のためのデータはビューにある
v$logmnr_contents
を読み込むことで
v$logmnr_contents
を使用して、Oracleのリアルタイムデータを取得します。
II. Logminerのクイックユース
Logminerを設定するには、Oracle Configuration LogMinerのドキュメントを参照してください。
#1. Prepare the test data (test user)
SQL> conn testSQL> CREATE TABLE test(id varchar2(100));
INSERT INTO test (id) values ('000001');
INSERT INTO test (id) values ('000011');
commit;
Note: The following steps are all executed under logminer_test user
#2、View the current online log file of database
SQL>SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
#Find that only redo001 is the current status.
#3. Add the online log file that needs to be parsed
SQL>exec dbms_logmnr.add_logfile('/home/oracle/app/oracle/oradata/orcl11g/redo01.log', dbms_logmnr.new);
#4、Start Logminer
SQL>
begin
SYS.DBMS_LOGMNR.START_LOGMNR (
options => SYS.DBMS_LOGMNR.skip_corruption +
SYS.DBMS_LOGMNR.no_sql_delimiter +
SYS.DBMS_LOGMNR.no_rowid_in_stmt +
SYS.DBMS_LOGMNR.dict_from_online_catalog +
SYS.DBMS_LOGMNR.string_literals_in_stmt
);
end;
#5. Query redo log
SQL>select * from V$LOGMNR_CONTENTS;
#6、Stop Logminer
SQL>exec dbms_logmnr.end_logmnr;
第三に、Logminerの具体的な使用方法について
1. Logminerの設定
Oracle Configuration LogMinerのドキュメントを参照してください。
2. Logminerの使用方法
1. LogMinerの辞書を指定します。
2. 2. 解析するREDOログファイルのリストを指定します。DBMS_LOGMNR.ADD_LOGFILE プロシージャを使用するか、LogMiner の開始時(ステップ 3)に分析するログファイルのリストを自動的に作成するように LogMiner に指示します。
3. LogMinerを起動します。DBMS_LOGMNR.START_LOGMNR プロシージャを使用します。
4. 4. 対象のREDOデータを要求します。V$LOGMNR_CONTENTS ビューに問い合わせます。(このビューに問い合わせるには、SELECT ANY TRANSACTION 権限が必要です)。
5. LogMinerのセッションを終了します。DBMS_LOGMNR.END_LOGMNRプロシージャを使用します。
3. Logminer辞書
LogMiner辞書の役割
{LogMiner辞書はOracleデータ辞書で、現在のすべてのテーブル、フィールドなどに関する情報を記録します。 Oracleデータディクショナリは、現在のすべてのテーブル、フィールドなどに関する情報を記録する。LogMiner は、辞書を使用して、内部オブジェクト識別子とデータ型をオブジェクト名と外部データ形式に変換します。辞書がない場合、LogMiner は内部オブジェクト ID を返し、データをバイナリ番号として表示します。
INSERT INTO HR.JOBS(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY) VALUES('IT_WT','Technical Writer', 4000, 11000);
辞書がない場合は、LogMinerが表示されます。
insert into "UNKNOWN". "OBJ# 45522"("COL 1","COL 2","COL 3","COL 4") values
(HEXTORAW('45465f4748'),HEXTORAW('546563686e6963616c20577269746572'),
HEXTORAW('c229'),HEXTORAW('c3020b'));
Logminer辞書のオプション
LogMinerの辞書は、3つのオプションをサポートしています。
/{br
[外部リンクの画像ダンプに失敗しました、ソースサイトは盗難防止チェーン機構を持っているかもしれません、それは直接アップロードする画像を保存することをお勧めします (img-R2CA7hWc-1633660733574) (http://note.youdao.com/yws/res/612/ WEBRESOURCEb0b3ba1b987bc083fc09c6dae89c77e2)] 。
4. LogminerのREDOログファイルを指定する
Redo ログファイルの新しいリストを開始するには、DBMS_LOGMNR.NEW を使用して、これが新しいリストの開始であることを示す必要があります。
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/oracle/logs/log1.dbf',
OPTIONS => DBMS_LOGMNR.NEW);
ログファイルの追加は、以下の記述で可能です。
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/oracle/logs/log2.dbf',
OPTIONS => DBMS_LOGMNR.ADDFILE);
5. LogMinerの起動
DBMS_LOGMNR.START_LOGMNでLogminerを起動します。パラメータを指定することができます。
LogMinerが返されたデータをどのようにフィルタリングするかを指定する(例えば、開始時刻と終了時刻やSCN値によって)。
LogMiner が返すデータをフォーマットするためのオプションを指定します。
使用するLogMinerの辞書を指定する
主なパラメータは以下の通りです。
OPTIONS parameter description:
* DBMS_LOGMNR.SKIP_CORRUPTION - skip the redlog with errors
* NO_SQL_DELIMITER - do not use ';' to split redo sql
* DBMS_LOGMNR.NO_ROWID_IN_STMT - By default, SQL_REDO and SQL_UNDO statements used for UPDATE and DELETE operations contain " ROWID =" in the where clause.
* However, this is inconvenient for applications that want to re-execute SQL statements. When this option is set, "ROWID" is not placed at the end of the refactoring statement
* DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG - Use online dictionary
* DBMS_LOGMNR.CONTINUOUS_MINE - requires the use of logs in the same instance where the redo log is generated
* DBMS_LOGMNR.COMMITTED_DATA_ONLY - When this option is specified, LogMiner groups all DML operations belonging to the same transaction together. Transactions are returned in commit order.
* DBMS_LOGMNR.STRING_LITERALS_IN_STMT - By default, when formatting formatted SQL statements, SQL_REDO and SQL_UNDO statements use the database session's NLS setting
* (e.g. NLS_DATE_FORMAT, NLS_NUMERIC_CHARACTERS, etc.). With this option, the ANSI / ISO string literal format will be used
例
EXECUTE DBMS_LOGMNR.START_LOGMNR(
STARTTIME => '01-Jan-2003 08:30:00',
ENDTIME => '01-Jan-2003 08:45:00',
OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG +
DBMS_LOGMNR.CONTINUOUS_MINE);
6 V$LOGMNR_CONTENTSにある目的のREDOデータをクエリします。
Logminerは、redoLogのログを解析し、それらをv L O G M N R C O N T E N T Sビューにロードし、我々は唯一のSQLクエリを使用して対応するデータを得る必要があるv LOGMNR_CONTENTS ビュー、我々は唯一のSQLクエリを使用して対応するデータを得る必要があるv LOGMNRC ONTENTS ビュー、我々は唯一のSQLクエリを使用して対応するデータを得る必要があるvLOGMNR_CONTENTS ビュー関連分野 https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1154.htm.
主なフィールドは以下の通りです。
<テーブル 列 データ型 説明 SCN 数値 オラクルはコミットされた各トランザクションに一意の scn を割り当てます。 オペレーション VARCHAR2(32) 挿入 更新 削除 ddl コミット ロールバック... SEG_OWNER VARCHAR2(32) スキーマ テーブル名 VARCHAR2(32) テーブル名 タイムスタンプ 日付 データベース変更タイムスタンプ SQL_REDO VARCHAR2(4000) 変更を行った元のSQL文と同等に再構築されたSQL文例
SELECT
scn,
timestamp,
operation,
seg_owner,
table_name,
sql_redo,
row_id,
csf
FROM
v$logmnr_contents
WHERE
scn > ?
照会されたデータの例です。
Oracle Logminerの使い方についての記事はこれで終わりです。Oracle Logminerについての詳しい情報は、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後ともBinaryDevelopをよろしくお願いします
関連
-
ORCALテンポラリーテーブルの作成と削除
-
Oracleの表領域と権限を徹底解説
-
Oracle Temporary Tablespace SQLステートメントの実装
-
plsqlを使用してリモートOracleデータベースに接続する複数の方法
-
[解決済み] エラーを取得する - ORA-01858: 数値が期待される場所で非数値文字が見つかりました。
-
[解決済み】ソケットから読み込むデータがなくなるエラー
-
[解決済み] PL/SQLで、文字列中のシングルクォートをエスケープする方法は?
-
[解決済み] ORA-29913: Oracle に csv を挿入する際の ODCIEXTTABLEOPEN コールアウトの実行でエラーが発生しました。
-
[解決済み] エラー: ORA-01704: 文字列リテラルが長すぎる
-
[解決済み] カラムが存在するにもかかわらず、ORA-00904が発生するのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オラクル表領域拡張の詳細
-
オラクルデータベースに付属するすべてのテーブル構造を説明する(sqlコード)
-
ORACLE 当座預金に関する情報を見る
-
Oracle PL/SQLを使用して電子メール機能(UTL_MAIL)を実装する方法
-
Oracleトレースファイルの詳細な使用方法
-
C#からORACLEへの接続が乱れたコードの問題解決法
-
[解決済み] PLS-00382: 式が不正です。
-
[解決済み] PLS-907でライブラリユニットを読み込めない
-
[解決済み] ORA-01407:NULLに更新できません。
-
[解決済み] ORA-01747:user.table.column, table.column, または column の指定が無効です。