103 DBMS_LOGMNR

LogMinerパッケージの1つであるDBMS_LOGMNRパッケージには、LogMinerツールを初期化し、LogMinerセッションを開始および終了するために使用するサブプログラムが格納されています。

ノート:

プラガブル・データベース(PDB)のフラット・ファイル・ディクショナリ・ダンプを作成する機能は、Oracle Database 19cでサポートが終了しました。

以前のリリースでは、データ・ディクショナリがフラット・ファイル内に含まれている特定のPDBに関連付けられた変更のREDOログをマイニングする手段として、フラット・ファイル・ディクショナリを使用できました。この機能はサポートされなくなりました。Oracle Database 19c以降では、DBMS_LOGMNR.START_LOGMNRをコールして、マイニングするシステム変更番号(SCN)または時間範囲を指定することをお薦めします。START_LOGMNRのSCNまたは時間範囲のオプションは、個々のPDBのマイニングをサポートするように拡張されています。

LogMinerパッケージのCONTINUOUS_MINE機能は廃止されました。これは、Oracle Database 12cリリース2 (12.2)で非推奨になりました。かわりとなる機能はありません。

この章のトピックは、次のとおりです:

参照:

LogMinerの詳細は、『Oracle Databaseユーティリティ』を参照してください。

103.1 DBMS_LOGMNRの概要

Oracle Databaseの一部であるOracle LogMinerを使用すると、SQLインタフェースを介してオンラインおよびアーカイブのREDOログ・ファイルを問い合せることができます。DBMS_LOGMNRパッケージは、LogMinerを開始および停止し、対象となるREDOログ・ファイルを指定するための大部分のツールを提供します。

ユーザー・データやデータベース・ディクショナリに対するすべての変更は、Oracle REDOログ・ファイルに記録されます。これによってデータベース・リカバリ操作が実行できます。REDOログ・ファイルに記録されたデータを使用して、次のタスクも実行できます。

  • アプリケーション・レベルで発生したエラーなど、データベースの論理的な破損の開始時点を特定します。

  • トランザクション・レベルでファイングレインなリカバリを行うために必要な処置を特定します。

  • 傾向分析により、パフォーマンス・チューニングとキャパシティ・プランニングを実行します。

  • データベースで実行したすべてのデータ操作言語(DML)文およびデータ定義言語(DDL)文、これらを実行した順序、および実行したユーザーの追跡。

参照:

LogMinerディクショナリを抽出し、代替の表領域にLogMiner表を再作成するパッケージ・サブプログラムの詳細は、「DBMS_LOGMNR_D」を参照してください。

103.2 DBMS_LOGMNRのセキュリティ・モデル

DBMS_LOGMNRパッケージを使用するには、EXECUTE_CATALOG_ROLEロールが必要です。

103.3 DBMS_LOGMNRの定数

DBMS_LOGMNRパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_LOGMNR.NEWなど)。

ノート:

dbms_logmnr.start_logmnrパッケージのcontinuous_mineオプションは、Oracle Database19c (19.1)ではサポートが終了されていて使用できなくなっています。

次の表に、DBMS_LOGMNRパッケージのADD_LOGFILEオプション・フラグの定数を示します。

表103-1 ADD_LOGFILEオプション・フラグの定数

定数 説明

NEW

DBMS_LOGMNR.END_LOGMNRプロシージャを暗黙的にコールし、現在のLogMinerセッションを終了してから、新しいセッションを作成します。新しいセッションでは、指定されたREDOログ・ファイルから、分析対象の新しいREDOログ・ファイルのリストを開始します。

ADDFILE

指定のREDOログ・ファイルを分析対象のREDOログ・ファイルのリストに追加します。重複するファイルを追加しようとすると、例外(ORA-01289)が発生します。オプション・フラグを指定していない場合は、これがデフォルトです。

表103-2に、DBMS_LOGMNRパッケージのSTART_LOGMNRオプション・フラグの定数を示します。

表103-2 START_LOGMNRオプション・フラグの定数

定数 説明

COMMITTED_DATA_ONLY

このオプションを設定すると、コミットされたトランザクションに対応するDML文が戻されます。コミットされたトランザクションに対応するDML文は、グループ化されます。トランザクションは、コミットされた順序で戻されます。ロールバックまたは処理中のトランザクションは、内部REDOレコード(索引操作、管理などに関連するもの)であるため、除外されます。

