この章では、障害発生後、リカバリ・アプライアンスに格納されているバックアップを使用して保護されたデータベースをリカバリする方法について説明します。
この章の構成は、次のとおりです。
保護されたデータベース全体、1つ以上のデータ・ファイル、または1つ以上の表領域をリカバリできます。保護されたデータベース内の特定のデータ・ブロックのみが破損している場合は、ブロック・リカバリを実行して破損ブロックのみを修復できます。リカバリ・アプライアンスを使用したリカバリの手順は、従来のRMAN環境で使用しているデータベースのリカバリの手順と同じです。主な違いは、リカバリ・アプライアンス・バックアップ・モジュールに対応するRMANチャネルを構成または割り当てることにより、リカバリ・アプライアンスをリカバリ・データのソースとして使用することです。
保護されたデーベースのリストアおよびリカバリには、Enterprise Manager Cloud Control (Cloud Control)またはRMANを使用できます。
Cloud Controlでは次の手法を使用して、保護されたデータベースをリカバリします。
Oracle推奨のリカバリでは、データ・リカバリ・アドバイザで推奨されている自動修復機能を使用して、保護されたデータベースをリカバリできます。データ・リカバリ・アドバイザを使用すると、データ障害の自動診断、影響の評価、ユーザーへの障害報告、適切な修復オプションの判別、およびユーザー・リクエストに応じた修復の実行が行われます。
関連項目:
Oracle推奨のリカバリを実行する方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
この手法では、指定の基準に基づいて手動リカバリを実行します。それには、リカバリする必要のあるオブジェクト(データベース、データ・ファイル、表領域、アーカイブREDOログ)、完全リカバリまたはPoint-in-Timeリカバリのどちらを実行するか、データベース・ファイルをリカバリする必要のある保存先などの情報を指定する必要があります。
関連項目:
ユーザー指示のリカバリを実行する方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
保護されたデータベースがターゲットのリカバリ・アプライアンスに登録されている必要があります。
リカバリ・プロセスに必要なバックアップがリカバリ・アプライアンスに格納されている必要があります。Point-in-Timeリカバリを実行する場合は、保護されたデータベースに定義されているリカバリ・ウィンドウ内の任意の時点にリカバリできます。
この項では、Oracle推奨のリカバリを使用して破損データ・ブロックをリカバリする方法について説明します。
破損データ・ブロックが原因で発生した障害からリカバリする手順:
この項の各例では、リストアおよびリカバリの一般的な実行例を示す操作手順について説明します。リカバリ・アプライアンスを使用したバックアップ操作の設定が保護されたデータベースで正しく構成されている場合は(「保護されたデータベースのバックアップおよびリカバリ設定の構成(コマンドライン)」を参照)、リカバリ操作にも同じ構成を使用できます。
リカバリ・アプライアンスを使用してリストアおよびリカバリ操作を行う場合、RMAN接続に使用する構文はRMANリカバリ・カタログへの通常の接続で使用するものと同じです。唯一の違いは、リカバリ・アプライアンス・カタログに接続してRMANチャネルを構成する点です(「リカバリ・アプライアンスのバックアップおよびリカバリ操作でのRMANチャネルの使用方法」を参照)。
関連項目:
データベースのリカバリ方法の詳細な説明は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
この項には次の例が含まれます:
リカバリ・アプライアンスに格納されているバックアップを使用して保護されたデータベースのリストアおよびリカバリを行う前に、次の前提条件を満たしていることを確認してください。
保護されたデータベースがターゲットのリカバリ・アプライアンスに登録されている必要があります。
これは、複数のリカバリ・アプライアンスを使用している場合、またはプライマリとスタンバイがそれぞれ別のリカバリ・アプライアンスにバックアップしているData Guard環境で重要です。
保護されたデータベースのリストアおよびリカバリに必要なバックアップがリカバリ・アプライアンスに格納されている必要があります。Point-in-Timeリカバリを実行する場合は、保護されたデータベースに定義されているリカバリ・ウィンドウ内の任意の時点にリカバリできます。
リカバリ・アプライアンスとの認証に使用する資格証明が格納されているOracleウォレットが、保護されたデータベースで構成されている必要があります。
リカバリ・アプライアンス・バックアップ・モジュールに対応するRMAN SBTチャネルを構成または割り当てます。この章の各例では、SBTチャネルがリカバリ・アプライアンスに構成されているものと仮定しています。
チャネル設定は永続設定なので、RMAN CONFIGURE
コマンドを使用して設定することをお薦めします。ただし、バックアップまたはリカバリ操作を実行するRUN
ブロック内でALLOCATE CHANNEL
コマンドを使用すれば、構成済のチャネルをオーバーライドできます。
リカバリ・アプライアンス・レプリケーションが構成されている場合、保護されたデータベースはアップストリーム・リカバリ・アプライアンスにバックアップを送信します。アップストリーム・リカバリ・アプライアンスはこれらのバックアップをダウンストリーム・リカバリ・アプライアンスに転送します。障害発生時にアップストリーム・リカバリ・アプライアンスが使用できない場合は、ダウンストリーム・リカバリ・アプライアンスを使用してリストア操作を実行できます。
関連項目:
レプリケーションの簡単な概要は、「保護されたデータベースとリカバリ・アプライアンスのアーキテクチャ」を参照してください
次の概要手順に従って、保護されたデータベースをダウンストリーム・リカバリ・アプライアンスから直接リストアします。
保護されたデータベースがダウンストリーム・リカバリ・アプライアンスとの認証に使用するVPCユーザーの資格証明が格納されるOracleウォレットを作成します。
注意:
リストア操作を実行する前に保護されたデータベースをダウンストリーム・リカバリ・アプライアンスに明示的に追加または登録する必要はありません。アップストリームとダウンストリームのリカバリ・アプライアンス間でレプリケーションが構成されている場合は、アップストリーム・リカバリ・アプライアンスに登録済の保護されたデータベースがダウンストリーム・リカバリ・アプライアンスに登録されます。
保護されたデータベースにはTARGET
として、ダウンストリーム・リカバリ・アプライアンス・カタログにはCATALOG
として接続します。
ダウンストリーム・リカバリ・アプライアンスに対応するRMAN SBTチャネルを割り当て、保護されたデータベースをMOUNT
モードに設定して、保護されたデータベースをリストアします。
これらの文はすべてRUN
ブロックで囲む必要があります(「例: 既存の現行制御ファイルを使用したデータベース全体のリストアおよびリカバリ」を参照)。
この例では、保護されたデータベース内の一部またはすべてのデータ・ファイルが損失または破損していると仮定します。ただし、制御ファイルは使用できます。
保護されたデータベース内のすべてのデータ・ファイルをリストアおよびリカバリする手順:
この例では、保護されたデータベースのPoint-in-Timeリカバリ(PITR)を実行する方法を示します。PITRは、保護されたデータベースを以前の日付に戻して、ユーザー・エラー(表の誤削除、間違った表の更新など)、メディア障害、またはデータベースのアップグレードの失敗からリカバリする場合に必要になることがあります。制御ファイルをリストアする必要があるのは、制御ファイルに構成変更(表領域の作成や削除など)があった場合のみです。SET UNTIL
句を使用して、保護されたデータベースをリカバリする必要のある目的の時間、SCN、またはログ順序を指定します。
保護されたデータベースでフラッシュバック・データベースが有効になっている場合は、この機能を使用して以前のPoint-in-Timeにリカバリすることもできます。
関連項目:
『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』
『Oracle Database Recovery Managerリファレンス』
保護されたデータベース全体(制御ファイルを含む)を特定のPoint-in-Timeにリストアおよびリカバリする手順:
この例では、制御ファイルのすべてのコピーが消失した後で、保護されたデータベースをリカバリする方法を示します。制御ファイルの複数のコピーを別々のディスク場所に作成しておくことを強くお薦めします。
保護されたデータベースの制御ファイルをリストアおよびリカバリする手順:
この例では、保護されたデータベース内の1つ以上の表領域を誤って削除または破損した後で、これらの表領域をリストアおよびリカバリする方法を示します。この例では、データベースが稼働中で、影響を受けた表領域のみをリストアするものと仮定します。
1つ以上の表領域をリストアおよびリカバリする手順:
この例では、誤って削除された、または破損したデータ・ファイルをリストアおよびリカバリする方法を示します。
保護されたデータベースのデータ・ファイルをリストアおよびリカバリする手順:
Oracle Database 12cリリース1で導入されたマルチテナント・アーキテクチャを使用すると、ユーザーが作成したゼロ(0)個以上のプラガブル・データベース(PDB)を含むマルチテナント・コンテナ・データベース(CDB)としてOracle Databaseを機能させることができます。Oracle Database 12cより前のOracleデータベースはすべて非CDBです。
CDBには、ルート、シード、ユーザーが作成したPDBなどのコンポーネントが含まれます。ルートには、共通ユーザーおよびOracle提供のメタデータ(Oracle提供のパッケージのソース・コードなど)が格納されます。シードは、新しいPDBの作成に使用できるテンプレートです。PDBは、Oracle Netクライアントに非CDBとして表示されるスキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトのポータブル・コレクションです。
この項では、PDBの様々なリストアおよびリカバリ・シナリオについて説明します。PDBのリストアおよびリカバリの手順は、非CDBのリストアおよびリカバリ操作で使用する手順と似ています。この項には次の例が含まれます:
この例では、保護されたデータベース内の1つ以上のPDBに対してPoint-in-Timeリカバリを実行する方法を示します。PDBをリカバリする必要のある目的の時点を指示するには、SET UNTIL
句を指定します。
PDBを特定のPoint-in-Timeにリストアおよびリカバリする手順:
PDB内のデータ・ファイルをリストアおよびリカバリする方法は、RMANを使用して任意のデータ・ファイルをリストアおよびリカバリする方法と似ています。この例では、PDB内のデータ・ファイルをリストアおよびリカバリする方法を示します。
PDBの特定のデータ・ファイルをリストアおよびリカバリする手順:
Oracle Real Application Clusters (Oracle RAC)環境でPDBをリストアおよびリカバリするプロセスは、Oracle RAC以外のプロセスに少し手順を追加したものです。この例では、Oracle RAC環境でPDBをリカバリする方法を示します。
Oracle RAC環境でPDBをリストアおよびリカバリする手順:
ブロック・メディア・リカバリを使用すると、データ・ファイルをオンラインにしたまま1つ以上の破損データ・ブロックをリカバリできます。この例では、ブロック・メディア・リカバリを実行して、1つ以上の破損データ・ブロックをリカバリする方法を示します。
関連項目:
『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』
破損データ・ブロックが存在することを示すには、次のいずれかの方法を使用します。
保護されたデータベースのアラート・ログに、1つ以上のブロックが破損していることを示す次のメッセージを追加します。
Sun Aug 17 09:34:48 2014 Hex dump of (file 2, block 16385) in trace file /u01/app/oracle/diag/rdbms/dbstress/dbstress/trace/dbstress_ora_9732.trc Corrupt block relative dba: 0x00004001 (file 2, block 16385) Fractured block found during backing up datafile Data in bad block: type: 6 format: 2 rdba: 0x00004001 last change scn: 0x0000.00a564c0 seq: 0x1 flg: 0x06 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x00000000 check value in block header: 0xd6dd computed block checksum: 0x58f7
RMANバックアップ中にブロック破損が検出された場合は、次のようなメッセージを表示します。
RMAN-08038: channel c3: starting piece 1 at 2014/08/17 09:34:43 RMAN-03009: failure of backup command on c1 channel at 08/17/2014 09:34:50 ORA-19566: exceeded limit of 0 corrupt blocks for file /SHARED1/ORADATA/DBF/dbstress/soe.dbf . . RMAN-03002: failure of backup plus archivelog command at 08/17/2014 09:35:55 RMAN-03009: failure of backup command on c1 channel at 08/17/2014 09:34:50 ORA-19566: exceeded limit of 0 corrupt blocks for file /SHARED1/ORADATA/DBF/dbstress/soe.dbf
保護されたデータベースの破損データ・ブロックをリストアおよびリカバリする手順:
リアルタイムREDOトランスポートを有効にすると、保護されたデータベースのリカバリ・ダウンタイムの最小化が保証されます。リアルタイムREDOトランスポートの詳細は、「リアルタイムREDOトランスポートについて」を参照してください。保護されたデータベースを記憶域障害の直後にリストアおよびリカバリする場合、メディア・リカバリでデータベースの状態を記憶域障害発生時に最も近い状態に戻すことができるよう、必要な完全アーカイブ・ログ・ファイルと不完全アーカイブ・ログ・ファイルがリストアおよびリカバリされます。
次の例では、リアルタイムREDOトランスポートを使用するように構成済の保護されたデータベースを、記憶域障害によってすべてのデータ・ファイルとオンラインREDOログ・ファイルが消失した後にリカバリします。リカバリ・アプライアンスにあるバックアップとREDOログを使用して、保護されたデータベースを最新のSCNまでリカバリするには、RC_DATABASE
ビューのFINAL_CHANGE#
列を使用します。FINAL_CHANGE#
列には、保護されたデータベースをその時点までリカバリする必要がある最新のSCNが格納されています。リカバリを実行する前に、このSCN値をSET UNTIL SCN
コマンドで使用します。リカバリは、リカバリ・アプライアンスにあるバックアップとREDOログのみを使用して実行されます。
注意:
次のシナリオでは、RC_DATABASE.FINAL_CHANGE#
に値-1が格納されるので、この値をSET UNTIL SCN
コマンドで使用することはできません。
保護されたデータベースのバージョンがOracle Database 11g (リリース11.1)以下の場合
リアルタイムREDOログ・データのリカバリ・アプライアンスへの送信時に、保護されたデータベースのCOMPATIBLE
パラメータが10.0以下に設定されていた場合
かわりに、V$ARCHIVED_LOG
ビューのNEXT_CHANGE#
列を使用して、保護されたデータベースをリカバリする必要のある目的のSCNを特定します。
詳細は、My Oracle Supportノート243760.1を参照してください。My Oracle Supportは、https://support.oracle.com
で利用可能です。
関連項目:
FINAL_CHANGE#
列の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
リアルタイムREDOトランスポートを使用するように構成済の保護されたデータベースをリストアおよびリカバリする手順:
保護されたデータベースを複製してスタンバイ・データベースを作成したり、保護されたデータベースをターゲット・ホストにクローニングする必要がある場合、リカバリ・アプライアンス・カタログへの接続、およびバックアップベースの複製の使用によってそれを実行できます。カタログの使用によって、ソース・データベースに接続する必要がなくなります。スタンバイ・データベースまたはクローンの作成のどちらにも、RMAN DUPLICATE
コマンドの実行が含まれます。
関連項目:
データベースの複製の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
DUPLICATE
コマンドの構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
リカバリ・アプライアンスからスタンバイ・データベースを作成するとき、スタンバイ(補助インスタンス)およびリカバリ・アプライアンス・カタログに接続し、FOR STANDBY
オプションを指定してRMAN DUPLICATE
コマンドを実行します。
注意:
プライマリ・データベースはすでにリカバリ・アプライアンス・カタログに登録されているため、スタンバイ・データベースをリカバリ・アプライアンス・カタログに登録しないでください。保護されたデータベースのスタンバイ・データベースを作成する手順:
次の例には、保護されたデータベースをクローニングするOracleのベスト・プラクティスが示され、シナリオにあわせてカスタマイズできるサンプル・スクリプトが含まれています。
ターゲット・データベースのバックアップがリカバリ・アプライアンスに存在し、補助インスタンスで使用できる。
補助データベースから、ターゲット・データベースのメタデータおよびバックアップを含むリカバリ・アプライアンスへのRMAN接続を使用できる。
ソース・データベースと複製データベースの両方で、Oracle Managed Files (OMF)を使用している。
オペレーティング・システムにLinuxまたはUNIXが使用されている。
補助データベースのホストに監査ディレクトリが作成されている。
バックアップベースの複製の要件が満たされている。
既存の補助データベースを削除する
ターゲット・データベースをバックアップする
ダミーの補助インスタンスを作成し、NOMOUNT
モードでオープンする
リカバリ・アプライアンスで使用できるターゲット・データベースのバックアップとメタデータを使用して、ターゲット・データベースを複製する
複製データベースの制御ファイルは+REDO/
ORACLE_SID
/CONTROLFILE/cf3.ctl
として保存され、データファイルは+DATA
ディレクトリ内に保存されます。
必要なオブジェクトが複製データベース内に作成されていることを確認する。
ターゲット接続なしでバックアップベースの複製を使用して保護されたデータベースをクローニングする手順: