この章では、1つ以上のデータファイルが消失した後、RMANを使用してデータベースを通常の稼働状態に戻す方法について説明します。この章の内容は次のとおりです。
この項では、データベースの完全リストアおよびリカバリの目的およびこの章の概要について説明します。
この章では、データファイルの一部またはすべてが消失または破損したと想定しています。通常、この状況は、メディア障害または誤った削除によって発生します。破損したファイルをRMANバックアップからリストアし、すべてのデータベース変更をリカバリすることによって、データベースを通常の稼働状態に戻す必要があります。
この章では、完全リカバリを使用して最も一般的なデータベースの問題を解決する方法について説明します。この章では、次のことを想定しています。
一部またはすべてが消失したデータファイルがあり、すべての変更をリカバリすることが目標です。ただし、現行のすべての制御ファイルまたはオンラインREDOログ・グループ全体は消失していません。
すべてのデータベースの変更ではなく、一部の変更をリカバリする方法については、第18章「フラッシュバックおよびデータベースのPoint-in-Timeリカバリの実行」を参照してください。第30章「ユーザー管理のリカバリの実行: 高度な例」では、現行のすべての制御ファイルではなく一部の制御ファイルを消失したとき、またはオンラインREDOログ・グループのメンバーを消失したときに対応する方法について説明します。「バックアップ制御ファイルを使用したリカバリの実行」では、すべての制御ファイルを消失したときにデータベースをリカバリする方法について説明します。
データベースでは、現行のサーバー・パラメータ・ファイルが使用されています。
バックアップ・サーバー・パラメータ・ファイルをリストアするには、「サーバー・パラメータ・ファイルのリストア」を参照してください。
データファイルのバックアップのリカバリに必要なすべてのアーカイブREDOログおよび増分バックアップが存在します。すべてのデータファイルには、バックアップ、またはバックアップなしでデータファイルを作成した時点からのすべてのオンラインおよびアーカイブREDOログが存在します。
RMANは、リストアおよびリカバリ時に、消失したデータファイルを処理できます。ユーザーが手動で操作を行う必要はありません。データファイルが消失している場合、次のような状況が考えられます。
制御ファイルにデータファイルのレコードが含まれている(データファイルの作成後に制御ファイルをバックアップしているが、データファイル自体はバックアップしていない)。データファイルのレコードが制御ファイルに含まれている場合、RESTORE
を実行すると、元の場所またはユーザーが指定する場所にデータファイルが作成されます。その後、RECOVER
コマンドを実行すると、必要なログをデータファイルに適用できます。
制御ファイルにデータファイルのレコードが含まれていない(データファイルの作成後に制御ファイルをバックアップしていない)。 リカバリ時に、データベースは、欠落しているデータファイルを検出してRMANに報告し、RMANは、新しいデータファイルを作成し、残りのログを適用してリカバリを続行します。データファイルが親インカネーション内に作成されている場合は、必要に応じて、リストアまたはリカバリ・フェーズ中にデータファイルが作成されます。
暗号化された表領域は、リストアおよびリカバリしません。
暗号化された表領域でメディア・リカバリを実行する場合は、この表領域のメディア・リカバリの実行時に、Oracleウォレットをオープンする必要があります。暗号化された表領域については、『Oracle Database管理者ガイド』を参照してください。
データベースは、シングル・インスタンス構成で実行されています。
RMANは、Oracle RACおよびData Guard構成でデータベースをリストアおよびリカバリできますが、このマニュアルではこれらの例については説明しません。
Oracle Enterprise ManagerではなくRMANクライアントを使用しています。
Enterprise Managerでは、一連のウィザードによってRMANにアクセスできます。これらのウィザードは、データベース、使用可能なバックアップおよびデータ・リカバリの目的の分析に基づいて、様々なリカバリ手順を提供します。
Enterprise Managerを使用することによって、この章で説明する簡単なリストアおよびリカバリの例を実行できます。また、Point-in-Timeリカバリやデータベースのフラッシュバックなどのより高度なリストアおよびリカバリ方法を使用して、メディア障害およびユーザー・エラーを効率的に修復することもできます。通常、Enterprise ManagerのほうがRMANコマンドライン・クライアントを直接使用するより簡単です。
関連項目:
|
RMANによってデータベースのほとんどのリストアおよびリカバリ・タスクは簡単になりますが、データベースのリストアおよびリカバリ計画は、消失したデータベース・ファイルおよびリカバリの目標に基づいて作成する必要があります。この項の内容は、次のとおりです。
リストアまたはリカバリが必要なファイルを判別する方法は、消失したファイルのタイプによって異なります。
通常、データベースの制御ファイルが消失した日時は明らかです。多重制御ファイルのいずれかがアクセス不可能になると、データベースは即時に停止します。また、CONTROL_FILES
初期化パラメータに指定された有効な制御ファイルがそれぞれの場所に存在しない状態でデータベースを起動しようとした場合も、データベースによってエラーがレポートされます。
制御ファイルのコピーのすべてではなく一部が消失した場合は、バックアップから制御ファイルをリストアする必要はありません。影響を受けていない制御ファイルが1つ以上存在する場合は、影響を受けていない制御ファイルを破損または消失した制御ファイルにコピーするか、または破損または消失した制御ファイルを参照しないように初期化パラメータ・ファイルを更新することができます。存在し、影響を受けていない制御ファイルのコピーのみをCONTROL_FILES
パラメータが参照するようにした後で、データベースを再起動できます。
制御ファイルをバックアップからリストアする場合は、データファイルをリストアする必要がない場合でも、データベース全体のメディア・リカバリを実行してから、OPEN RESETLOGS
オプションを使用してデータベースをオープンする必要があります。この方法については、「バックアップ制御ファイルを使用したリカバリの実行」を参照してください。
リカバリを実行するタイミングと方法は、データベースの状態とデータファイルの場所によって異なります。
欠落しているデータファイルを判別する簡単な方法は、指定したすべてのデータファイルの読取りを試行するVALIDATE DATABASE
コマンドを実行することです。たとえば、RMANクライアントを起動し、次のコマンドを実行してデータベースを検証します(出力例も示します)。
例17-1 BACKUP VALIDATE DATABASE
RMAN> VALIDATE DATABASE; Starting validate at 20-OCT-06 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=90 device type=DISK could not read file header for datafile 7 error reason 4 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of backup command at 10/20/2007 13:05:43 RMAN-06056: could not access datafile 7
例17-1の出力は、データファイル7がアクセス不可能であることを示しています。この場合は、REPORT SCHEMA
コマンドを次のように実行して、データファイル7の表領域名およびファイル名を取得できます(出力例も示します)。
RMAN> REPORT SCHEMA; Report of database schema for database with db_unique_name RDBMS List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 450 SYSTEM *** +DATAFILE/tbs_01.f 2 86 SYSAUX *** +DATAFILE/tbs_ax1.f 3 15 UD1 *** +DATAFILE/tbs_undo1.f 4 2 SYSTEM *** +DATAFILE/tbs_02.f 5 2 TBS_1 *** +DATAFILE/tbs_11.f 6 2 TBS_1 *** +DATAFILE/tbs_12.f 7 2 TBS_2 *** +DATAFILE/tbs_21.f List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 40 TEMP 32767 +DATAFILE/tbs_tmp1.f
VALIDATE DATABASE
はファイルがアクセス不可能かどうかを確認する場合の最適な方法ですが、SQL問合せを使用してより詳細な情報を取得する必要がある場合があります。
データファイルにメディア・リカバリが必要かどうかを確認する手順
SQL*Plusを起動し、管理者権限でターゲット・データベース・インスタンスに接続します。
次のSQL問合せを実行して、データベースのステータスを確認します。
SELECT STATUS FROM V$INSTANCE;
状態がOPEN
の場合、データベースはオープン状態です。ただし、一部のデータファイルにメディア・リカバリが必要な場合があります。
V$DATAFILE_HEADER
を問い合せて、データファイルのステータスを確認します。次のSQL文を実行して、データファイルのヘッダーを確認します。
SELECT FILE#, STATUS, ERROR, RECOVER, TABLESPACE_NAME, NAME FROM V$DATAFILE_HEADER WHERE RECOVER = 'YES' OR (RECOVER IS NULL AND ERROR IS NOT NULL);
戻される各行は、メディア・リカバリが必要なデータファイルまたはリストアが必要なエラー発生しているデータファイルを表します。RECOVER
およびERROR
列を確認します。RECOVER
には、ファイルにメディア・リカバリが必要かどうかが示され、ERROR
には、データファイルのヘッダーの読取り時および検証時にエラーが発生したかどうかが示されます。
ERROR
がNULL
でない場合は、データファイルのヘッダーの読取りおよび検証は実行できません。エラーの原因となるハードウェアまたはオペレーティング・システムの一時的な問題がないかどうかを確認します。問題がない場合は、ファイルをリストアしてコピーに切り替える必要があります。
ERROR
列がNULL
で、RECOVER
列がYES
の場合、ファイルにはメディア・リカバリが必要です(バックアップからリストアする必要がある場合もあります)。
必要に応じて、V$RECOVER_FILE
を問い合せて、リカバリが必要なデータファイルをそのステータス情報およびエラー情報とともにデータファイル番号で表示します。たとえば、次の問合せを実行します。
SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME FROM V$RECOVER_FILE;
注意: V$RECOVER_FILE は、バックアップからリストアされた制御ファイル、またはデータファイルに影響を及ぼすメディア障害の発生後に再作成された制御ファイルには使用できません。リストアされた制御ファイルまたは再作成された制御ファイルには、V$RECOVER_FILE を正確に更新するために必要な情報が含まれていません。 |
データファイルおよび表領域の名前を取得するために、データファイル番号、V$DATAFILE
およびV$TABLESPACE
ビューを使用して、有効な結合を実行することもできます。次に例を示します。
SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name, d.STATUS, r.ERROR, r.CHANGE#, r.TIME FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t WHERE t.TS# = d.TS# AND d.FILE# = r.FILE#;
ERROR
列で、リカバリが必要な各ファイルに関する問題を識別します。
関連項目: V$ビューの詳細は、『Oracle Databaseリファレンス』 を参照してください。 |
自動バックアップからのサーバー・パラメータ・ファイルまたは制御ファイルのリカバリが必要な状況では、DBIDがわかっている必要があります。DBIDは、データベースに関する他の基本情報とともに記録する必要があります。
データベースのDBIDの記録がない場合は、データベースをオープンせずに次の場所で参照することができます。
DBIDは、制御ファイルの自動バックアップのファイル名の一部に使用されています。制御ファイルを検索した後、「制御ファイルの自動バックアップ書式の構成」を参照して、ファイル名のどこにDBIDが表示されるかを確認します。
RMANセッションからの出力を保持するテキスト・ファイルがある場合、DBIDは、RMANクライアントが起動してデータベースに接続する際に表示されます。通常の出力を次に示します。
% rman TARGET /
Recovery Manager: Release 11.1.0.6.0 - Production on Wed Jul 11 17:51:30 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: PROD (DBID=36508508)
RESTORE
...
PREVIEW
を任意のRESTORE
操作に適用すると、要求されたRESTORE
操作で使用されるすべてのバックアップ、およびRESTORE
操作完了後のリカバリに必要な目的のSCNの詳細なリストを作成できます。このコマンドは、RMANリポジトリにアクセスしてバックアップ・メタデータを問い合せますが、実際にバックアップ・ファイルを読み取ってリストア可能であることは確認しません。
RESTORE ... PREVIEW
の代替として、RESTORE ... VALIDATE HEADER
コマンドを使用できます。RESTORE ... VALIDATE HEADER
コマンドは、リストアおよびリカバリに必要なファイルを一覧表示する以外に、バックアップ・ファイル・ヘッダーを検証して、ディスク上またはメディア管理カタログ内のファイルが、RMANリポジトリのメタデータに対応しているかどうかを確認します。
リストアおよびリカバリ操作を計画する場合は、RESTORE ...
PREVIEW
またはRESTORE ... VALIDATE HEADER
を使用して、必要なすべてのバックアップが使用可能であることを確認するか、または特定のバックアップの使用または回避をRMANに指示する必要がある状況を識別します。
リストア操作で使用されるバックアップをプレビューする手順
PREVIEW
オプションを指定してRESTORE
コマンドを実行します。
たとえば、次のいずれかのコマンドを実行します。
RESTORE DATABASE PREVIEW; RESTORE ARCHIVELOG FROM TIME 'SYSDATE-7' PREVIEW;
RESTORE
...
PREVIEW
によって生成されるレポートの情報が多すぎる場合は、次の例に示すようにSUMMARY
オプションを指定します。
RESTORE DATABASE PREVIEW SUMMARY;
出力が適切である場合は、ここで停止します。一時的に使用できないことがわかっているテープからのバックアップをRMANが要求することが出力に示された場合は、この手順を続行します。バックアップがオフサイトに格納されていることが出力に示された場合は、「オフサイト・バックアップのリコール」に進みます。
必要に応じて、CHANGE
コマンドを使用して、一時的に使用できないバックアップのバックアップ・ステータスをUNAVAILABLE
に設定します。
このタスクの実行方法については、「AVAILABLEまたはUNAVAILABLEへのバックアップのステータスの更新」を参照してください。
必要に応じて、RESTORE
...
PREVIEW
を再度実行して、使用できないバックアップがリストアで使用されないことを確認します。
関連項目: RESTORE ...PREVIEW の出力(LIST コマンドの出力と同じ書式)の解釈の詳細は、 『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |
一部のメディア・マネージャは、オフサイトにあるバックアップに関するステータス情報をRMANに提供します。オフサイト・バックアップは、安全なストレージ設備などのリモートの場所に格納され、メディア・マネージャがメディアを取り込まないかぎりリストアできません。
バックアップをリストアする前にストレージからメディアを取り込む必要がある場合でも、オフサイト・バックアップは、RMANリポジトリでAVAILABLE
とマークが付けられます。RMANがオフサイト・バックアップのリストアを試みると、リストア・ジョブに失敗します。
RESTORE ... PREVIEW
を使用すると、オフサイト・バックアップを確認できます。例17-2のサンプル出力の最後にあるテキストに示すように、コマンドの出力には、バックアップがオフサイトに格納されたかどうかが示されます。
例17-2 RESTORE ... PREVIEWの出力
List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 9 2.25M SBT_TAPE 00:00:00 21-MAY-07 BP Key: 9 Status: AVAILABLE Compressed: NO Tag: TAG20070521T144258 Handle: 0aii9k7i_1_1 Media: 0aii9k7i_1_1 List of Archived Logs in backup set 9 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- --------- 1 1 392314 21-MAY-07 392541 21-MAY-07 1 2 392541 21-MAY-07 392545 21-MAY-07 1 3 392545 21-MAY-07 392548 21-MAY-07 1 4 392548 21-MAY-07 395066 21-MAY-07 1 5 395066 21-MAY-07 395095 21-MAY-07 1 6 395095 21-MAY-07 395355 21-MAY-07 List of remote backup files ============================ Handle: aii9k7i_1_1 Media: 0aii9k7i_1_1 validation succeeded for backup piece Finished restore at 21-MAY-07 released channel: dev1
RESTORE
...
PREVIEW
RECALL
を使用すると、オフサイト・バックアップを使用可能にするようにメディア・マネージャに指示できます。
オフサイト・バックアップをリコールする手順
バックアップがオフサイトに格納されている場合、RECALL
オプションを指定してRESTORE ... PREVIEW
コマンドを実行します。
次の例では、例17-2に示されているオフサイト・アーカイブ・ログのバックアップのリコールを開始します(出力例も示します)。
RESTORE ARCHIVELOG ALL PREVIEW RECALL;
次のサンプル出力は、RMANがリコールを開始したことを示しています。
List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 9 2.25M SBT_TAPE 00:00:00 21-MAY-07 BP Key: 9 Status: AVAILABLE Compressed: NO Tag: TAG20070521T144258 Handle: VAULT0aii9k7i_1_1 Media: /tmp,VAULT0aii9k7i_1_1 List of Archived Logs in backup set 9 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- --------- 1 1 392314 21-MAY-07 392541 21-MAY-07 1 2 392541 21-MAY-07 392545 21-MAY-07 1 3 392545 21-MAY-07 392548 21-MAY-07 1 4 392548 21-MAY-07 395066 21-MAY-07 1 5 395066 21-MAY-07 395095 21-MAY-07 1 6 395095 21-MAY-07 395355 21-MAY-07 Initiated recall for the following list of remote backup files ========================================================== Handle: VAULT0aii9k7i_1_1 Media: /tmp,VAULT0aii9k7i_1_1 validation succeeded for backup piece Finished restore at 21-MAY-07 released channel: dev1
RESTORE
..
.
PREVIEW
コマンドを実行します。必要に応じて、リストアに必要なバックアップがオフサイトとしてレポートされなくなるまで、前の手順に戻ります。
「リストア操作で使用されるバックアップのプレビュー」の手順では、リストアされるバックアップは示されますが、それらのバックアップが実際に使用可能であることは検証されません。RMANコマンドを実行して、RESTORE
操作で使用可能なバックアップの可用性またはRESTORE
操作で使用される特定のバックアップの内容をテストできます。バックアップの内容が実際に読み取られ、破損が確認されます。次の検証オプションがあります。
RESTORE
...
VALIDATE
を実行すると、RMANで特定のオブジェクトをバックアップからリストアできるかどうかがテストされます。RMANによって、使用するバックアップが選択されます。
VALIDATE BACKUPSET
は、指定するバックアップ・セットの妥当性をテストします。
RMANは、リカバリを実行するために、必要に応じてアーカイブREDOログ・ファイルをバックアップから自動的にリストアします。また、後でRECOVER
コマンド中にこれらのファイルのリストアに必要となる時間を節約するために、またはリストアされたアーカイブREDOログ・ファイルを新しい場所に格納する場合に、アーカイブREDOログを手動でリストアすることもできます。RMANでは、すべてのアーカイブREDOログ・ファイル、現行のREDOログ・ファイルまたは指定されたデータベースの以前のインカネーションからのアーカイブREDOログ・ファイルをリストアすることができます。
デフォルトでは、RMANは、ターゲット・データベースのLOG_ARCHIVE_FORMAT
および最大のLOG_ARCHIVE_DEST_
n
パラメータを使用して構成された名前でアーカイブREDOログをリストアします。これらのパラメータがプラットフォーム固有の形式で組み合され、リストアされたアーカイブ・ログの名前が構成されます。
SET
ARCHIVELOG
DESTINATION
コマンドを使用すると、リストアしたアーカイブREDOログのデフォルトの名前を上書きできます。このコマンドによって、アーカイブ・ログは、データベースのリストア中に別の場所に手動でステージングされます。リカバリ中、RMANは新しくリストアされたアーカイブ・ログを検索する場所を認識するため、初期化パラメータ・ファイルで指定された場所にアーカイブ・ログが存在している必要はありません。
アーカイブREDOログを新しい場所へリストアする手順
RMANを起動し、ターゲット・データベースに接続します。
データベースがマウントまたはオープンされていることを確認します。
RUN
コマンド内で、次の操作を実行します。
SET
ARCHIVELOG
DESTINATION
を使用して、リストアするアーカイブREDOログの新しい場所を指定します。
アーカイブREDOログを明示的にリストアするか、またはログを自動的にリストアするコマンドを実行します。
次の例のRUN
コマンドは、すべてのバックアップ・アーカイブ・ログを新しい場所に明示的にリストアします。
RUN { SET ARCHIVELOG DESTINATION TO '/oracle/temp_restore'; RESTORE ARCHIVELOG ALL; # restore and recover datafiles as needed . . . }
次の例では、アーカイブ・ログの宛先を設定し、RECOVER DATABASE
を使用してアーカイブ・ログをこの宛先から自動的にリストアします。
RUN { SET ARCHIVELOG DESTINATION TO '/oracle/temp_restore'; RESTORE DATABASE; RECOVER DATABASE; # restores and recovers logs automatically }
アーカイブ・ログのリストア先を1つのRUNブロックに複数回指定して、リストアしたログを複数のリストア先に分散できます。(ただし、同時に複数のリストア先を指定して、リストア操作時に同じログの複数のコピーを生成することはできません。)この機能を使用して、リストアしたログを格納するために使用するディスク領域を管理できます。
次の例では、バックアップから300のアーカイブREDOログをリストアし、ディレクトリ/fs1/tmp
、/fs2/tmp
および/fs3/tmp
に分散します。
RUN { # Set a new location for logs 1 through 100. SET ARCHIVELOG DESTINATION TO '/fs1/tmp'; RESTORE ARCHIVELOG FROM SEQUENCE 1 UNTIL SEQUENCE 100; # Set a new location for logs 101 through 200. SET ARCHIVELOG DESTINATION TO '/fs2/tmp'; RESTORE ARCHIVELOG FROM SEQUENCE 101 UNTIL SEQUENCE 200; # Set a new location for logs 201 through 300. SET ARCHIVELOG DESTINATION TO '/fs3/tmp'; RESTORE ARCHIVELOG FROM SEQUENCE 201 UNTIL SEQUENCE 300; # restore and recover datafiles as needed . . . }
RECOVER
コマンドを発行すると、リストアした必要なアーカイブ・ログがリストア先で自動的に検出され、データファイルに適用されます。
この項では、「データベースの完全リカバリの準備」のタスクをすでに実行していると想定しています。この項では、広範囲の様々な例に対応することを目的としているデータベースの完全リカバリの概要について説明します。
データベースをリストアおよびリカバリするには、RESTORE
およびRECOVER
コマンドを使用します。リカバリ中、RMANは、必要なアーカイブREDOログのバックアップを自動的にリストアします。バックアップがメディア・マネージャに格納されている場合は、チャネルを事前に構成しておくか、またはALLOCATE
CHANNEL
コマンドを含むRUN
ブロックを使用して、そこに格納されているバックアップへのアクセスを有効にする必要があります。
RMANは、リカバリ中にアーカイブREDOログを高速リカバリ領域にリストアする場合、リストアしたログを、データファイルに適用した後で自動的に削除します。そうでない場合は、リストアしたアーカイブREDOログがリカバリに必要でなくなった後、DELETE ARCHIVELOG
コマンドを使用して、それらのアーカイブREDOログをディスクから削除できます。たとえば、次のコマンドを入力できます。
RECOVER DATABASE DELETE ARCHIVELOG;
データファイルをデフォルトの場所にリストアできない場合は、データファイルの新しい場所が反映されるように、制御ファイルを更新する必要があります。RMANのSET NEWNAME
コマンドをRUN
コマンド内で使用して、新しいファイル名を指定します。その後、SQL文ALTER DATABASE RENAME FILE
と同じ動作をするSWITCH
コマンドを使用し、制御ファイル内のデータファイルの名前を更新します。SWITCH
DATAFILE
ALL
を実行すると、制御ファイルに、RUN
コマンドでSET
NEWNAME
が発行されているすべてのデータファイルの新しい名前が反映されます。
関連項目: SWITCHの構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |
RMANは、暗号化バックアップをリストアする場合、バックアップ・セットの内容をリストアする際にバックアップ・セットを自動的に復号化します。透過的に暗号化されたバックアップは、Oracleウォレットがオープンしていて使用可能な場合にかぎり、ユーザーが介入せずにリストアできます。
パスワード暗号化バックアップをリストアするには、正しいパスワードを入力する必要があります。SET
DECRYPTION
コマンドを使用して、暗号化パスワードを入力する必要があります。異なるパスワードを使用して作成されたバックアップのグループからリストアを行う場合は、SET
DECRYPTION
コマンドで、必要なすべてのパスワードを指定する必要があります。各バックアップ・セットで正しいパスワードが自動的に使用されます。
関連項目:
|
この例では、データベースtrgt
のほとんどまたはすべてのデータファイルが消失したと想定しています。また、データベースで高速リカバリ領域が使用されているとも想定しています。
データベース全体のリストアおよびリカバリの後で、データベースがオープンされると、制御ファイルに記録された欠落している一時表領域は、以前の作成サイズ、AUTOEXTEND
およびMAXSIZE
属性で再作成されます。欠落している一時表領域のみが再作成されます。RMANリポジトリに記録された場所に存在する一時ファイルのヘッダーが無効な場合、RMANは一時ファイルを再作成しません。
一時ファイルがOracle Managed Filesとして作成されていた場合は、現在のDB_CREATE_FILE_DEST
の場所に再作成されます。そうでない場合は、以前の場所で再作成されます。RMANがI/Oエラーまたは他の原因でファイルを再作成できない場合、エラーがアラート・ログにレポートされ、データベースのオープン操作が続行されます。
データベース全体をリストアおよびリカバリする手順
RMANを起動し、ターゲット・データベースに接続します。
たとえば、次のコマンドを入力します。
% rman RMAN> CONNECT TARGET /
RMANは、接続時にnot started
、not mounted
、not open
(データベースはマウントされているがオープンされていない場合)またはnone(データベースがオープンされている場合)のいずれかのデータベース・ステータスを表示します。
データベースがマウントされていない場合は、データベースをマウントします。ただし、オープンはしません。
たとえば、次のコマンドを入力します。
STARTUP MOUNT;
SHOW
コマンドを使用して、事前構成済のチャネルを確認します。
たとえば、次のコマンドを入力します(出力例も示します)。
SHOW ALL; RMAN configuration parameters for database with db_unique_name PROD1 are: . . . CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS "SBT_LIBRARY=/usr/local/oracle/backup/lib/libobk.so";
必要なデバイスおよびチャネルがすでに構成されている場合、操作は必要ありません。そうでない場合は、CONFIGURE
コマンドを使用して自動チャネルを構成するか、またはRUN
ブロック内にALLOCATE CHANNEL
コマンドを含めます。
パスワード保護された暗号化バックアップをリストアする場合は、パスワードを指定します。
次の例に示すように、SET DECRYPTION IDENTIFIED BY
コマンドを使用して、パスワード保護されたバックアップのパスワードを指定します(passwordは実際に入力するパスワードを表します)。
SET DECRYPTION IDENTIFIED BY password;
異なるパスワードでバックアップを作成した場合は、バックアップのリストアに必要となる可能性のあるすべてのパスワードを指定してSET DECRYPTION IDENTIFIED BY
password
コマンドを複数回実行できます。
データベースをリストアおよびリカバリします。次のいずれかを実行します。
すべてのデータファイルを元の場所にリストアする場合は、RMANプロンプトでRESTORE DATABASE
とRECOVER DATABASE
を順に実行します。
たとえば、自動チャネルが構成されている場合は、次のコマンドを入力します(出力例も示します)。
RMAN> RESTORE DATABASE;
Starting restore at 20-JUN-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=35 device type=DISK
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: SID=34 device type=SBT_TAPE
channel ORA_SBT_TAPE_1: Oracle Secure Backup
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /disk1/oracle/dbs/tbs_01.f
channel ORA_DISK_1: restoring datafile 00002 to /disk1/oracle/dbs/tbs_ax1.f
.
.
.
Finished restore at 20-JUN-06
RMAN> RECOVER DATABASE;
Starting recover at 20-JUN-06
using channel ORA_DISK_1
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: SID=34 device type=SBT_TAPE
channel ORA_SBT_TAPE_1: Oracle Secure Backup
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=5
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=6
.
.
.
channel ORA_DISK_1: reading from backup piece /disk1/oracle/work/orcva/TKRM/backupset/2007_06_20/o1_mf_annnn_TAG20070620T113128_29jhr197_.bkp
channel ORA_DISK_1: piece handle=/disk1/oracle/work/orcva/TKRM/backupset/2007_06_20/o1_mf_annnn_TAG20070620T113128_29jhr197_.bkp tag=TAG20070620T113128
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
archived log file name=/disk1/oracle/work/orcva/TKRM/archivelog/2007_06_20/o1_mf_1_5_29jhv47k_.arc thread=1 sequence=5
channel default: deleting archived log(s)
.
.
.
media recovery complete, elapsed time: 00:00:15
Finished recover at 20-JUN-06
チャネルを手動で割り当てる場合は、RESTORE
およびRECOVER
コマンドをRUN
ブロック内で同時に発行する必要があります。次に例を示します。
RUN { ALLOCATE CHANNEL c1 DEVICE TYPE sbt; RESTORE DATABASE; RECOVER DATABASE; }
一部のデータファイルを新しい場所にリストアする場合は、RUN
コマンドでRESTORE DATABASE
とRECOVER DATABASE
を順に実行します。「デフォルト以外の場所へのデータファイルのリストア」
で説明するように、SET NEWNAMEを使用して、データファイルの名前を変更します。
次の例では、データベースをリストアし、3つのデータファイルに新しい名前を指定してから、データベースをリカバリします。
RUN { SET NEWNAME FOR DATAFILE 2 TO '/disk2/df2.dbf'; SET NEWNAME FOR DATAFILE 3 TO '/disk2/df3.dbf'; SET NEWNAME FOR DATAFILE 4 TO '/disk2/df4.dbf'; RESTORE DATABASE; SWITCH DATAFILE ALL; RECOVER DATABASE; }
出力を調べて、メディア・リカバリが正常に実行されたかどうかを確認します。正常に実行された場合は、データベースをオープンします。
たとえば、次のコマンドを入力します。
ALTER DATABASE OPEN;
基本的な例では、データベースはオープンされており、データファイルのすべてではなく一部が破損しています。データベースの残りの部分を使用可能にしておくために、データベースはオープンしたままで、破損した表領域をリストアおよびリカバリします。この例では、データベースtrgt
の表領域users
が消失したと想定しています。
表領域をリストアおよびリカバリする手順
RMANを起動し、ターゲット・データベースに接続します。
データベースがオープンされている場合は、リカバリが必要なデータファイルをオフラインにします。
たとえば、次のコマンドを入力してusers
をオフラインにします。
SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
SHOW
コマンドを使用して、事前構成済のチャネルを確認します。
たとえば、次のコマンドを入力します(出力例も示します)。
SHOW ALL; RMAN configuration parameters for database with db_unique_name PROD1 are: . . . CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS "SBT_LIBRARY=/usr/local/oracle/backup/lib/libobk.so";
必要なデバイスおよびチャネルがすでに構成されている場合、操作は必要ありません。そうでない場合は、CONFIGURE
コマンドを使用して自動チャネルを構成するか、またはRUN
ブロック内にALLOCATE CHANNEL
コマンドを含めます。
パスワード保護された暗号化バックアップをリストアする場合は、パスワードを指定します。
次の例に示すように、SET DECRYPTION IDENTIFIED BY
コマンドを使用して、パスワード保護されたバックアップのパスワードを指定します(passwordは実際に入力するパスワードを表します)。
SET DECRYPTION IDENTIFIED BY password;
表領域をリストアおよびリカバリします。次のいずれかを実行します。
データファイルを元の場所にリストアする場合は、RMANプロンプトでRESTORE TABLESPACE
とRECOVER TABLESPACE
コマンドを実行します。
たとえば、自動チャネルが構成されている場合は、次のコマンドを入力します(出力例も示します)。
RMAN> RESTORE TABLESPACE users;
Starting restore at 20-JUN-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 device type=DISK
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: SID=38 device type=SBT_TAPE
channel ORA_SBT_TAPE_1: Oracle Secure Backup
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00012 to /disk1/oracle/dbs/users01.f
channel ORA_DISK_1: restoring datafile 00013 to /disk1/oracle/dbs/users02.f
channel ORA_DISK_1: restoring datafile 00021 to /disk1/oracle/dbs/users03.f
channel ORA_DISK_1: reading from backup piece /disk1/oracle/work/orcva/TKRM/backupset/2007_06_20/o1_mf_nnndf_TAG20070620T105435_29jflwor_.bkp
channel ORA_DISK_1: piece handle=/disk1/oracle/work/orcva/TKRM/backupset/2007_06_20/o1_mf_nnndf_TAG20070620T105435_29jflwor_.bkp tag=TAG20070620T105435
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 20-JUN-06
RMAN> RECOVER TABLESPACE users;
Starting recover at 20-JUN-06
using channel ORA_DISK_1
using channel ORA_SBT_TAPE_1
starting media recovery
archived log for thread 1 with sequence 27 is already on disk as file /disk1/oracle/work/orcva/TKRM/archivelog/2007_06_20/o1_mf_1_27_29jjmtc9_.arc
archived log for thread 1 with sequence 28 is already on disk as file /disk1/oracle/work/orcva/TKRM/archivelog/2007_06_20/o1_mf_1_28_29jjnc5x_.arc
.
.
.
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=5
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=6
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=7
.
.
.
channel ORA_DISK_1: reading from backup piece /disk1/oracle/work/orcva/TKRM/backupset/2007_06_20/o1_mf_annnn_TAG20070620T113128_29jhr197_.bkp
channel ORA_DISK_1: piece handle=/disk1/oracle/work/orcva/TKRM/backupset/2007_06_20/o1_mf_annnn_TAG20070620T113128_29jhr197_.bkp tag=TAG20070620T113128
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
archived log file name=/disk1/oracle/work/orcva/TKRM/archivelog/2007_06_20/o1_mf_1_5_29jkdvjq_.arc thread=1 sequence=5
channel default: deleting archived log(s)
archived log file name=/disk1/oracle/work/orcva/TKRM/archivelog/2007_06_20/o1_mf_1_5_29jkdvjq_.arc RECID=91 STAMP=593611179
archived log file name=/disk1/oracle/work/orcva/TKRM/archivelog/2007_06_20/o1_mf_1_6_29jkdvbz_.arc thread=1 sequence=6
channel default: deleting archived log(s)
.
.
.
media recovery complete, elapsed time: 00:00:01
Finished recover at 20-JUN-06
一部のデータファイルを新しい場所にリストアする場合は、RUN
コマンドでRESTORE TABLESPACE
とRECOVER TABLESPACE
を実行します。「デフォルト以外の場所へのデータファイルのリストア」
で説明するように、SET NEWNAMEを使用して、データファイルの名前を変更します。
次の例では、表領域users
内のデータファイルを新しい場所にリストアした後、リカバリを実行します。古いデータファイルは/disk1
パスに格納されており、新しいデータファイルは/disk2
パスに格納されると想定しています。
RUN { # specify the new location for each datafile SET NEWNAME FOR DATAFILE '/disk1/oracle/dbs/users01.f' TO '/disk2/users01.f'; SET NEWNAME FOR DATAFILE '/disk1/oracle/dbs/users02.f' TO '/disk2/users02.f'; SET NEWNAME FOR DATAFILE '/disk1/oracle/dbs/users03.f' TO '/disk2/users03.f'; RESTORE TABLESPACE users; SWITCH DATAFILE ALL; # update control file with new file names RECOVER TABLESPACE users; }
出力を調べて、リカバリが正常に実行されたことを確認します。正常に実行された場合は、リカバリした表領域をオンラインに戻します。
たとえば、次のコマンドを入力します。
SQL "ALTER TABLESPACE users ONLINE";
アクセスできないデータファイルのイメージ・コピーが高速リカバリ領域に存在する場合、SWITCH DATAFILE ... TO COPY
コマンドを使用して制御ファイルをデータファイルのコピーにポイントしてからRECOVER
を使用すると、消失した変更をリカバリできます。SWITCH DATABASE TO COPYコマンドを使用して、制御ファイルをデータベース全体のコピーにポイントすることもできます。バックアップをリストアする必要がないため、このリカバリ方法は従来のリストアおよびリカバリより時間がかかりません。
注意: SWITCH TABLESPACE ... TO COPY コマンドは、表領域のすべてのデータファイルが消失し、すべてのデータファイルのコピーが存在する場合でもサポートされます。SWITCH DATABASE TO COPY についても同じ制限があります。 |
基本的な例では、データベースはオープンされており、データファイルのすべてではなく一部が破損しています。1日の中で、あるデータファイルがストレージ障害によって欠落します。このファイルを修復する必要がありますが、バックアップからリストアおよびリカバリする時間はありません。最新のイメージ・コピー・バックアップを新しいファイルとして使用して、リストア時間をなくします。この例では、データベースtrgt
のデータファイル4
が消失したと想定しています。
データファイルのコピーに切り替えてリカバリを実行する手順
RMANを起動し、ターゲット・データベースに接続します。
データベースがオープンされている場合は、リカバリが必要な表領域をオフラインにします。
次のコマンドを入力してデータファイル4
をオフラインにします。
SQL "ALTER DATABASE DATAFILE 4 OFFLINE";
オフラインのデータファイルを最新のコピーに切り替えます。
次のコマンドを入力して、制御ファイルをデータファイル4
の最新のイメージ・コピーにポイントします。
SWITCH DATAFILE 4 TO COPY;
RECOVER DATAFILE
コマンドで、データファイルをリカバリします。
次のコマンドを入力します。
RECOVER DATAFILE 4;
RMANは、アーカイブREDOログおよび増分バックアップを自動的にリストアします。データベースでは高速リカバリ領域が使用されるため、RMANは、これらを、適用した後に自動的に削除します。
出力を調べて、リカバリが正常に実行されたことを確認します。正常に実行された場合は、リカバリしたデータファイルをオンラインに戻します。
次のコマンドを入力してデータファイル4
をオンラインにします。
SQL "ALTER DATABASE DATAFILE 4 ONLINE";
この例では、データベースは停止しており、すべてのデータファイルが破損しています。破損したすべてのデータファイルには、イメージ・コピーがあります。既存のイメージ・コピーを新しいデータファイルとして使用して、リストア時間をなくします。
データベースのコピーに切り替えてリカバリを実行する手順
RMANを起動し、ターゲット・データベースに接続します。
データベースをマウントします。
データベースを最新のコピーに切り替えます。
次のコマンドを入力して、制御ファイルをデータベースの最新のイメージ・コピーにポイントします。
SWITCH DATABASE TO COPY;
RECOVER DATABASE
コマンドで、データベースをリカバリします。
次のコマンドを入力します。
RECOVER DATABASE;
RMANは、アーカイブREDOログおよび増分バックアップを自動的にリストアします。データベースでは高速リカバリ領域が使用されるため、RMANは、これらを、適用した後に自動的に削除します。
出力を調べて、リカバリが正常に実行されたことを確認します。正常に実行された場合は、データベースをオープンします。
データベースをオープンするには、次のコマンドを入力します。
ALTER DATABASE OPEN;