このオプションを設定しない場合、すべてのトランザクション(コミット、ロールバック、処理中)の行がREDOログで見つかった順序(SCN値の順序)で戻されます。

SKIP_CORRUPTION

V$LOGMNR_CONTENTSビューでの選択操作で、分析中のREDOログ・ファイルの破損部分をスキップして処理を続行するように指示します。このオプションは、REDOログ・ファイルのブロック(REDOログ・ファイルのヘッダーは除く)が破損している場合にのみ機能します。V$LOGMNR_CONTENTSビューのINFO列をチェックして、LogMinerがスキップした破損ブロックを確認してください。REDOログ・ファイルの破損箇所をスキップすると、OPERATION列に値CORRUPTED_BLOCKSが格納され、STATUS列に値1343が格納されます。

DDL_DICT_TRACKING

使用中のLogMinerディクショナリがフラット・ファイルであるか、REDOログに格納されている場合、LogMinerは、DDLイベントが発生すると内部ディクショナリを更新します。これにより、LogMinerの内部ディクショナリが作成された後に変更されたオブジェクトに対し、SQL_REDOおよびSQL_UNDOの正しい情報が確実に保持されます。LogMinerが接続されるデータベースはオープンしている必要があります。

このオプションは、DICT_FROM_ONLINE_CATALOGオプションと一緒に使用できません。使用しているLogMinerディクショナリがOracle9i以前のフラット・ファイルに抽出されたものである場合も使用できません。

DICT_FROM_ONLINE_CATALOG

フラット・ファイルまたは分析対象のREDOログ・ファイルに含まれたLogMinerディクショナリではなく、現行のオンライン・データベース・ディクショナリを使用するようにLogMinerに指示します。

このオプションは、DDL_DICT_TRACKINGオプションと一緒に指定できません。LogMinerが接続されるデータベースは、REDOログ・ファイルを生成したデータベースと同じである必要があります。

データベースの表定義がREDOログ・ファイルの表定義と一致しない場合、V$LOGMNR_CONTENTSビューのSTATUS列の値が2になっていると考えられます。

DICT_FROM_REDO_LOGS

このオプションを設定すると、LogMinerは指定したREDOログ・ファイルにLogMinerディクショナリが見つかるものと予想します。REDOログ・ファイルは、DBMS_LOGMNR.ADD_LOGFILEプロシージャまたはDBMS_LOGMNR.START_LOGMNRプロシージャで指定します。

NO_SQL_DELIMITER

このオプションを設定すると、再構築されたSQL文の終わりにSQLデリミタ(セミコロン)が付加されません。この指定は、カーソルでオープンしてから、再構築された文を実行するアプリケーションに有効です。

NO_ROWID_IN_STMT

このオプションを設定すると、再構築されたSQL文にROWID句が含まれません。サプリメンタル・ロギングが有効である場合、REDOログ・ファイルには、変更した行に対して、すでに論理的に一意の識別子が含まれていることがあります。

このオプションを使用する場合、ソース・データベースで、サプリメンタル・ロギングが適切なレベルで有効で、対象となる表に重複した行が存在しないことを確認する必要があります。LogMinerには論理行識別子の一意性に関する保証がありません。

PRINT_PRETTY_SQL

このオプションを設定すると、LogMinerは再構築されたSQL文を読み易いようにフォーマットします。これらの再構築されたSQL文は実行できません。

STRING_LITERALS_IN_STMT

設定する場合、SQL_REDOおよびSQL_UNDOは、数値、日時および時間隔の列のタイプにリテラルを使用します。

複数のオプションを指定するには、オプション間にプラス記号(+)を使用します。たとえば:

EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => -
   DBMS_LOGMNR.DDL_DICT_TRACKING + DBMS_LOGMNR.DICT_FROM_REDO_LOGS);

103.4 DBMS_LOGMNRのビュー

DBMS_LOGMNRパッケージで使用するビューについては、『Oracle Databaseユーティリティ』ビューでのLogMiner操作情報へのアクセスに関する項を参照してください。

103.5 DBMS_LOGMNRの操作上のノート

LogMinerセッションは、DBMS_LOGMNR.ADD_LOGFILEまたはDBMS_LOGMNR.START_LOGMNR(前者はログ・ファイルを明示的に指定する場合、後者は調査を継続する場合)へのコールで開始します。セッションはDBMS_LOGMNR.END_LOGMNRへのコールで終了します。

