96 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ユーティリティ』を参照してください。

96.1 DBMS_LOGMNR_Dの概要

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

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

  • オンライン・カタログの使用

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

  • フラット・ファイルへのLogMinerディクショナリの抽出

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

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

参照:

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

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

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

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

この表では、DBMS_LOGMNR_Dパッケージのサブプログラムをリストし、簡単に説明します。

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

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

サブプログラム 説明

BUILDプロシージャ

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

SET_TABLESPACEプロシージャ

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

96.3.1 BUILDプロシージャ

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

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

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

  • CDB環境でフラット・ファイルに抽出する場合、一度にマイニングできるプラガブル・データベース(PDB)は1つのみです。まず、その特定のPDBからBUILDプロシージャを実行して、そのPDBのフラット・ファイル・ディクショナリを明示的に作成する必要があります。BUILDプロシージャが実行される各PDBのLogMinerデータ・ディクショナリがフラット・ファイルに抽出されます。

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

構文

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

パラメータ

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

パラメータ 説明

dictionary_filename

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

dictionary_location

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

options

フラット・ファイル(STORE_IN_FLAT_FILE)またはREDOログ・ファイル(STORE_IN_REDO_LOGS)のいずれかにLogMinerディクショナリを書き込むように指定します。

例外

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

例外 説明

ORA-01302

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

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

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

  • 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 12c リリース2 (12.2.0.1)からは、UTL_FILE_DIR初期化パラメータが非推奨になりました。これは下位互換性のために引き続きサポートされていますが、かわりにディレクトリ・オブジェクトを使用することをお薦めします。

ORA-01336

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

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

  • ディクショナリ・ファイルが読取り専用の場合。

ORA-01308

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

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

    .

使用上の注意

  • フラット・ファイルにLogMinerディクショナリを抽出するには、ファイル名および場所を指定する必要があります。場所は、データベース・ディレクトリ・オブジェクトとして指定する必要があります。(『Oracle Database SQL言語リファレンス』のCREATE DIRECTORYに関する項を参照してください。)

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

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

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

    • オプションを指定せずにファイル名および場所を指定した場合、LogMinerディクショナリはその名前でフラット・ファイルに抽出されます。

    • ファイル名および場所を指定し、STORE_IN_FLAT_FILEオプションも指定した場合、LogMinerディクショナリは指定した名前でフラット・ファイルに抽出されます。

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

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

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

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

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

  • フラット・ファイルにLogMinerディクショナリを抽出する場合、プロシージャが現行のデータベースのディクショナリ表に問い合せ、表のコンテンツを含むテキストベースのファイルを作成します。LogMinerディクショナリをフラット・ファイルに抽出するには、次の条件を満たしている必要があります。

    • PL/SQLプロシージャで使用するためのディレクトリを指定する必要があります。これにはまず、ディクショナリ・ファイルが生成される場所を示すパス名を指定して、Oracleディレクトリ・オブジェクトを作成します。次に例を示します。

      create directory my_dictionary_dir as '/oracle/dictionary';

    DBMS_LOGMNR.START_LOGMNRプロシージャに対するDDL_DICT_TRACKINGオプションは、Oracle9i以前に作成されたフラット・ファイル・ディクショナリではサポートされないので注意してください。Oracle9i以前のフラット・ファイルに抽出されたLogMinerデータベースでDDL_DICT_TRACKINGオプションの使用を試みると、ORA-01330エラー(必須のビルド表のロードで問題が発生しました。)が戻されます。

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

    • Oracle9i以降を実行しているシステム上でDBMS_LOGMNR_D.BUILDプロシージャが実行されている。

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

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

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

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

例1: フラット・ファイルへのLogMinerディクショナリの抽出

次の例では、指定したパス(/oracle/database)にあるdictionary.oraという名前のフラット・ファイルにLogMinerディクショナリ・ファイルを抽出します。

SQL> create directory my_dictionary_dir as '/oracle/database';
SQL> EXECUTE dbms_logmnr_d.build(dictionary_location=>my_dictionary_dir, - 
                                 dictionary_filename=>'dictionary.ora', -
                                options => dbms_logmnr_d.store_in_flat_file);

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

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

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

96.3.2 SET_TABLESPACEプロシージャ

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

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

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

構文

DBMS_LOGMNR_D.SET_TABLESPACE (
     new_tablespace        IN VARCHAR2);

パラメータ

表96-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$');