LogMinerパッケージの1つであるDBMS_LOGMNR
パッケージには、LogMinerツールを初期化し、LogMinerセッションを開始および終了するために使用するサブプログラムが格納されています。
関連項目: LogMinerの詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
ビュー
使用上の注意
この項では、DBMS_LOGMNR
パッケージの使用に関連する項目について説明します。
Oracle Databaseの一部であるOracle LogMinerを使用すると、SQLインタフェースを介してオンラインおよびアーカイブのREDOログ・ファイルを問い合せることができます。DBMS_LOGMNR
パッケージは、LogMinerを開始および停止し、対象となるREDOログ・ファイルを指定するための大部分のツールを提供します。
ユーザー・データまたはデータベース・ディクショナリに対して行われたすべての変更は、データベースのリカバリ操作を実行できるように、Oracle REDOログ・ファイルに記録されます。REDOログ・ファイルに記録されたデータを使用して、次のタスクも実行できます。
データベースに対する論理的な破損(アプリケーション・レベルでのエラーなど)が発生した時間の検出。
トランザクション・レベルのファイングレイン・リカバリを実行するために必要なアクションの決定。
傾向分析によるチューニングおよび容量計画の実行。
データベースで実行したすべてのデータ操作言語(DML)文およびデータ定義言語(DDL)文、これらを実行した順序、および実行したユーザーの追跡。
DBMS_LOGMNR
パッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_LOGMNR.NEW
など)。
表90-1に、DBMS_LOGMNR
パッケージのADD_LOGFILE
オプション
・フラグの定数を示します。
表90-1 ADD_LOGFILEオプション・フラグの定数
定数 | 説明 |
---|---|
|
|
|
指定のREDOログ・ファイルを分析対象のREDOログ・ファイルのリストに追加します。重複するファイルを追加しようとすると、例外( |
表90-2に、DBMS_LOGMNR
パッケージのSTART_LOGMNR
オプション・フラグの定数を示します。
表90-2 START_LOGMNRオプション・フラグの定数
定数 | 説明 |
---|---|
|
このオプションを設定すると、コミットされたトランザクションに対応するDML文が戻されます。コミットされたトランザクションに対応するDML文は、グループ化されます。トランザクションは、コミットされた順序で戻されます。ロールバックまたは処理中のトランザクションは、内部REDOレコード(索引操作、管理などに関連するもの)であるため、除外されます。 このオプションを設定しない場合、すべてのトランザクション(コミット、ロールバック、処理中)の行がREDOログで見つかった順序(SCN値の順序)で戻されます。 |
|
|
|
使用中のLogMinerディクショナリがフラット・ファイルであるか、REDOログに格納されている場合、LogMinerは、DDLイベントが発生すると内部ディクショナリを更新します。これにより、LogMinerの内部ディクショナリが作成された後に変更されたオブジェクトに対し、 このオプションは、 |
|
フラット・ファイルまたは分析対象のREDOログ・ファイルに含まれたLogMinerディクショナリではなく、現行のオンライン・データベース・ディクショナリを使用するようにLogMinerに指示します。 このオプションは、 データベースの表定義がREDOログ・ファイルの表定義と一致しない場合、 |
|
このオプションを設定すると、LogMinerは指定したREDOログ・ファイルにLogMinerディクショナリが見つかるものと予想します。REDOログ・ファイルは、 |
|
このオプションを設定すると、再構築されたSQL文の終わりにSQLデリミタ(セミコロン)が付加されません。これは、カーソルをオープンしてから、再構築された文を実行するアプリケーションに役立ちます。 |
|
このオプションを設定すると、再構築されたSQL文に このオプションを使用する場合、ソース・データベースで、サプリメンタル・ロギングが適切なレベルで有効で、対象となる表に重複した行が存在しないことを確認する必要があります。LogMinerには論理行識別子の一意性に関する保証がありません。 |
|
このオプションを設定すると、LogMinerは再構築されたSQL文を読み易いようにフォーマットします。これらの再構築されたSQL文は実行できません。 |
|
対象となるデータを見つけるために、必要に応じて、REDOログ・ファイルを自動的に追加するように、LogMinerに指示します。LogMinerにログの調査を開始する場所を指示するには、調査を開始する最初のログか開始SCNまたは日付のみ指定してください。明示的にREDOログ・ファイルを指定する必要はありません。LogMinerは自動的に(アーカイブおよびオンライン) REDOログ・ファイルを追加し、対象となるデータを調査します。このオプションでは、REDOログ・ファイルを生成している同じデータベース・インスタンスにLogMinerを接続する必要があります。また、データベースがマウントされていて、アーカイブが使用可能である必要があります。 Oracle Database リリース10.1以降は、Oracle Real Application Clusters(Oracle RAC)環境での |
|
設定する場合、SQL_REDOおよびSQL_UNDOは、数値、日時および時間隔の列のタイプにリテラルを使用します。 |
複数のオプションを指定するには、オプション間にプラス記号(+)を使用します。次に例を示します。
EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => - DBMS_LOGMNR.DDL_DICT_TRACKING + DBMS_LOGMNR.DICT_FROM_REDO_LOGS);
マルチテナント・コンテナ・データベース(CDB)では、一部のサブプログラムはルートからコールする必要があります。それ以外にも、違いがある可能性があります。詳細は、個々のサブプログラムの説明を参照してください。
表90-3 DBMS_LOGMNRパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
REDOログ・ファイルを既存または新規作成したLogMinerの処理対象のREDOログ・ファイルのリストに追加します。これによって、新しいリストの作成時に、LogMinerセッションの開始位置がマークされます。 |
|
このファンクションに対する |
|
LogMinerセッションを終了します。 |
|
このファンクションに対する |
|
LogMinerの処理対象のREDOログ・ファイルのリストからREDOログ・ファイルを削除します。 |
|
LogMinerユーティリティを初期化し、LogMinerを起動します( |
このプロシージャは、ファイルを既存または新規作成したLogMinerの処理対象のログ・ファイルのリストに追加します。
CDBでは、ADD_LOGFILE
プロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING
管理者権限が必要です。
パラメータ
表90-4 ADD_LOGFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このセッションで分析対象のREDOログ・ファイルのリストに追加するREDOログ・ファイルの名前を指定します。 |
|
次のいずれかを実行します。
詳細は、表90-1「ADD_LOGFILEオプション・フラグの定数」を参照してください。 |
使用上の注意
V$LOGMNR_CONTENTS
ビューに問い合せる前に、(現在のLogMinerセッション内で)DBMS_LOGMNR.START_LOGMNR
プロシージャのコールに成功する必要があります。
CONTINUOUS_MINE
オプションを指定しない場合、LogMinerセッションを分析するREDOログ・ファイルのリストで設定する必要があります。ADD_LOGFILE
プロシージャを使用して、分析するREDOログ・ファイルのリストを指定してください。
CONTINUOUS_MINE
オプションを使用せずに、複数のREDOログ・ファイルを分析する場合、REDOログ・ファイルごとに個別にADD_LOGFILE
プロシージャをコールする必要があります。REDOログ・ファイルを特定の順序で登録する必要はありません。
アーカイブとオンラインの両方のREDOログ・ファイルを調査できます。
最初のREDOログ・ファイルをリストに追加したら、リストに追加した各REDOログ・ファイルを、最初のREDOログ・ファイルと同じデータベースおよびデータベースRESETLOGS
SCN
に関連付ける必要があります。(データベースRESETLOGS
SCN
はALTER
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例外が返されます。
このファンクションは、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;
戻り値
表90-7に、COLUMN_PRESENT
ファンクションの戻り値を示します。自己記述型のレコード(最初のパラメータ)が2番目のパラメータで指定した列を含んでいる場合、COLUMN_PRESENT
ファンクションは1を戻します。これは、DBMS_LOGMNR.MINE_VALUE
ファンクションによって戻されたNULL
値の意味を判断する場合に使用できます。
使用上の注意
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
であるため)。
このプロシージャは、LogMinerセッションを終了します。このプロシージャは他の方法で実行できないクリーンアップ操作を実行するため、このプロシージャによりLogMinerセッションを適切に終了する必要があります。このプロシージャは、データベース・セッションからログアウトするか、DBMS_LOGMNR.ADD_LOGFILE
をコールし、NEW
オプションを指定した場合に自動的にコールされます。
このファンクションは、列のデータ値に基づいた問合せを簡単にします。このファンクションでは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;
使用上の注意
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
値を取得した場合、このような文字はデータベース・キャラクタ・セットの置換文字(逆疑問符など)として戻されます。
このプロシージャは、LogMinerが処理する既存のREDOログ・ファイルのリストからREDOログ・ファイルを削除します。
CDBでは、REMOVE_LOGFILE
プロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING
管理者権限が必要です。
使用上の注意
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
プロシージャを使用して、新しいリストを作成します。
このプロシージャは、LogMinerが内部スキーマ・オブジェクト識別子を名前に変換するために使用するディクショナリをロードして、LogMinerを始動します。
CDBでは、START_LOGMNR
プロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING
管理者権限が必要です。
構文
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 );
パラメータ
表90-15 START_LOGMNRプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
指定した |
|
指定した |
|
指定した
|
|
指定した
|
|
LogMinerディクショナリを格納するフラット・ファイルを指定します。
|
|
詳細は、表90-2「START_LOGMNRオプション・フラグの定数」を参照してください。 |
例外
表90-16 START_LOGMNRプロシージャの例外
例外 | 説明 |
---|---|
|
内部エラーが発生しました。 |
|
|
|
|
|
指定したオプションは無効です。 |
|
|
|
指定したファイルの読取り中にエラーが発生しました。 |
|
ユーザーが要求したSCNまたは時間範囲を満たすために必要なREDOログ・ファイルがありません。 |
|
現行のLogMinerセッションにログ・ファイルが指定されていません。 |
|
指定したLogMinerオプションには、マウントされたデータベースが必要です。 |
|
指定したディクショナリ・ファイルで情報を処理中にエラーが発生しました。破損の可能性があります。 |
|
指定したLogMinerディクショナリが、分析対象のログ・ファイルを生成したデータベースに対応していません。 |
|
指定したLogMinerディクショナリとログ・ファイルでキャラクタ・セットが一致しません。 |
|
LogMinerディクショナリとログ・ファイルでREDOバージョンが一致しません。 |
|
指定したLogMinerディクショナリは別のデータベース・インカネーションに対応しています。 |
|
指定したLogMinerオプションには、書込み可能なデータベースが必要です。 |
使用上の注意
LogMinerでは、以前にREDOログ・ファイルまたはフラット・ファイルに抽出されたディクショナリを使用でき、または、LogMinerがソース・システムからデータを調査している場合、LogMinerにオンライン・カタログを使用するように指定できます。LogMinerディクショナリの詳細は、『Oracle Databaseユーティリティ』およびこのマニュアルの第91章「DBMS_LOGMNR_D」を参照してください。
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ログ・ファイルを正確に指定できないので注意してください。
CONTINUOUS_MINE
オプションは、対象となるデータを見つけるために、必要に応じて、REDOログ・ファイルを自動的に追加するように、LogMinerに指示します。LogMinerにログの調査を開始する場所を指示するには、調査を開始する最初のログか開始SCNまたは日付のみ指定してください。CONTINUOUS_MINE
オプションを使用する場合は、次のことに注意してください。
データベース・コントロール・ファイルは、エントリ数が著しく多くなる可能性がある場合でも、限定された数のアーカイブREDOログ・ファイルに関する情報を保持します。V$ARCHIVED_LOGS
ビューに問い合せて、LogMinerによって見つけられるREDOログ・ファイル・エントリを判別できます。
エントリがデータベース・コントロール・ファイル(およびV$ARCHIVED_LOGS
ビュー)にリストされていても、様々な理由でLogMinerによってアーカイブREDOログ・ファイルにアクセスできない場合があります。たとえば、アーカイブREDOログ・ファイルが削除された、その場所から移動された(テープへのバックアップ処理などのため)、またはファイルが存在するディレクトリを使用できないなどの場合があります。
CONTINUOUS_MINE
オプションおよび終了時間または将来発生するSCNを指定した場合(または終了時間やSCNを指定しない場合)、V$LOGMNR_CONTENTS
ビューの問合せは、指定した時間やSCNを超えてREDOログ・ファイルが生成されるまで終了しません。この例では、LogMinerによって、生成されたLogMiner REDOログ・ファイル・リストにアーカイブREDOログ・ファイルが自動的に追加されます。さらに、この例にかぎり、処理されるREDOファイルを50個に維持するため、LogMinerによってリストからREDOログ・ファイルが自動的に削除されます。これによって、LogMinerが自動的にREDOログ・ファイルをリストに追加する際にPGAメモリーを節約します。LogMinerが自動削除を実行しないと、最終的にメモリーが使い果たされてしまう恐れがあります。
LogMinerではオンラインREDOログを調査できます。ただし、CONTINUOUS_MINE
オプションを指定しないと、LogMinerがオンラインREDOログ・ファイルを読み取っている最中にデータベースがオンラインREDOログ・ファイルに書込みを行う可能性があります。LogMinerがオンラインREDOログ・ファイルを読み取っている間にログの切替えが行われると、LogMinerが読み取ろうとしているログがデータベースによって上書きされます。LogMinerが読み取ろうとしているファイルがデータベースによって上書きされた場合に、LogMinerから戻されるデータは予測できません。
開始時間および終了時間、またはSCNの範囲に関して次のことに注意してください。
startTime
パラメータ、startScn
パラメータのいずれも指定しない場合、LogMinerは、startScn
パラメータが最も古い変更を含むREDOログ・ファイルの最小のSCN値を使用するように設定します。
時間とSCN値の両方を指定した場合、LogMinerではSCN値が使用され、時間値は無視されます。
開始時間および終了時間、またはSCN値を指定して、それらがLogMiner REDOログ・ファイル・リストに見つかった場合、LogMinerではそれらの値によって指示されたログが調査されます。
LogMiner REDOログ・ファイル・リストに存在しない開始時間および終了時間、またはSCN値を指定して、CONTINUOUS_MINE
オプションを指定せずに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ログ・ファイル・リストに見つからず、CONTINUOUS_MINE
オプションを指定した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カーソルを終了するまで停止しません。