Email: [email protected] 7 x 24 online support!
Oracle RMAN: すべてのオンラインREDOログファイルが壊れてしまった場合のリカバリ方法(
詩檀ソフトはDULに基づき、PRM-DULを開發した。DULすべての機能も含めた上で、グラフィックインタフェースとDataBridge(データがDBLINKのように直に目標データベースに伝送できる。)などの機能も追加した。そして、PRM-DULはJavaで編成したので、あらゆるプラットフォームに適応できる。
PRM-DULの無料バーションダウンロード:
PRM-DULの無料バーションは一つのテーブルがデフォルトで一万行しか抽出できない。目標データベースがかなり小さいの場合に、無料PRM-DULを使ってください。データベースが一万行を超えて、データの重要性も高い場合に、企業バーションを使ってください。企業バーションPRM-DULは一つのデータベースに対して、Licenseソフトウェア使用許可書を提供する。一つのLicense は$ 999 USD 。そして、PRM-DULは一部無料なLicenseを提供している。
もし、壊滅したデータベースがDULを使ったら、まだリカバリできない場合に、リカバリサポートサビースを考えてください:
詩檀ソフトはいまあらゆるOracleデータベースのトラブルに対応できて、主には:データベースが起動できない、誤操作でテーブルがDROPされた、TRUNCATE、DELETE,ASM DiskgroupがMOUNTできないなど。
[Problem]
カレントを含むオンラインREDOログファイルがすべて壊れてしまいました。
制御ファイル、データファイルは壊れていません。
RMANでバックアップを取得しています。
カタログを使用しています。アーカイブログモードで運用しています。
RMANによる復旧方法について教えてください。
[To reproduce]
カレントを含むオンラインREDOログファイルが壊れた場合、このようなエラーが
発生します。
SVRMGR> alter system switch logfile;
ORA-03113: end-of-file on communication channel
Alertファイル:
Thu Nov 30 17:46:50 2000
Errors in file /export/home/rman/ora816c/admin/tar816c/bdump/tar816c_lgwr_1880.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/export/home/rman/ora816c/oradata/tar816c/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Thu Nov 30 17:46:50 2000
LGWR: terminating instance due to error 313
Instance terminated by LGWR, pid = 1880
ログのswitchなどが不可能になるため、LGWRが異常終了し、インスタンスがダウンします。
[Action]
以下は、データベースのオンラインREDOログファイル(カレントを含む)が
壊れてしまった場合の対処方法です。
制御ファイル、データファイル、アーカイブ済みのログファイルは壊れていないこと
が前提となっています。ご注意下さい。
1. もしデータベースが稼働中であるのであれば、データベースをshutdownします。
オンラインREDOログファイルが壊れているので、shutdown normalはできません。
shutdown abortをします。
2. データベースをmount状態にします。
SVRMGR> startup mount
3. RMANを起動しターゲットデータベースとカタログデータベースに
接続します。
% rman target system/manager@target catalog rman/rman@catalog
4. アーカイブログファイルの状況を確認し、適用できるアーカイブログファイルの
ログ順序番号を確認します。
Alertファイル:
Thu Nov 30 17:37:30 2000
Thread 1 advanced to log sequence 15
Current log# 2 seq# 15 mem# 0: /export/home/rman/ora816c/oradata/tar816c/redo02.log
Thu Nov 30 17:37:30 2000
ARC0: Beginning to archive log# 1 seq# 14
ARC0: Completed archiving log# 1 seq# 14
Thu Nov 30 17:46:50 2000
Errors in file ....
エラーになる直前でアーカイブしている部分を探しましょう。
上記の記述より、ログ順序番号 14番まではアーカイブできていることがわかります。
(カレントのログ順序番号は 15番)
同様の情報は、インスタンスがmount状態であれば、SVRMGRからでも確認できます。
SVRMGR> archive log list
データベース・ログ・モード :アーカイブ・モード
自動アーカイブ 使用可能
アーカイブ先 /export/home/rman/ora816c/arch
一番古いオンラインログ順序番号 14
次にアーカイブするログ順序番号 15
現行のログ順序番号 15
5. RMANでリストアリカバリを行います。
ログ順序番号 14番まではアーカイブできていることがわかりましたので、
ログ順序番号 14 までを適用し openします。
不完全回復となりますので、全データファイルをリストアする必要があります。
実行コマンド:
RMAN> run {
2> allocate channel ch1 type disk;
3> set until logseq 15 thread 1; ==> チェック(1)
4> restore database;
5> recover database;
6> sql 'alter database open resetlogs'; ==> チェック(2)
7> }
チェック項目:
(1) どの時点までリカバリをするかということを指定しています。
set until logseq 15 thread 1;
とすると、ログ順序番号 14番までを適用します。
注意してください。
(2) 不完全回復を行っているので、open時には、resetlogsオプションが必須です。
実行ログの一部:
RMAN-03022: コンパイル・コマンド: recover
RMAN-03022: コンパイル・コマンド: recover(1)
RMAN-03022: コンパイル・コマンド: recover(2)
RMAN-03022: コンパイル・コマンド: recover(3)
RMAN-03023: 実行コマンド: recover(3)
RMAN-08054: メディアのリカバリを開始します。
RMAN-03022: コンパイル・コマンド: recover(4)
RMAN-06050: アーカイブログ・スレッド 1、順序 11は、ファイル /export/home/rman/or
a816c/arch/arch_1_11.arcとしてディスクにあります。
RMAN-06050: アーカイブログ・スレッド 1、順序 12は、ファイル /export/home/rman/or
a816c/arch/arch_1_12.arcとしてディスクにあります。
RMAN-06050: アーカイブログ・スレッド 1、順序 13は、ファイル /export/home/rman/or
a816c/arch/arch_1_13.arcとしてディスクにあります。
RMAN-06050: アーカイブログ・スレッド 1、順序 14は、ファイル /export/home/rman/or
a816c/arch/arch_1_14.arcとしてディスクにあります。
RMAN-03023: 実行コマンド: recover(4)
RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_11.arc
スレッド=1 順序=11
RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_12.arc
スレッド=1 順序=12
RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_13.arc
スレッド=1 順序=13
RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_14.arc
スレッド=1 順序=14
RMAN-08055: メディアのリカバリが完了しました。
==> 壊れてしまったオンラインREDOログファイル(順序番号 15番)は適用していません。
6. データベースをresetlogsオプションをつけてopenしたため、
リカバリカタログにもそれを通知します。
RMAN> reset database;
7. 今後の障害のために、必ずバックアップを取得してください。
