プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
12cリリース1 (12.1.0.2)
B71303-09
目次へ移動
目次
索引へ移動
索引

前
次

例2: 指定したSCN範囲でのREDOログ・ファイルのマイニング

この例では、分析するSCN範囲を指定する方法、およびその範囲を満たすREDOログ・ファイルをマイニングする方法を示します。LogMinerを使用して、データ・ファイルで影響がまだ永続的になっていないすべてのコミット済DML文を表示できます。

この例では(他の例と異なり)、NLS_DATE_FORMATパラメータを設定していないことに注意してください。

  1. 最後のチェックポイントが実行されたSCNを判別します。

    SELECT CHECKPOINT_CHANGE#, CURRENT_SCN FROM V$DATABASE;
    CHECKPOINT_CHANGE#  CURRENT_SCN
    ------------------  ---------------
              56453576         56454208
  2. LogMinerを起動し、CONTINUOUS_MINEオプションを指定します。

    EXECUTE DBMS_LOGMNR.START_LOGMNR(-
       STARTSCN => 56453576, -
       ENDSCN   => 56454208, -
       OPTIONS  => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
                   DBMS_LOGMNR.COMMITTED_DATA_ONLY + -
                   DBMS_LOGMNR.PRINT_PRETTY_SQL + -
                   DBMS_LOGMNR.CONTINUOUS_MINE);
    
  3. LogMinerによって追加されたアーカイブ済REDOログ・ファイルのリストを表示します。

    SELECT FILENAME name, LOW_SCN, NEXT_SCN FROM V$LOGMNR_LOGS;
    NAME                                           LOW_SCN   NEXT_SCN
    --------------------------------------------   --------  --------
    /usr/oracle/data/db1arch_1_215_482701534.dbf   56316771  56453579
    

    LogMinerによって追加されたREDOログ・ファイルには、SCN範囲全体が含まれないことに注意してください。CONTINUOUS_MINEオプションを指定した場合にDBMS_LOGMNR.START_LOGMNRプロシージャをコールすると、アーカイブ済REDOログ・ファイルのみがLogMinerによって追加されます。LogMinerは、問合せ実行中必要に応じて、オンラインREDOログ・ファイルに含まれている残りのSCN範囲を自動的に追加します。追加されたREDOログ・ファイルが生成された最新のアーカイブ済REDOログ・ファイルであるかどうかを確認するには、次の問合せを使用します。

    SELECT NAME FROM V$ARCHIVED_LOG 
       WHERE SEQUENCE# = (SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG);
    
    NAME
    -------------------------------------------- 
    /usr/oracle/data/db1arch_1_215_482701534.dbf 
  4. ユーザー表に対して行われた変更についてV$LOGMNR_CONTENTSビューに問い合せます。

    次の問合せは、トランザクション1.6.1911と関連付けられたSET TRANSACTION READ WRITE文およびCOMMIT文は返しません。これらの文には、セグメント所有者(SEG_OWNER)が関連付けられていないためです。

    デフォルトのNLS_DATE_FORMATであるDD-MON-RRが、DATE型のMODIFIED_TIME列の表示に使用されていることに注意してください。

    SELECT SCN, (XIDUSN || '.' || XIDSLT || '.' ||  XIDSQN) as XID, SQL_REDO 
        FROM V$LOGMNR_CONTENTS
        WHERE SEG_OWNER NOT IN ('SYS', 'SYSTEM');
    
    
    SCN        XID        SQL_REDO
    ---------- ---------- -------------
    56454198   1.6.1911   update "OE"."PRODUCT_INFORMATION"
                            set
                              "WARRANTY_PERIOD" = TO_YMINTERVAL('+05-00')
                            where
                              "PRODUCT_ID" = 2430 and
                              "WARRANTY_PERIOD" = TO_YMINTERVAL('+02-00') and
                              ROWID = 'AAAHTKAABAAAY9AAAC';
    
    56454199   1.6.1911   insert into "OE"."PRODUCT_TRACKING"
                            values
                              "PRODUCT_ID" = 2430,
                              "MODIFIED_TIME" = TO_DATE('17-JAN-03', 'DD-MON-RR'),
                              "OLD_LIST_PRICE" = 175,
                              "OLD_WARRANTY_PERIOD" = TO_YMINTERVAL('+02-00');
    
    56454204   1.6.1911    update "OE"."PRODUCT_INFORMATION"
                             set
                               "WARRANTY_PERIOD" = TO_YMINTERVAL('+05-00')
                             where
                               "PRODUCT_ID" = 2302 and
                               "WARRANTY_PERIOD" = TO_YMINTERVAL('+02-00') and
                               ROWID = 'AAAHTKAABAAAY9QAAA';
    56454206   1.6.1911    insert into "OE"."PRODUCT_TRACKING"
                             values
                               "PRODUCT_ID" = 2302,
                               "MODIFIED_TIME" = TO_DATE('17-JAN-03', 'DD-MON-RR'),
                               "OLD_LIST_PRICE" = 150,
                               "OLD_WARRANTY_PERIOD" = TO_YMINTERVAL('+02-00');
  5. LogMinerセッションを終了します。

    EXECUTE DBMS_LOGMNR.END_LOGMNR();