LogMinerセッション内で、分析対象のREDOログ・ファイル、対象となるSCNまたは時間範囲を指定し、V$LOGMNR_CONTENTSビューに対して、SQL SELECT文を発行して、関連するデータを取得できます。

ADD_LOGFILEプロシージャは、START_LOGMNRプロシージャより前に呼び出す必要があります。

ノート:

フィルタを適用する前にログ・ファイルを追加する必要があります。連続ロギングはサポートされなくなりました。指定した時間またはSCNに一致するログ・ファイルが追加されていない場合、DBMS_LOGMNR.START_LOGMNRはエラーORA-01291: missing logfileで失敗します。

103.6 DBMS_LOGMNRサブプログラムの要約

この表は、DBMS_LOGMNRサブプログラムを示し、簡単に説明しています。

マルチテナント・コンテナ・データベース(CDB)では、一部のサブプログラムはルートからコールする必要があります。それ以外にも、違いがある可能性があります。詳細は、個々のサブプログラムの説明を参照してください。

表103-3 DBMS_LOGMNRパッケージのサブプログラム

サブプログラム 説明

ADD_LOGFILEプロシージャ

REDOログ・ファイルを既存または新規作成したLogMinerの処理対象のREDOログ・ファイルのリストに追加します。これによって、新しいリストの作成時に、LogMinerセッションの開始位置がマークされます。

COLUMN_PRESENTファンクション

このファンクションに対するcolumn_name入力パラメータによって指定された列のUNDOまたはREDO列値が存在するかどうかを判別するには、このファンクションをV$LOGMNR_CONTENTSビューから戻された行に対してコールします。

END_LOGMNRプロシージャ

LogMinerセッションを終了します。

MINE_VALUEファンクション

このファンクションに対するcolumn_name入力パラメータによって指定された列のUNDOまたはREDO列値を検索するには、このファンクションをV$LOGMNR_CONTENTSビューから戻された行に対してコールします。

REMOVE_LOGFILEプロシージャ

LogMinerの処理対象のREDOログ・ファイルのリストからREDOログ・ファイルを削除します。

START_LOGMNRプロシージャ

LogMinerユーティリティを初期化し、LogMinerを起動します(DBMS_LOGMNR.ADD_LOGFILEへのコールによって、セッションがすでに開始していない場合)。

103.6.1 ADD_LOGFILEプロシージャ

このプロシージャは、ファイルを既存または新規作成したLogMinerの処理対象のログ・ファイルのリストに追加します。

ノート:

dbms_logmnr.start_logmnrパッケージのcontinuous_mineオプションは、Oracle Database19c (19.1)ではサポートが終了されていて使用できなくなっています。

CDBでは、ADD_LOGFILEプロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING管理者権限が必要です。

構文

DBMS_LOGMNR.ADD_LOGFILE ( 
   LogFileName     IN VARCHAR2,
   options         IN BINARY_INTEGER default ADDFILE );

パラメータ

表103-4 ADD_LOGFILEプロシージャのパラメータ

パラメータ 説明

LogFileName

このセッションで分析対象のREDOログ・ファイルのリストに追加するREDOログ・ファイルの名前を指定します。

options

次のいずれかを実行します。

  • 新しいLogMinerセッションと分析対象のREDOログ・ファイルの新しいリストを開始します(DBMS_LOGMNR.NEW)。

  • 分析対象のREDOログ・ファイルの既存のリストにファイルを追加します(DBMS_LOGMNR.ADDFILE)。

表103-1を参照してください。

例外

表103-5 ADD_LOGFILEプロシージャの例外

例外 説明

ORA-01284

指定したファイルをオープンできません。

ORA-01287

指定したファイルは別のデータベース・インカネーションのファイルです。

ORA-01289

指定したファイルはすでにリストに追加されています。REDOログ・ファイルは重複して追加できません。

ORA-01290

指定したファイルは現在のリストには存在しないため、そのリストからは削除できません。

ORA-01324

DB_IDが一致しないため、指定したファイルを追加できません。

使用上のノート

  • PDB接続からのDBMS_LOGMNR.ADD_LOGFILEコールは、アドホック・ユーザーに対してはサポートされておらず、エラー65040が戻されます。

  • フラット・ファイル・ディクショナリのダンプおよびフラット・ファイル・ディクショナリを使用したマイニングは、PDB接続からはサポートされていません。

  • V$LOGMNR_CONTENTSビューに問い合せる前に、(現在のLogMinerセッション内で)DBMS_LOGMNR.START_LOGMNRプロシージャのコールに成功する必要があります。

  • LogMinerセッションは、分析するREDOログ・ファイルのリストを使用して設定する必要があります。ADD_LOGFILEプロシージャを使用して、分析するREDOログ・ファイルのリストを指定してください。

  • 複数のREDOログ・ファイルを分析する場合は、REDOログ・ファイルごとにADD_LOGFILEプロシージャを個別にコールする必要があります。REDOログ・ファイルを特定の順序で登録する必要はありません。

  • アーカイブとオンラインの両方のREDOログ・ファイルを調査できます。

  • 最初のREDOログ・ファイルをリストに追加したら、リストに追加した各REDOログ・ファイルを、最初のREDOログ・ファイルと同じデータベースおよびデータベースRESETLOGS SCNに関連付ける必要があります。(データベースRESETLOGS SCNALTER DATABASE OPEN RESETLOGS文の各実行を一意に識別します。オンラインREDOログのリセット時に、Oracleはデータベースの新しい一意のインカネーションを作成します。)

  • 現在のREDOログ・ファイルのリストが関連付けられているデータベースと異なるデータベース(またはデータベースRESETLOGS SCNが異なるデータベース・インカネーション)からのREDOログ・ファイルを分析するには、END_LOGMNRプロシージャを使用して、現在のLogMinerセッションを終了し、ADD_LOGFILEプロシージャを使用して、新しいリストを作成します。

  • LogMinerはログ順序番号によってREDOログ・ファイルを照合します。そのため、名前は異なるがログ順序番号が同じ2つのREDOログ・ファイルがあると、ORA-01289例外が戻されます。たとえば、アーカイブREDOログ・ファイルの対応するオンラインREDOログ・ファイルは、アーカイブREDOログ・ファイルと名前は異なりますが、アーカイブREDOログ・ファイルの登録後に、オンラインREDOログ・ファイルをLogMinerに登録しようとすると、ORA-01289例外が返されます。

103.6.2 COLUMN_PRESENTファンクション

このファンクションは、MINE_VALUEファンクションと一緒に使用することになっています。

MINE_VALUEファンクションがNULL値を戻した場合は、次のいずれかの可能性があります。

  • 指定した列がデータのREDO部分またはUNDO部分に存在していない。

  • 指定列は存在しますが、NULL値です。

この2つの場合を区別するには、COLUMN_PRESENTファンクションを使用しますが、データのREDOまたはUNDO部分に列が存在する場合は、1が戻されます。存在していない場合には、0が返されます。

構文

DBMS_LOGMNR.COLUMN_PRESENT (
     sql_redo_undo      IN  RAW,
     column_name        IN  VARCHAR2 default '') RETURN NUMBER;

パラメータ

表103-6 COLUMN_PRESENTファンクションのパラメータ

パラメータ 説明

sql_redo_undo

データ値を抽出するV$LOGMNR_CONTENTSビューのREDO_VALUE列またはUNDO_VALUE列のいずれかを指定します。詳細は、「使用上のノート」を参照してください。

column_name

このファンクションが情報を戻す対象となる列の完全修飾名(schema.table.column)を指定します。

CDBでは、列名は次のように指定します。

container_name:schema.table.column

戻り値

表103-7に、COLUMN_PRESENTファンクションの戻り値を示します。自己記述型のレコード(最初のパラメータ)が2番目のパラメータで指定した列を含んでいる場合、COLUMN_PRESENTファンクションは1を戻します。これは、DBMS_LOGMNR.MINE_VALUEファンクションによって戻されたNULL値の意味を判断する場合に使用できます。

表103-7 COLUMN_PRESENTファンクションの戻り値

戻り値 説明

0

指定された列がV$LOGMNR_CONTENTSのこの行にありません。

1

列がV$LOGMNR_CONTENTSのこの行にあります。

例外

表103-8 COLUMN_PRESENTファンクションの例外

例外 説明

ORA-01323

現在、LogMinerディクショナリはLogMinerセッションに関連付けられていません。LogMinerセッションのLogMinerディクショナリを指定する必要があります。

ORA-00904

column_nameパラメータに指定された値が、完全修飾列名ではありません。

