105 DBMS_LOGMNR_D

LogMinerパッケージの1つであるDBMS_LOGMNR_Dパッケージには、BUILDプロシージャとSET_TABLESPACEプロシージャの2つのサブプログラムが含まれています。

  • BUILDプロシージャは、REDOログ・ファイルまたはフラット・ファイルのいずれかにLogMinerデータ・ディクショナリを抽出します。この情報は、将来的にLogMinerツールを使用してREDOログ・ファイルを分析する場合に備えて保存されます。

  • SET_TABLESPACEプロシージャは、すべてのLogMiner表を代替の表領域に再作成します。

    LogMinerデータ・ディクショナリは、メモリー・データ構造およびデータベース表から構成され、これらは、オブジェクトおよびそれらのバージョンに関する情報を格納して取り出すために使用されます。これは、LogMinerのドキュメント全体でLogMinerディクショナリと呼ばれています。

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

参照:

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

105.1 DBMS_LOGMNR_Dの概要

LogMinerは、REDOデータをユーザーに返す際に、オブジェクトIDをオブジェクト名に変換するためにディクショナリを必要とします。

LogMinerには、ディクショナリ提供方法として次の2つのオプションがあります。

  • オンライン・カタログの使用
  • REDOログ・ファイルへのLogMinerディクショナリの抽出
  • フラット・ファイルへのLogMinerディクショナリの抽出(非CDBの場合のみ)

ノート:

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

REDOログ・ファイルまたはフラット・ファイルのいずれかにLogMinerディクショナリを抽出するには、BUILDプロシージャを使用します。オンライン・カタログをディクショナリのソースとして指定する場合は、LogMinerの起動時にDBMS_LOGMNR.START_LOGMNRパッケージを使用してそのように指定します。

デフォルトのSYSAUX表領域以外の表領域をLogMiner表で使用する場合は、SET_TABLESPACEプロシージャを使用します。

参照:

LogMinerセッションの実行に使用するパッケージ・サブプログラムの詳細は、「DBMS_LOGMNR」を参照してください。

105.2 DBMS_LOGMNR_Dのセキュリティ・モデル

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

105.3 DBMS_LOGMNR_Dサブプログラムの要約

次の表では、DBMS_LOGMNR_Dのサブプログラムをリストし、簡単に説明します。

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

表105-1 DBMS_LOGMNR_Dパッケージのサブプログラム

サブプログラム 説明

BUILDプロシージャ

LogMinerディクショナリをフラット・ファイルまたは1つ以上のREDOログ・ファイルに抽出します。

SET_TABLESPACEプロシージャ

すべてのLogMiner表を代替の表領域に再作成します。

105.3.1 BUILDプロシージャ

このプロシージャは、LogMinerデータ・ディクショナリをREDOログ・ファイルに抽出します。

次の注意事項がマルチテナント・コンテナ・データベース(CDB)環境に適用されます。

  • CDB環境でREDOログ・ファイルに抽出する場合は、ルート・データベースからBUILDプロシージャをコールする必要があります。CDB全体のLogMinerデータ・ディクショナリが、REDOログ・ファイルに抽出されます。

  • このプロシージャの実行中は、CDBにPDBを追加したり、CDBからPDBを削除することはできません。

ノート:

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

構文

DBMS_LOGMNR_D.BUILD (
     dictionary_filename  IN  VARCHAR2,
     dictionary_location  IN  VARCHAR2,
     options              IN  NUMBER);

パラメータ

表105-2 BUILDプロシージャのパラメータ

パラメータ 説明

dictionary_filename

LogMinerディクショナリ・ファイルの名前を指定します。

dictionary_location

LogMinerディクショナリ・ファイルのディレクトリ・オブジェクトを指定します。

options

LogMinerディクショナリがREDOログ・ファイルに書き込まれることを指定します(STORE_IN_REDO_LOGS)。

例外

表105-3 BUILDプロシージャの例外

例外 説明

ORA-01302

ディクショナリ作成オプションが欠落しているか、または正しくありません。

このエラーは次の状況で戻されます。

  • OPTIONSパラメータの値がサポートされる値(STORE_IN_REDO_LOGS)のいずれかでないか、または指定されていない場合

  • STORE_IN_REDO_LOGSオプションが指定されておらず、dictionary_filenameパラメータもdictionary_locationパラメータも指定されていない場合。

  • STORE_IN_REDO_LOGSオプションが指定されており、dictionary_filenameまたはdictionary_locationパラメータのいずれかが指定されている場合

ORA-01308

初期化パラメータUTL_FILE_DIRが設定されていません。

ノート:

