ログ・マイナーに関する検証 その1
< ログ・マイナーに関する検証 その壱 > ペンネーム だーりん
— ログ・マイナーで”はっぴー”リカバリー —
今回から、Oracle8iからの新機能であるログ・マイナーについて検証する。
ログ・マイナーを使用することで、REDOログ・アーカイブファイルを分析する
ことが可能となり、これにより任意のオブジェクトに対する、任意のトランザ
クションを抽出することができる。
これを使えば、ドロップしてしまったテーブルを、ほかのオブジェクトに影響
を与えることなく直前の状態まで復旧できるではないだろうか!!
・・・というわけで、実際どこまでつかえるか、じっくり検証する。
どうかお付き合い願いたい。
☆★☆★☆★
まず実際にログ・マイナーを用いてREDOログ・アーカイブファイルからリカバ
リ情報を取得して見る。
1.SYS ユーザで以下のスクリプトを実行
$ORACLE_HOME/rdbms/admin/dbmslmd.sql
----------------------------------------- 注: oracle 8.1.7で上記スクリプトを実行する前に、dbmslmd.sqlに以下の修 正をする必要がある。8.1.5、8.1.6では必要ない。 修正前 TYPE col_desc_array IS VARRAY(513) OF col_description; ~~~ 修正後 TYPE col_desc_array IS VARRAY(700) OF col_description; ~~~ -----------------------------------------
2.init パラメータUTL_FILE_DIRを設定し、ディクショナリーを作成
init.oraの編集
UTL_FILE_DIR = /export/home/oracle/dbs/logmnr
プロシージャの実行(SYSユーザ)
※最新のオブジェクト情報を取得する為には、毎回実行する必要がある。
オブジェクトの変更がない場合は不要。
$ sqlplus sys/manager SQL> exec dbms_logmnr_d.build (dictionary_filename=>'oradict.ora' ,dictionary_location=>'../export/home/oracle/dbs/logmnr');
3.REDOログ・ファイル(アーカイブファイル)を登録
SQL> exec dbms_logmnr.add_logfile (options=>dbms_logmnr.new ,logfilename=>'../export/home/oracle/dbs/logmnr/arch1_1.dbf');
4.REDOログ・ファイル(アーカイブファイル)を追加登録
(複数のアーカイブファイルを使用する場合は、すべてのファイルを繰り返し
登録する。)
SQL> exec dbms_logmnr.add_logfile (options=>dbms_logmnr.addfile ,logfilename=>'../export/home/oracle/dbs/logmnr/arch1_2.dbf');
5.ログ・マイナーを実行
SQL> exec dbms_logmnr.start_logmnr (dictfilename=>'../export/home/oracle/dbs/logmnr/oradict.ora');
以上で、ログ・マイナーの実行は終了した。
この結果は、v$logmnr_contents表にINSERTされている。
このとき、セッションが終了すると、v$logmnr_contents表のデータがすべて
消去されるので、注意すること。
内容の解析を行う前に、”CREATE TABLE TEMP_TBL AS SELECT …”などで、コ
ピーしておくことをお勧めする。
次回からは、実際にv$logmnr_contents表を解析してみる。
以上、テニス男女対抗ダブルス戦に燃えるだーりん@茅ヶ崎