使用上のノート

  • COLUMN_PRESENTファンクションを使用するには、LogMinerが正常に開始されている必要があります。

  • COLUMN_PRESENTファンクションは、V$LOGMNR_CONTENTSビューの選択操作のコンテキストで起動する必要があります。

  • COLUMN_PRESENTファンクションは、LONG、LOB、ADTまたはCOLLECTIONデータ・タイプをサポートしていません。

  • sql_redo_undoパラメータの値は、実行した操作および対象となるデータによって異なります。

    • 更新操作を実行して、更新操作前の値を知る必要がある場合は、UNDO_VALUEを指定します。

    • 更新操作を実行して、更新操作後の値を知る必要がある場合は、REDO_VALUEを指定します。

    • 挿入操作を実行した場合は、一般にREDO_VALUEを指定します(挿入操作前の列の値は常にNULLであるため)。

    • 削除操作を実行した場合は、一般にUNDO_VALUEを指定します(削除操作後の列の値は常にNULLであるため)。

103.6.3 END_LOGMNRプロシージャ

このプロシージャは、LogMinerセッションを終了します。このプロシージャは他の方法で実行できないクリーンアップ操作を実行するため、このプロシージャによりLogMinerセッションを適切に終了する必要があります。このプロシージャは、データベース・セッションからログアウトするか、DBMS_LOGMNR.ADD_LOGFILEをコールし、NEWオプションを指定した場合に自動的にコールされます。

構文

DBMS_LOGMNR.END_LOGMNR;

例外

表103-9 END_LOGMNRプロシージャの例外

例外 説明

ORA-01307

LogMinerセッションは現在アクティブではありません。ログ・ファイルを追加していないか、またはEND_LOGMNRプロシージャをコールする前に、START_LOGMNRプロシージャがコールされました。

103.6.4 MINE_VALUEファンクション

このファンクションは、列のデータ値に基づいた問合せを簡単にします。

このファンクションでは2つの引数を指定します。最初の引数は、データのREDO部分(REDO_VALUE)またはUNDO部分(UNDO_VALUE)のいずれをマイニングするかを指定します。2番目の引数は、取り出す列の完全修飾名を指定する文字列です。MINE_VALUE関数からは、常に、元のデータ型に戻すことができる文字列を返します。

構文

DBMS_LOGMNR.MINE_VALUE (
     sql_redo_undo      IN  RAW,
     column_name        IN  VARCHAR2 default '') RETURN VARCHAR2;

パラメータ

表103-10 MINE_VALUEファンクションのパラメータ

パラメータ 説明

sql_redo_undo

データ値を抽出するV$LOGMNR_CONTENTSビューのREDO_VALUE列またはUNDO_VALUE列のいずれかを指定します。詳細は、「使用上のノート」を参照してください。

column_name

このファンクションが情報を戻す対象となる列の完全修飾名(schema.table.column)を指定します。

CDBでは、列名は次のように指定します。

container_name:schema.table.column

戻り値

表103-11 MINE_VALUEファンクションの戻り値

戻り値 説明

NULL

列は自己記述型のレコードに含まれていないか、列値がNULLです。この2種類のNULLのいずれであるかを区別するには、DBMS_LOGMNR.COLUMN_PRESENTファンクションを使用します。

NON-NULL

列は自己記述型のレコードに含まれています。値は文字列形式で戻されます。

例外

表103-12 MINE_VALUEファンクションの例外

例外 説明

ORA-01323

状態が無効です。現在、LogMinerディクショナリはLogMinerセッションに関連付けられていません。LogMinerセッションのLogMinerディクショナリを指定する必要があります。

ORA-00904

識別子が無効です。column_nameパラメータに指定された値が、完全修飾列名ではありませんでした。

使用上のノート

  • MINE_VALUEファンクションを使用するには、LogMinerが正常に開始されている必要があります。

  • MINE_VALUEファンクションは、V$LOGMNR_CONTENTSビューの選択操作のコンテキストで起動する必要があります。

  • MINE_VALUEファンクションは、LONG、LOB、ADTまたはCOLLECTIONデータ・タイプをサポートしていません。

  • sql_redo_undoパラメータの値は、実行した操作および対象となるデータによって異なります。

    • 更新操作を実行して、更新操作前の値を知る必要がある場合は、UNDO_VALUEを指定します。

    • 更新操作を実行して、更新操作後の値を知る必要がある場合は、REDO_VALUEを指定します。

    • 挿入操作を実行した場合は、一般にREDO_VALUEを指定します(挿入操作前の列の値は常にNULLであるため)。

    • 削除操作を実行した場合は、一般にUNDO_VALUEを指定します(削除操作後の列の値は常にNULLであるため)。

  • DBMS_LOGMNR.MINE_VALUEファンクションを使用してデータベース文字セットに存在しない文字を含むNCHAR値を取得する場合、それらの文字は、データベース文字セットの置換文字(逆向きの疑問符など)として返されます。

103.6.5 REMOVE_LOGFILEプロシージャ

このプロシージャは、LogMinerが処理する既存のREDOログ・ファイルのリストからREDOログ・ファイルを削除します。

CDBでは、REMOVE_LOGFILEプロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING管理者権限が必要です。

構文

DBMS_LOGMNR.REMOVE_LOGFILE ( 
   LogFileName     IN VARCHAR2);

パラメータ

表103-13 REMOVE_LOGFILEプロシージャのパラメータ

パラメータ 説明

LogFileName

このセッションで分析するREDOログ・ファイルのリストから削除するREDOログ・ファイルの名前を指定します。

例外

表103-14 REMOVE_LOGFILEプロシージャのパラメータ

例外 説明

ORA-01290

リストにないログ・ファイルを削除できません。

使用上のノート

  • V$LOGMNR_CONTENTSビューに問い合せる前に、(現在のLogMinerセッション内で)DBMS_LOGMNR.START_LOGMNRプロシージャのコールに成功する必要があります。

  • このプロシージャを使用して、REDOログ・ファイルに、対象となるデータが含まれていないとわかっている場合、LogMinerが処理するREDOログ・ファイルのリストからREDOログ・ファイルを削除できます。

  • このプロシージャを繰り返しコールすることで、複数のREDOログ・ファイルを削除できます。

  • REDOログ・ファイルは特定の順序で削除する必要はありません。

  • 分析対象のREDOログ・ファイルの新しいリストを開始するには、END_LOGMNRプロシージャを使用して、現在のLogMinerセッションを終了してから、ADD_LOGFILEプロシージャを使用して、新しいリストを作成します。

  • リストからすべてのREDOログ・ファイルを削除する場合でも、後続のADD_LOGFILEプロシージャのコールでは、データベースIDと削除するREDOログ・ファイルのRESETLOGS SCNが一致している必要があります。そのため、現在のREDOログ・ファイルのリストが関連付けられているデータベースと異なるデータベース(またはデータベースRESETLOGS SCNが異なるデータベース・インカネーション)からのREDOログ・ファイルを分析するには、END_LOGMNRプロシージャを使用して、現在のLogMinerセッションを終了し、ADD_LOGFILEプロシージャを使用して、新しいリストを作成します。

103.6.6 START_LOGMNRプロシージャ

このプロシージャは、LogMinerが内部スキーマ・オブジェクト識別子を名前に変換するために使用するディクショナリをロードして、LogMinerを始動します。

CDBでは、START_LOGMNRプロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING管理者権限が必要です。

ノート:

プラガブル・データベース(PDB)のフラット・ファイル・ディクショナリ・ダンプを作成する機能は、Oracle Database 21cでサポートが終了しました。

以前のリリースでは、データ・ディクショナリがフラット・ファイル内に含まれている特定のPDBに関連付けられた変更のREDOログをマイニングする手段として、フラット・ファイル・ディクショナリを使用できました。この機能はサポートされなくなりました。Oracle Database 21c以降では、DBMS_LOGMNR.START_LOGMNRをコールし、マイニングするシステム変更番号(SCN)または時間範囲を指定することをお薦めします。START_LOGMNRのSCNまたは時間範囲のオプションは、個々のPDBのマイニングをサポートするように拡張されています。

構文

DBMS_LOGMNR.START_LOGMNR ( 
   startScn           IN NUMBER default 0,
   endScn             IN NUMBER default 0,
   startTime          IN DATE default '01-jan-1988',
   endTime            IN DATE default '31-dec-2110',
   DictFileName       IN VARCHAR2 default '',
   Options            IN BINARY_INTEGER default 0 );

パラメータ

表103-15 START_LOGMNRプロシージャのパラメータ

パラメータ 説明

