Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイトデータファイル障害を復旧する(RMAN編)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Oracle Recovery Manager(RMAN)の「データファイル障害」時のリカバリを行いたいと思います。
今回はSYSTEM表領域に障害を発生させてみます。ユーザ表領域の障害の場合もリカバリ方法は同じです。

利用するバックアップファイルについては、
記事「【RMAN】バックアップ取得(バックアップセット形式)
で取得したファイルです。


【環境】
・データベース:Oracle 12cR1
・グローバル・データベース名:orcl
・プラガブル・データベース名:pdborcl
・データベース・ログ・モード:アーカイブ・モード
・パラメータファイル:サーバ・パラメータ・ファイル(spfile)運用


【関連記事】





疑似障害を発生させる
ddコマンドでSYSTEM表領域を破損させます。
[oracle@dg01 orcl]$ dd if=/dev/zero of=/u01/app/oracle/oradata/orcl/system01.dbf bs=1024k count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.0124374 s, 843 MB/s

SQL*Plusで接続します。
[oracle@dg01 orcl]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 月 3月 31 08:38:00 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options に接続されました。

表領域に関連するディクショナリを検索すると、エラーが発生しました。
SQL> select * from dba_tablespaces; select * from dba_tablespaces * 行1でエラーが発生しました。: ORA-00604: 再帰SQLレベル1でエラーが発生しました。 ORA-01115: ファイル(ブロック番号)からの読取りI/Oエラーが発生しました。 ORA-01110: データフ ァイル1: '/u01/app/oracle/oradata/orcl/system01.dbf' ORA-27072: ファイルI/Oエラーが発生しました。 Additional information: 4 Additional information: 11436

この時点でSYSTEM表領域「system01.dbf」に破損があることが分かります。


データベースを復旧する
(1) データベースを起動する
データベースを起動する前に停止します。

データベースを「immediate」指定で停止しようとしても停止に失敗します。
SQL> shutdown immediate ORA-01122: データベース・ファイル1の照合検査でエラーが発生しました。 ORA-01110: データファイル1: '/u01/app/oracle/oradata/orcl/system01.dbf' ORA-01210: データファイル・ヘッダーにメディア欠陥があります。

そのような場合は「abort」で停止してしまいます。
SQL> shutdown abort ORACLEインスタンスがシャットダウンされました。

データベースの停止に成功しました。

「startup」コマンドを実行します。
SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 1570009088 bytes Fixed Size 2288776 bytes Variable Size 973079416 bytes Database Buffers 587202560 bytes Redo Buffers 7438336 bytes データベースがマウントされました。 ORA-01157: データファイル1を識別/ロックできません - DBWRトレース・ファイルを参照してください ORA-01110: データファイル1: '/u01/app/oracle/oradata/orcl/system01.dbf'

ORACLEインスタンスは起動し、マウントまで成功しました。しかし、「ORA-01157」エラーにより正常にデータベースを起動できませんでした。


(2) 障害原因の診断
Oracle 11gR2以降なので、「データリカバリアドバイザ」を利用して障害原因を確認してみます。

RMANで接続します。
[oracle@dg01 ~]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on 月 3月 31 08:45:00 2014 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. ターゲット・データベース: ORCL(DBID=1371396053、未オープン)に接続されました

「advise failure all」コマンドにより、障害原因を判別します。
RMAN> advise failure all; リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています データベース・ロール: PRIMARY データベース障害のリスト ========================= 障害ID 優先度ステータス 検出時間 サマリー ------ -------- --------- -------- ------- 3520 CRITICAL OPEN 14-03-31 システム・データファイル1: '/u01/app/oracle/oradata/orcl/system01.dbf'は破損しています 自動修復オプションを分析中です。これには少し時間がかかる場合があります チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=11 デバイス・タイプ=DISK 自動修復オプションの分析が完了しました 必須の手動アクション ======================== 使用可能な手動アクションがありません オプションの手動アクション ======================= 使用可能な手動アクションがありません 自動修復オプション ======================== オプション 修復 説明 ------ ------------------ 1 データファイル1をリストアおよびリカバリします 計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます 修復スクリプト: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3569545545.hm

上記により、「system01.dbf」ファイルが破損していることが改めて分かります。

