スポンサードリンク
ユーザ管理データベースリカバリ手順
本項では、Oracleのユーザ管理データベース全体リカバリについて説明します。「ユーザ管理バックアップ手順 (3)データファイルバックアップ」でバックアップを取得したすべてのデータファイルに障害が発生した際を想定したリカバリとなります。
「ユーザ管理表領域リカバリ手順」では、一つの表領域(USERS表領域)のデータファイルに障害が発生したことを想定したリカバリ手順を紹介しましたが、ここではSYSTEM表領域やUNDO表領域のデータファイル障害を想定したデータベース全体のリカバリ手順を紹介します。
USERS表領域の障害時は、データベースはオープンしたままオンラインリカバリが可能でしたが、SYSTEM表領域のデータファイルに障害があった場合は、データベースを停止後、MOUNT状態で起動させた後にリカバリを実行します。
1.OCOPYで疑似的障害を発生させる
C:\Windows\system32>ocopy C:\tmp\ERROR.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF C:\Windows\system32>ocopy C:\tmp\ERROR.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF C:\Windows\system32>ocopy C:\tmp\ERROR.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF C:\Windows\system32>ocopy C:\tmp\ERROR.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
C:\Windows\system32>
|
※ /tmp/ERROR.DBFは、疑似障害を発生させるために作成したファイル
※ ocopyは、Windows環境で使用できるファイルをコピーするツールで主にオンラインバックアップのために使用されます。ocopyにはOSのコピーコマンドにはないrawデバイスのコピーなどが可能となります。
2.障害発生を確認
SQL> INSERT INTO TEST VALUES(3,'TEST3');
INSERT INTO TEST VALUES(3,'TEST3')
*
行1でエラーが発生しました。:
ORA-00604: 再帰SQLレベル1でエラーが発生しました。
ORA-01115: ファイル(ブロック番号)からの読取りI/Oエラーが発生しました。
ORA-01110: データファイル1: 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF'
ORA-27070: 非同期の読取り/書込みに失敗しました。
OSD-04006: ReadFile()????s????????B?t?@?C???????????????????S-Error:
(OS 38) ?t?@?C????I??????B
SQL>
|
3.データベースをシャットダウン
SQL> shutdown abort
ORACLEインスタンスがシャットダウンされました。
SQL>
|
4.バックアップからデータファイルをリストア(OCOPY)を実行
C:\Windows\system32>ocopy C:\TMP\BK\SYSTEM.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF
C:\Windows\system32>ocopy C:\TMP\BK\UNDOTBS1.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF
C:\Windows\system32>ocopy C:\TMP\BK\SYSAUX.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF
C:\Windows\system32>ocopy C:\TMP\BK\USERS.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
C:\Windows\system32>
|
6.データベースをマウント
C:\Windows\system32>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on 日 3月 10 07:54:56 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
アイドル・インスタンスに接続しました。
SQL> startup mount
ORACLEインスタンスが起動しました。
Total System Global Area 1071333376 bytes
Fixed Size 1388352 bytes
Variable Size 637534400 bytes
Database Buffers 427819008 bytes
Redo Buffers 4591616 bytes
データベースがマウントされました。
SQL>
|
7.データベースのリカバリ
SQL> recover database
ORA-00279: 変更1191315(03/04/2013 07:55:28で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000048_0788593801.0001
ORA-00280: 変更1191315(スレッド1)は順序番号48に存在します。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 変更1192548(03/04/2013 08:49:12で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000049_0788593801.0001
ORA-00280: 変更1192548(スレッド1)は順序番号49に存在します。
ORA-00279: 変更1213950(03/07/2013 06:51:06で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000050_0788593801.0001
ORA-00280: 変更1213950(スレッド1)は順序番号50に存在します。
ORA-00279: 変更1235531(03/08/2013 05:31:55で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000051_0788593801.0001
ORA-00280: 変更1235531(スレッド1)は順序番号51に存在します。
ORA-00279: 変更1256950(03/08/2013 06:11:12で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000052_0788593801.0001
ORA-00280: 変更1256950(スレッド1)は順序番号52に存在します。
ログが適用されました。
メディア・リカバリが完了しました。
SQL>
|
8.データベースオープン
SQL> alter database open;
データベースが変更されました。
SQL>
|
9.オープン後の動作確認
SQL> INSERT INTO TEST VALUES(3,'TEST3');
1行が作成されました。
SQL> select * from test;
TEST_I TEST_NAME
------ --------------------
2 TEST2
1 TEST1
3 TEST3
|
〜完全リカバリと不完全リカバリ〜
Oracleののリカバリの考え方として、完全リカバリと不完全リカバリがあります。
●完全リカバリ
完全リカバリとは、データファイルをリストア後に、アーカイブREDOログファイルとオンラインREDOログファイルの変更履歴を適用し、障害発生直前の状態(障害発生直前のコミットが完了した時点)までリカバリする方法です。ただし、完全リカバリを実施する際には、アーカイブログモードで運用が前提となります。また、完全リカバリには、データベースをマウントした状態でリカバリを行うオフラインリカバリと、データベースをオープンしたままでリカバリを行うオンラインリカバリがあります。
●不完全リカバリ
不完全リカバリとは、障害発生直前の状態ではなく、ある特定時点の状態までリカバリする方法です。例えば、すべてのカレントのオンラインREDOログファイル、あるいはリカバリで必要なアーカイブREDOログファイルの一部が消失してしまい完全リカバリが行えない、バッチ処理の開始前など特定のトランザクションや、ある時刻までリカバリを行いたい場合などには不完全リカバリを行います。なお、不完全リカバリは、データベースをマウント状態にして行うオフラインリカバリでのみ実施できます。
|
※上記のようにユーザ管理でもRMANでもリカバリの考え方は同じになります。RMAN利用時と違うのは、バックアップとアーカイブログの格納先管理を私たち自身が行う必要があるため、リストア&リカバリ作業においてファイル名の指示が必要になるということです。
<ユーザ管理バックアップ>
|-ユーザ管理バックアップとRMANバックアップの違い
|-ユーザ管理バックアップ手順
|-ユーザ管理表領域リカバリ手順
|-ユーザ管理データベースリカバリ手順
<RMANバックアップ>
|-RMAN(Recovery Manager)とは
|-RMANイメージコピーとバックアップセット
|-RMANフルバックアップと増分バックアップ
|-RMANのデフォルト構成の表示
|-RMANリポジトリの管理
|-RMANの起動とデータベース接続
|-RMANのバックアップ情報確認方法
|
スポンサードリンク
|