データリカバリアドバイザを使用したRMANリカバリ方法(ユーザ表領域)
データリカバリアドバイザを使用してリカバリを行うと楽に復旧可能だったのでメモ。
Oracle RACでは対応してないみたい、シングルインスタンスのみ対応。
環境はOracle database 11.2.0.4 SEone。
以下条件で実施している。
1. 高速リカバリ領域の有効化(バックアップセットとアーカイブログを含む)
2. 自動診断レポジトリ(ADR)の有効化
3. 事前にフルバックアップを取得済み
表領域障害からの完全リカバリ
準備
- 確認用データの追加
SQL> insert into rmant values (1,sysdate,'first'); SQL> commit; SQL> alter system switch logfile; SQL> alter system checkpoint; SQL> insert into rmant values (2,sysdate,'onlineredo'); SQL> commit; SQL> select * from rmant; ID INS_TIME TX -- ------------------- ----------- 1 2015/06/24 17:36:41 first ←このデータはアーカイブログ化されている 2 2015/06/24 17:37:59 onlineredo ←このデータはデータファイルに書き込まれていない状態
- 表領域を強制的に壊す
# dd if=/dev/zero of=/opt/app/oracle/oradata/orcl/data/data05.dbf bs=500M count=1
- Oracleに表領域が壊れたことを気づかせてあげる
RMAN> VALIDATE DATABASE; validateが開始されました(開始時間: 2015/06/24 17:38:55) リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=1640 デバイス・タイプ=DISK RMAN-06169: データファイル9のファイル・ヘッダーを読み込めません。エラー理由: 7 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: validateコマンドが06/24/2015 17:38:56で失敗しました RMAN-06056: データファイル9にアクセスできませんでした SQL> alter system checkpoint; alter system checkpoint * 行1でエラーが発生しました。: ORA-03113: 通信チャネルでend-of-fileが検出されました プロセスID: 29124 セッションID: 1136、シリアル番号: 247
データリカバリアドバイザを使用して復旧
- 障害情報確認(list failure)
RMAN> list failure; リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています データベース障害のリスト ========================= 障害ID 優先度ステータス 検出時間 サマリー ------ -------- --------- ------------------- ------- 314 HIGH OPEN 2015/06/24 17:46:37 SYSTEM以外のデータファイルが1つ以上破損しています
データファイルが壊れていることが 表示される。
- 対応方法確認(advise failure)
RMAN> advise failure; データベース障害のリスト ========================= 障害ID 優先度ステータス 検出時間 サマリー ------ -------- --------- ------------------- ------- 314 HIGH OPEN 2015/06/24 17:46:37 SYSTEM以外のデータファイルが1つ以上破損しています 自動修復オプションを分析中です。これには少し時間がかかる場合があります チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=2899 デバイス・タイプ=DISK 自動修復オプションの分析が完了しました 必須の手動アクション ======================== 使用可能な手動アクションがありません オプションの手動アクション ======================= 使用可能な手動アクションがありません 自動修復オプション ======================== オプション 修復 説明 ------ ------------------ 1 データファイル9をリストアおよびリカバリします 計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます 修復スクリプト: /opt/oracle/diag/rdbms/orcl/ORCL/hm/reco_877293002.hm
- 自動作成された修復方法の確認(repair failure preview) これは実行してもしなくてもどちらでも良い。
RMAN> repair failure preview; 計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます 修復スクリプト: /opt/oracle/diag/rdbms/ptdb/PTDB/hm/reco_877293002.hm 修復スクリプトの内容: # restore and recover datafile restore datafile 9; recover datafile 9; sql 'alter database datafile 9 online';
実行する最善の手段をを作成してくれる。
- 修復実施(repair failure)
RMAN> repair failure ; 計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます 修復スクリプト: /opt/oracle/diag/rdbms/orcl/ORCL/hm/reco_877293002.hm 修復スクリプトの内容: # restore and recover datafile restore datafile 9; recover datafile 9; sql 'alter database datafile 9 online'; この修復を実行しますか(YESまたはNOを入力してください)。 YES 修復スクリプトを実行しています restoreが開始されました(開始時間: 2015/06/24 17:51:41) チャネルORA_DISK_1の使用 チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています チャネルORA_DISK_1: データファイル00009を/opt/app/oracle/oradata/orcl/data/data05.dbfにリストアしています チャネルORA_DISK_1: バックアップ・ピース/opt/oracle/fast_recovery_area/ORCL/backupset/2015_06_24/o1_mf_nnndf_TAG20150624T115106_brn6rtp4_.bkpから読取り中です チャネルORA_DISK_1: バックアップ・ピース1がリストアされました チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:27:05 restoreが完了しました(完了時間: 2015/06/24 18:18:46) recoverが開始されました(開始時間: 2015/06/24 18:18:46) チャネルORA_DISK_1の使用 メディア・リカバリを開始しています メディア・リカバリが完了しました。経過時間: 00:00:01 recoverが完了しました(完了時間: 2015/06/24 18:18:47) SQL文: alter database datafile 9 online 障害の修復が完了しました データベースをオープンしますか(YESまたはNOを入力してください)。 YES データベースがオープンしました。
- データの確認 完全リカバリされている。
SQL> select * from rmant; ID INS_TIME TX -- ------------------- ----------- 1 2015/06/24 17:36:41 first 2 2015/06/24 17:37:59 onlineredo
以上で完了となる。
1. list failure;
2. advise failure;
3. repair failure;
単純な障害であればたった3つの処理でリカバリ可能となっている。