また、「自動修復オプション」にて、ファイル「reco_3569545545.hm」が提示されています。
ファイルの内容は下記の通りです。
# restore and recover datafile restore ( datafile 1 ); recover datafile 1; sql 'alter database datafile 1 online';

上記ファイルの内容を手動で実行してもデータベースを復旧することができます。
内容を確認すると、datafileの1番をリストア・リカバリ後に、オンラインにして復旧することが分かります。


(3) 障害を復旧する
(2)で実行した「advise failure all」コマンドにて、自動修復オプション「reco_3569545545.hm」の提示がありました。
よって、「repair failure」コマンドでデータベースの自動修復を行います。
RMAN> repair failure; 計画: 修復には、データが損失しない完全なメディア・リカバリが含まれます 修復スクリプト: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3569545545.hm 修復スクリプトの内容: # restore and recover datafile restore ( datafile 1 ); recover datafile 1; sql 'alter database datafile 1 online'; この修復を実行しますか(YESまたはNOを入力してください)。 YES ←YESと入力 修復スクリプトを実行しています restoreが開始されました(開始時間: 14-03-31) チャネルORA_DISK_1の使用 チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています チャネルORA_DISK_1: データファイル00001を/u01/app/oracle/oradata/orcl/system01.dbfにリストアしています チャネルORA_DISK_1: バックアップ・ピース/backup/bs_3vp4hqs5_1_1から読取り中です チャネルORA_DISK_1: ピース・ハンドル=/backup/bs_3vp4hqs5_1_1 タグ=TAG20140331T082125 チャネルORA_DISK_1: バックアップ・ピース1がリストアされました チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:25 restoreが完了しました(完了時間: 14-03-31) recoverが開始されました(開始時間: 14-03-31) チャネルORA_DISK_1の使用 メディア・リカバリを開始しています スレッド1 (順序3)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_3_9mk9x37f_.arcとしてディスクに存在します スレッド1 (順序4)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_4_9mk9x7nn_.arcとしてディスクに存在します スレッド1 (順序5)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_5_9mk9x84l_.arcとしてディスクに存在します スレッド1 (順序6)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_6_9mk9x8vo_.arcとしてディスクに存在します スレッド1 (順序7)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_7_9mk9x9g7_.arcとしてディスクに存在します スレッド1 (順序8)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_8_9mkb6m0m_.arcとしてディスクに存在します スレッド1 (順序9)のアーカイブ・ログは、ファイル/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_9_9mkblqwz_.arcとしてディスクに存在します チャネルORA_DISK_1: デフォルトの宛先へのアーカイブ・ログのリストアを開始しています チャネルORA_DISK_1: アーカイブ・ログをリストアしています アーカイブ・ログ・スレッド=1 順序=2 チャネルORA_DISK_1: バックアップ・ピース/backup/bs_42p4hqug_1_1から読取り中です チャネルORA_DISK_1: ピース・ハンドル=/backup/bs_42p4hqug_1_1 タグ=TAG20140331T082240 チャネルORA_DISK_1: バックアップ・ピース1がリストアされました チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01 アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_2_9mkbz7mb_.arc スレッド=1 順序=2 チャネルdefault: アーカイブ・ログを削除しています アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_2_9mkbz7mb_.arc レコードID=78 スタンプ=843640951 アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_3_9mk9x37f_.arc スレッド=1 順序=3 アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_4_9mk9x7nn_.arc スレッド=1 順序=4 アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_5_9mk9x84l_.arc スレッド=1 順序=5 アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_6_9mk9x8vo_.arc スレッド=1 順序=6 アーカイブ・ログ・ファイル名=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2014_03_31/o1_mf_1_7_9mk9x9g7_.arc スレッド=1 順序=7 メディア・リカバリが完了しました。経過時間: 00:00:00 recoverが完了しました(完了時間: 14-03-31) SQL文: alter database datafile 1 online 障害の修復が完了しました データベースをオープンしますか(YESまたはNOを入力してください)。 YES ←YESと入力 データベースがオープンしました。

以上でデータベースが起動し、障害を復旧することができました。




以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:制御ファイル全障害を復旧する(RMAN編)
次ページへ:サーバ・パラメータ・ファイル障害を復旧する(RMAN編)

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。