startScn

指定したstartScn以上のSCNを持つREDOレコードのみを戻すようにLogMinerに指示します。指定したstartScn値を含むREDOログ・ファイルがない場合、このプロシージャは失敗します。(各REDOログ・ファイルに含まれるSCN値の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAMELOW_SCNおよびNEXT_SCN列を問い合せることができます。)

endScn

指定したendScn以下のSCNを持つREDOレコードのみを戻すようにLogMinerに指示します。すべてのREDOログ・ファイルの値を超えるendScn値を指定すると、LogMinerは最も新しい変更を含むREDOログ・ファイルの最大のendScn値を使用します。(各REDOログ・ファイルに含まれるSCN値の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAMELOW_SCNおよびNEXT_SCN列を問い合せることができます。)

startTime

指定したstartTime以上のタイムスタンプを持つREDOレコードのみを戻すようにLogMinerに指示します。指定したstartTime値を含むREDOログ・ファイルがない場合、このプロシージャは失敗します。(各REDOログ・ファイルの対象となる時間の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAMELOW_TIMEおよびHIGH_TIME列を問い合せることができます。)

startScnが指定されている場合、このパラメータは無視されます。詳細は、「使用上のノート」を参照してください。

endTime

指定したendTime以下のタイムスタンプを持つREDOレコードのみを戻すようにLogMinerに指示します。すべてのREDOログ・ファイルの値を超えるendTime値を指定すると、LogMinerは最も新しい変更を含むREDOログ・ファイルの最大のendTime値を使用します。(各REDOログ・ファイルの対象となる時間の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAMELOW_TIMEおよびHIGH_TIME列を問い合せることができます。)

endScnが指定されている場合、このパラメータは無視されます。詳細は、「使用上のノート」を参照してください。

DictFileName

LogMinerディクショナリを格納するフラット・ファイルを指定します。V$LOGMNR_CONTENTSSQL_REDO列およびSQL_UNDO列の再構築、およびSEG_NAMESEG_OWNERSEG_TYPE_NAMETABLE_NAMEおよびTABLE_SPACEの各列の変換にも使用されます。LogMinerディクショナリ・ファイルの完全修飾パス名は指定する必要があります。(このファイルはDBMS_LOGMNR_D.BUILDプロシージャによってすでに作成されている必要があります。)

DICT_FROM_REDO_LOGSまたはDICT_FROM_ONLINE_CATALOGのいずれも指定していない場合のみ、このパラメータを指定する必要があります。

options

表103-2を参照してください。

例外

表103-16 START_LOGMNRプロシージャの例外

例外 説明

ORA-01280

内部エラーが発生しました。

ORA-01281

startScnまたはendScnパラメータの値が有効なSCNではないか、endScnstartScnより小さくなっています。

ORA-01282

startTimeパラメータの値がendTimeパラメータに指定された値より大きいか、startTimeおよびendTimeパラメータで指定された日付範囲と互換性のあるREDOログ・ファイルがありません。

ORA-01283

指定したオプションは無効です。

ORA-01284

DictFileNameパラメータに指定されたLogMinerディクショナリ・ファイルの完全パス長が256文字より長く、ファイルをオープンできません。

ORA-01285

指定したファイルの読取り中にエラーが発生しました。

ORA-01291

ユーザーが要求したSCNまたは時間範囲を満たすために必要なREDOログ・ファイルがありません。

ORA-01292

現行のLogMinerセッションにログ・ファイルが指定されていません。

ORA-01293

指定したLogMinerオプションには、マウントされたデータベースが必要です。

ORA-01294

指定したディクショナリ・ファイルで情報を処理中にエラーが発生しました。破損の可能性があります。

ORA-01295

指定したLogMinerディクショナリが、分析対象のログ・ファイルを生成したデータベースに対応していません。

ORA-01296

指定したLogMinerディクショナリとログ・ファイルで文字セットが一致しません。

ORA-01297

LogMinerディクショナリとログ・ファイルでREDOバージョンが一致しません。

ORA-01299

指定したLogMinerディクショナリは別のデータベース・インカネーションに対応しています。

ORA-01300

指定したLogMinerオプションには、書込み可能なデータベースが必要です。

使用上のノート

ノート:

dbms_logmnr.start_logmnrパッケージのcontinuous_mineオプションは、Oracle Database19c (19.1)ではサポートが終了されていて使用できなくなっています。
  • PDB接続からのDBMS_LOGMNR.ADD_LOGFILEコールは、アドホック・ユーザーに対してはサポートされておらず、エラー65040が戻されます。

  • ユーザーは、SCN範囲または時間範囲を指定できます。必要なログ・ファイルは、プログラムによって追加されます。

  • フラット・ファイル・ディクショナリのダンプおよびフラット・ファイル・ディクショナリを使用したマイニングは、PDB接続からはサポートされていません。

  • LogMinerでは、以前にREDOログ・ファイルまたはフラット・ファイルに抽出されたディクショナリを使用でき、または、LogMinerがソース・システムからデータを調査している場合、LogMinerにオンライン・カタログを使用するように指定できます。

  • START_LOGMNRプロシージャを実行すると、次のビューに問い合せできるようになります。

    • V$LOGMNR_CONTENTS - REDOログ・ファイルの情報の履歴を含みます。

    • V$LOGMNR_DICTIONARY - フラット・ファイルに抽出されたLogMinerディクショナリ・ファイルに関する現在の情報を含みます。

    • V$LOGMNR_PARAMETERS - LogMinerセッションに関する情報を含みます。

    (LogMinerが調査するファイルのリストにREDOログ・ファイル・リストを追加すると、V$LOGMNR_LOGSビューに問い合せできるようになります。)

  • パラメータとオプションはDBMS_LOGMNR.START_LOGMNRのコール間で維持されません。DBMS_LOGMNR.START_LOGMNRをコールするたびに、目的のすべてのパラメータとオプション(SCNおよび時間範囲を含む)を指定する必要があります。

  • タイムスタンプを使用すると、REDOログ・ファイルを正確に指定できないので注意してください。

  • 開始時間および終了時間、またはSCNの範囲に関して次のことに注意してください。

    • startTimeパラメータ、startScnパラメータのいずれも指定しない場合、LogMinerは、startScnパラメータが最も古い変更を含むREDOログ・ファイルの最小のSCN値を使用するように設定します。

    • 時間とSCN値の両方を指定した場合、LogMinerではSCN値が使用され、時間値は無視されます。

    • 開始時間および終了時間、またはSCN値を指定して、それらがLogMiner REDOログ・ファイル・リストに見つかった場合、LogMinerではそれらの値によって指示されたログが調査されます。

    • LogMiner REDOログ・ファイル・リストに存在しない開始時間および終了時間またはSCN値を指定して、DBMS_LOGMNR.START_LOGMNRを指定し、さらに、

      • startTimeまたはstartScn値に0を指定した場合、startScnとして、LogMiner REDOログ・ファイル・リストの最小のSCNが使用されます。

      • startTimeまたはstartScn値が0(ゼロ)以外の場合、エラーが戻されます。

      • endTimeまたはendScn値に0(ゼロ)または0(ゼロ)以外の数を指定した場合、endScnとして、LogMiner REDOログ・ファイル・リストの最大のSCNが使用されます。

    • 指定した開始時間および終了時間またはSCN値がLogMiner REDOログ・ファイル・リストに見つからず、DBMS_LOGMNR.START_LOGMNRを指定して、さらに、

      • startTimeまたはstartScn値に0(ゼロ)を指定した場合、エラーが戻されます。

      • startTimeまたはstartScn値がデータベースのアーカイブREDOログ・ファイルの値より大きい場合、LogMinerはオンラインREDOログ・ファイルの調査を開始します。LogMinerはV$LOGMNR_CONTENTSビューから複数の行を戻す前に、要求された開始ポイント以降の変更を見つけるまで、オンラインREDOログ・ファイルの処理を続行します。

      • endTimeまたはendScnパラメータの値が将来の時間やSCNを示す場合、LogMinerは調査の際にオンラインREDOログ・ファイルも対象にします。V$LOGMNR_CONTENTSビューに問い合せると、データベースが変更されたときに、このビューから複数の行が戻され、LogMinerが、要求された終了ポイントを超える位置での変更と確認するまで停止しません。

      • endTimeまたはendScnパラメータの値が0(ゼロ)場合、調査の際にオンラインREDOログ・ファイルも対象にします。V$LOGMNR_CONTENTSビューに問い合せると、データベースが変更されたときに、このビューから複数の行が戻され、CTL+Cを押すかPL/SQLカーソルを終了するまで停止しません。