プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

91 DBMS_LOGMNR_D

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


関連項目:

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

この章では、次の項目について説明します。

DBMS_LOGMNR_Dの使用方法

この項では、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」を参照してください。

セキュリティ・モデル

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

DBMS_LOGMNR_Dサブプログラムの要約

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

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

サブプログラム 説明

BUILDプロシージャ


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

SET_TABLESPACEプロシージャ


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


BUILDプロシージャ

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

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

このプロシージャの実行中は、CDBにプラガブル・データベース(PDB)を追加したり、CDBからプラガブル・データベース(PDB)を削除することはできません。

構文

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

パラメータ

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

パラメータ 説明

dictionary_filename

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

dictionary_location

LogMinerディクショナリ・ファイル・ディレクトリのパスを指定します。

options

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


例外

表91-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が設定されていません。

ora-01336

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

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

  • dictionary_locationに指定された値が存在しない場合。

  • UTL_FILE_DIR初期化パラメータにdictionary_locationへのアクセス権限が設定されていない場合。

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


使用上の注意

  • フラット・ファイルにLogMinerディクショナリを抽出するには、ファイル名および場所を指定する必要があります。

    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ディクショナリに動的に適用できます。

  • 進行中のDDL操作がある場合は、DBMS_LOGMNR_D.BUILDプロシージャを実行しないでください。

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

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

    • PL/SQLプロシージャで使用するためのディレクトリを指定する必要があります。この処理を行うには、初期化パラメータ・ファイルに初期化パラメータUTL_FILE_DIRを設定します。次に例を示します。

      UTL_FILE_DIR = /oracle/dictionary
      

      パラメータを設定した後、このパラメータを有効にするには、データベースをシャットダウンして再起動する必要があります。このパラメータを設定しない場合、プロシージャは失敗します。

    • 作成されたディクショナリを実行している間、DDL操作が発生しないようにする必要があります。こうしないと、LogMinerディクショナリ・ファイルにデータベース・ディクショナリの一貫したスナップショットを格納することができません。

    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が提供するすべての機能を利用できるようにするには、サプリメンタル・ロギング(最低レベル以上)を有効にする必要があります。LogMinerでのサプリメンタル・ロギングの使用方法については、『Oracle Databaseユーティリティ』を参照してください。

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

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

SQL> EXECUTE dbms_logmnr_d.build('dictionary.ora', - 
     '/oracle/database/', -
     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);

SET_TABLESPACEプロシージャ

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

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

構文

DBMS_LOGMNR_D.SET_TABLESPACE (
     new_tablespace        IN VARCHAR2);

パラメータ

表91-4 SET_TABLESPACEパラメータ

パラメータ 説明

new_tablespace

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


使用上の注意

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

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


    関連項目:

    表領域およびその作成方法については、『Oracle Database概要』および『Oracle Database SQL言語リファレンス』を参照してください。

例: 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$');