101 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ユーティリティ』を参照してください。
101.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」を参照してください。
101.3 DBMS_LOGMNR_Dサブプログラムの要約
この表では、DBMS_LOGMNR_Dパッケージのサブプログラムをリストし、簡単に説明します。
マルチテナント・コンテナ・データベース(CDB)では、一部のサブプログラムはルートからコールする必要があります。それ以外にも、違いがある可能性があります。詳細は、個々のサブプログラムの説明を参照してください。
表101-1 DBMS_LOGMNR_Dパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
LogMinerディクショナリをフラット・ファイルまたは1つ以上のREDOログ・ファイルに抽出します。 |
|
すべてのLogMiner表を代替の表領域に再作成します。 |
101.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);
パラメータ
表101-2 BUILDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
LogMinerディクショナリ・ファイルの名前を指定します。 |
|
LogMinerディクショナリ・ファイルのディレクトリ・オブジェクトを指定します。 |
|
フラット・ファイル( |
例外
表101-3 BUILDプロシージャの例外
例外 | 説明 |
---|---|
|
ディクショナリ作成オプションが欠落しているか、または正しくありません。 このエラーは次の状況で戻されます。
|
|
初期化パラメータ
UTL_FILE_DIR が設定されていません。
ノート: 以前のリリースでは、UTL_FILE_DIR 初期化パラメータを使用してディレクトリ位置を指定していました。ただし、Oracle Database 18cからは、UTL_FILE_DIR 初期化パラメータはサポート対象外になりました。これは下位互換性のために引き続きサポートされていますが、かわりにディレクトリ・オブジェクトを使用することをお薦めします。
|
|
指定されたディクショナリ・ファイルがオープンできません。 このエラーは次の状況で戻されます。
|
ORA-01308 |
ディクショナリ・ディレクトリが設定されていません。 このエラーは次の状況で戻されます。
|
使用上のノート
-
フラット・ファイルに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);
101.3.2 SET_TABLESPACEプロシージャ
このプロシージャは、LogMiner表をデフォルトのSYSAUX
表領域から代替表領域に移動します。
デフォルトでは、すべてのLogMiner表は、SYSAUX
表領域を使用するように作成されます。ただし、LogMiner表で代替の表領域を使用できるようにすることをお薦めします。このプロシージャを使用して、LogMiner表をこの代替表領域に移動します。
CDBでは、ローカル・コンテナ内のLogMinerメタデータのみが、要求された表領域に移動します。
構文
DBMS_LOGMNR_D.SET_TABLESPACE ( new_tablespace IN VARCHAR2);
パラメータ
表101-4 SET_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$');