1. ホーム
  2. データベース
  3. 神託

Oracle Logminer クイックスタート詳細

2022-01-07 04:23:54

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をよろしくお願いします