以前のリリースでは、UTL_FILE_DIR初期化パラメータを使用してディレクトリ位置を指定していました。ただし、Oracle Database 18cからは、UTL_FILE_DIR初期化パラメータはサポート対象外になりました。これは下位互換性のために引き続きサポートされていますが、かわりにディレクトリ・オブジェクトを使用することをお薦めします。

ORA-01336

指定されたディクショナリ・ファイルがオープンできません。

ディクショナリ・ファイルが読取り専用の場合、このエラーが戻されます。

ORA-01308

ディクショナリ・ディレクトリが設定されていません。

このエラーは次の状況で戻されます。
  • dictionary_locationに指定された値がディレクトリ・オブジェクトではありません。
  • dictionary_locationに指定された値が、アクセスできないファイル・パスが定義されたディレクトリ・オブジェクトです。

使用上のノート

  • REDOログ・ファイルにLogMinerディクショナリを抽出するには、STORE_IN_REDO_LOGSオプションのみを指定します。LogMinerディクショナリのサイズによっては、ディクショナリが複数のREDOログ・ファイルに格納される場合があります。

    使用するパラメータの組合せにより次のような動作が発生します。

    • いずれのパラメータも指定しない場合、エラーが戻されます。

    • ファイル名および場所を指定せず、STORE_IN_REDO_LOGSオプションを指定した場合、LogMinerディクショナリはREDOログ・ファイルに抽出されます。

    • ファイル名および場所を指定してSTORE_IN_REDO_LOGSオプションを指定した場合は、エラーが戻されます。

  • 原則的には、LogMinerディクショナリ・ファイルは、すべてのデータベース・ディクショナリに対する変更を行った後、分析するREDOログ・ファイルを作成する前に作成されます。LogMinerを使用してLogMinerディクショナリをREDOログ・ファイルにダンプし、DDL操作を実行し、DDLの変更をLogMinerディクショナリに動的に適用できます。

  • DBMS_LOGMNR_D.BUILDプロシージャを実行する場合は、データベースがオープンされている必要があります。

  • LogMinerディクショナリ・ファイルをREDOログ・ファイルに抽出するには、次の条件を満たしている必要があります。

    • 使用可能なREDOログ・ファイルを生成するために、アーカイブログ・モードが有効化されている。

    • 初期化パラメータ・ファイルのCOMPATIBLEパラメータに9.2.0以上が設定されている。

    • LogMinerが接続しているデータベースがOracle9i以上である。

    さらに、LogMinerが提供するすべての機能を利用できるようにするには、サプリメンタル・ロギング(最低レベル以上)を有効にする必要があります。

例: REDOログ・ファイルへのLogMinerディクショナリの抽出

次の例では、REDOログ・ファイルにLogMiner ディクショナリを抽出します。

SQL> EXECUTE dbms_logmnr_d.build( -
     options => dbms_logmnr_d.store_in_redo_logs);

105.3.2 SET_TABLESPACEプロシージャ

このプロシージャは、LogMiner表をデフォルトのSYSAUX表領域から代替表領域に移動します。

デフォルトでは、すべてのLogMiner表は、SYSAUX表領域を使用するように作成されます。ただし、LogMiner表で代替の表領域を使用できるようにすることをお薦めします。このプロシージャを使用して、LogMiner表をこの代替表領域に移動します。

CDBでは、ローカル・コンテナ内のLogMinerメタデータのみが、要求された表領域に移動します。

構文

DBMS_LOGMNR_D.SET_TABLESPACE (
     new_tablespace        IN VARCHAR2);

パラメータ

表105-4 SET_TABLESPACEのパラメータ

パラメータ 説明

new_tablespace

すでに存在している表領域を示す文字列。この表領域を使用するようにすべてのLogMiner表を移動する場合は、このパラメータを指定します。

使用上のノート

  • 初期のバージョンのOracle Databaseからアップグレードした場合、SYSTEM表領域にLogMiner表が存在することがあります。初期のバージョンのOracle Databaseにダウングレードしないことが確実である場合は、SET_TABLESPACEプロシージャを使用して、表をSYSAUX表領域に移動することをお薦めします。

  • このルーチンのユーザーは、既存の表領域を指定する必要があります。

例: DBMS_LOGMNR_D.SET_TABLESPACEプロシージャの使用方法

次の例では、代替表領域の作成およびDBMS_LOGMNR_D.SET_TABLESPACEプロシージャの実行を示します。

SQL> CREATE TABLESPACE  logmnrts$ datafile '/usr/oracle/dbs/logmnrts.f'
     SIZE 25 M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

SQL> EXECUTE dbms_logmnr_d.set_tablespace('logmnrts$');