ストレージSnapshotで最適化されたバックアップ
Oracle 12cがリリースされた時点では、データベースをホットバックアップモードにする必要がないため、Snapshotベースのバックアップとリカバリはさらにシンプルになりました。そのため、Snapshotベースのバックアップをストレージシステム上で直接スケジュール設定しても、完全なリカバリやポイントインタイムリカバリを引き続き実行できます。
データベース管理者にとってはホットバックアップリカバリの手順の方がなじみがありますが、データベースがホットバックアップモードのときに作成されなかったSnapshotを使用することは以前から可能でした。Oracle 10gおよび11gでは、データベースの整合性を維持するために、リカバリ時に手動で追加の手順を実行する必要がありました。Oracle 12cでは、 sqlplus
および rman
ホットバックアップモードではないデータファイルバックアップでアーカイブログを再生するための追加ロジックが含まれています。
前述したように、スナップショットベースのホットバックアップをリカバリするには、次の2セットのデータが必要です。
-
バックアップモードで作成されたデータファイルのSnapshot
-
データファイルがホットバックアップモードのときに生成されたアーカイブログ
リカバリ中、データベースはデータファイルからメタデータを読み取り、リカバリに必要なアーカイブログを選択します。
ストレージSnapshotを最適化したリカバリでは、同じ結果を達成するために必要なデータセットがわずかに異なります。
-
データファイルのSnapshot、およびSnapshotが作成された時刻を識別する方法
-
最新のデータファイルチェックポイントの時刻からSnapshotの正確な時刻までのログをアーカイブします。
リカバリ中、データベースはデータファイルからメタデータを読み取り、必要な最も古いアーカイブログを特定します。フルリカバリまたはポイントインタイムリカバリを実行できます。ポイントインタイムリカバリを実行する場合は、データファイルのSnapshotの時刻を把握することが重要です。指定したリカバリポイントは、Snapshotの作成時刻以降である必要があります。NetAppでは、クロックの変動を考慮して、スナップショット時間に少なくとも数分を追加することを推奨しています。
詳細については、Oracle 12cの各種ドキュメントで「Recovery Using Storage Snapshot Optimization」のトピックを参照してください。また、Oracleサードパーティ製スナップショットのサポートについては、OracleのドキュメントID Doc ID 604683.1を参照してください。
データレイアウト
最も簡単なレイアウトは、データファイルを1つ以上の専用ボリュームに分離する方法です。これらのファイルは、他のファイルタイプによって汚染されていない必要があります。これは、重要なREDOログ、制御ファイル、またはアーカイブログを削除することなく、SnapRestore処理でデータファイルボリュームを迅速にリストアできるようにするためです。
SANでは、専用ボリューム内でのデータファイルの分離についても同様の要件があります。Microsoft Windowsなどのオペレーティングシステムでは、1つのボリュームに複数のデータファイルLUNが含まれ、それぞれにNTFSファイルシステムが配置される場合があります。他のオペレーティング・システムでは'通常'論理ボリューム・マネージャも使用されますたとえば、Oracle ASMでは、ディスクグループを1つのボリュームに限定し、1つのボリュームとしてバックアップおよびリストアできるようにするのが最も簡単なオプションです。パフォーマンスまたは容量管理のために追加のボリュームが必要な場合は、新しいボリュームに追加のディスクグループを作成すると、管理が容易になります。
これらのガイドラインに従うと、整合性グループSnapshotを実行することなく、ONTAPで直接Snapshotをスケジュールできます。これは、Snapshotで最適化されたバックアップでは、データファイルを同時にバックアップする必要がないためです。
ASMディスクグループが複数のボリュームに分散されている場合は、複雑な問題が発生します。このような場合は、cg-snapshotを実行して、すべてのコンスティチュエントボリュームでASMメタデータの整合性を確保する必要があります。
[注] ASM spfileファイルとpasswdファイルが、データファイルをホストしているディスクグループにないことを確認します。これにより、データファイルのみを選択してリストアすることができなくなります。
ローカルリカバリ手順—NFS
この手順は、手動で実行することも、SnapCenterなどのアプリケーションを使用して実行することもできます。基本的な手順は次のとおりです。
-
データベースをシャットダウンします。
-
目的のリストアポイントの直前に、データファイルボリュームをSnapshotにリカバリします。
-
アーカイブログを目的のポイントまで再生します。
この手順では、目的のアーカイブログがアクティブファイルシステムにまだ存在していることを前提としています。サポートされていない場合は、アーカイブログをリストアする必要があります。または、 rman
または sqlplus
のデータに転送できます。 .snapshot
ディレクトリ。
また、小規模なデータベースの場合は、エンドユーザがデータファイルを .snapshot
SnapRestoreコマンドを実行するための自動化ツールやストレージ管理者の支援がないディレクトリ。
ローカルリカバリ手順—SAN
この手順は、手動で実行することも、SnapCenterなどのアプリケーションを使用して実行することもできます。基本的な手順は次のとおりです。
-
データベースをシャットダウンします。
-
データファイルをホストしているディスクグループを休止します。手順は、選択した論理ボリュームマネージャによって異なります。ASMでは、このプロセスでディスクグループをディスマウントする必要があります。Linuxでは、ファイルシステムをディスマウントし、論理ボリュームとボリュームグループを非アクティブ化する必要があります。目的は、リストア対象のターゲットボリュームグループに対するすべての更新を停止することです。
-
目的のリストアポイントの直前に、データファイルディスクグループをSnapshotにリストアします。
-
新しくリストアしたディスクグループを再アクティブ化します。
-
アーカイブログを目的のポイントまで再生します。
この手順では、目的のアーカイブログがアクティブファイルシステムにまだ存在していることを前提としています。サポートされていない場合は、アーカイブログLUNをオフラインにしてリストアを実行し、アーカイブログをリストアする必要があります。この例では、アーカイブログを専用ボリュームに分割すると便利です。アーカイブログがRedoログとボリュームグループを共有している場合は、記録された最終的なトランザクションが失われないように、LUNセット全体のリストア前にRedoログを別の場所にコピーする必要があります。
フルリカバリの例
データファイルが破損または破壊されており、完全なリカバリが必要であると仮定します。そのための手順は次のとおりです。
[oracle@host1 ~]$ sqlplus / as sysdba Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size 2924928 bytes Variable Size 1040191104 bytes Database Buffers 553648128 bytes Redo Buffers 13848576 bytes Database mounted. SQL> recover automatic; Media recovery complete. SQL> alter database open; Database altered. SQL>
ポイントインタイムリカバリの例
リカバリ手順全体は1つのコマンドで実行できます。 recover automatic
。
ポイントインタイムリカバリが必要な場合は、Snapshotのタイムスタンプがわかっている必要があり、次のように特定できます。
Cluster01::> snapshot show -vserver vserver1 -volume NTAP_oradata -fields create-time vserver volume snapshot create-time -------- ------------ --------- ------------------------ vserver1 NTAP_oradata my-backup Thu Mar 09 10:10:06 2017
Snapshotの作成時間は3月9日と10:10:06と表示されます。安全のために、Snapshotの時刻に1分が追加されます。
[oracle@host1 ~]$ sqlplus / as sysdba Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size 2924928 bytes Variable Size 1040191104 bytes Database Buffers 553648128 bytes Redo Buffers 13848576 bytes Database mounted. SQL> recover database until time '09-MAR-2017 10:44:15' snapshot time '09-MAR-2017 10:11:00';
リカバリが開始されました。スナップショット時間は記録された時間の1分後の10:11:00、目標復旧時間は10:44と指定されています。次に、sqlplusは目的のリカバリ時間(10:44)に到達するために必要なアーカイブログを要求します。
ORA-00279: change 551760 generated at 03/09/2017 05:06:07 needed for thread 1 ORA-00289: suggestion : /oralogs_nfs/arch/1_31_930813377.dbf ORA-00280: change 551760 for thread 1 is in sequence #31 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 552566 generated at 03/09/2017 05:08:09 needed for thread 1 ORA-00289: suggestion : /oralogs_nfs/arch/1_32_930813377.dbf ORA-00280: change 552566 for thread 1 is in sequence #32 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 553045 generated at 03/09/2017 05:10:12 needed for thread 1 ORA-00289: suggestion : /oralogs_nfs/arch/1_33_930813377.dbf ORA-00280: change 553045 for thread 1 is in sequence #33 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 753229 generated at 03/09/2017 05:15:58 needed for thread 1 ORA-00289: suggestion : /oralogs_nfs/arch/1_34_930813377.dbf ORA-00280: change 753229 for thread 1 is in sequence #34 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} Log applied. Media recovery complete. SQL> alter database open resetlogs; Database altered. SQL>
Snapshotを使用してデータベースを完全にリカバリするには、 recover automatic コマンドには特定のライセンスは不要ですが、を使用してポイントインタイムリカバリを実行できます。 snapshot time Oracle Advanced Compressionのライセンスが必要です。
|