Noarchivelogモードのコールド-バックアップ戦略Oracle Database12C

データベースのシャットダウン後にファイルをコピーすることによ このタイプのバックアップは、オフラインバックアップとも呼ばれます。 コールド・バックアップを作成するときに、Oracle database12Cをnoarchivelogモードまたはarchivelogモードにすることができます。

dbaは、コールドバックアップをnoarchivelogモードでのデータベースのバックアップと同義であると考える傾向があります。 それは正しくありません。 Archivelogモードでデータベースのコールドバックアップを作成することができ、それは多くの店が採用するバックアップ戦略です。 Noarchivelogモードとarchivelogモードのデータベースとのコールドバックアップの違いについては、次のセクションで詳しく説明します。

Noarchivelogモードのデータベースのコールド-バックアップの作成

noarchivelogモードでOracle database12Cのコールド-バックアップを作成する主な理由の1つは、データベースを過去のある時点 このタイプのバックアップは、バックアップ後に発生したトランザクションを回復する必要がない場合にのみ使用する必要があります。 このタイプのバックアップおよびリカバリ戦略は、ビジネス要件でデータの損失とダウンタイムが許容される場合にのみ許容されます。 運用ビジネスデータベースにこの種のバックアップと回復ソリューションを実装することはほまれです。

そうは言っても、このタイプのバックアップを実装するにはいくつかの正当な理由があります。 一般的な用途の1つは、開発/テスト/トレーニングデータベースのコールドバックアップを作成し、データベースを定期的にベースラインにリセットすることです。 これにより、パフォーマンステストまたはトレーニングセッションを、データベースの同じポイントインタイムスナップショットで再起動できます。

画像

イメージ

ヒントFlashback Database機能を使用して、データベースを過去のある時点に戻すことを検討してください。この項の例では、データベース内のすべての重要なファイル(すべての制御ファイル、データファイル、一時データファイルおよびオンラインredoログ・ファイル) このタイプのバックアップを使用すると、バックアップが作成された時点にデータベースを簡単に復元できます。 このアプローチの主な利点は、概念的にシンプルで実装が簡単であることです。 Noarchivelogモードでのデータベースのコールドバックアップに必要な手順は次のとおりです:

  1. バックアップファイルをコピーする場所と必要な領域を決定します。
  2. コピーするデータベースファイルの場所と名前を指定します。
  3. IMMEDIATE句、TRANSACTIONAL句、またはNORMAL句を使用してデータベースをシャットダウンします。
  4. ファイル(手順2で識別)をバックアップの場所(手順1で決定)にコピーします。
  5. Oracle database12Cを再起動します。.

次のセクションでは、これらの手順について詳しく説明します。

ステップ1。 バックアップファイルをコピーする場所と必要な領域を決定する

理想的には、バックアップの場所は、ライブデータファイルの場所とは別のディスクのセット上にある必要があります。 ただし、多くのショップでは、選択の余地がなく、データベースで使用するマウントポイントがわからない場合があります。 この例では、バックアップの場所はディレクトリ/u01/cbackup/O12Cです。 バックアップのコピーを1つ保存するために必要な容量を大まかに把握するには、次のクエリを実行します:

select sum(sum_bytes)/1024/1024 m_bytesfrom(select sum(bytes) sum_bytes from v$datafileunionselect sum(bytes) sum_bytes from v$tempfileunionselect (sum(bytes) * members) sum_bytes from v$loggroup by members);

Linux/Unix df(disk free)コマンドを使用すると、使用可能な動作ディスク領域の量を確認できます。 OSで使用可能なディスク領域の量が、前のクエリから返された合計よりも大きいことを確認してください:

$ df -h

ステップ2. コピーするデータベースファイルの場所と名前を特定する

このクエリを実行して、noarchivelogモードデータベースのコールドバックアップに含まれるファイルの名前(および:

select name from v$datafileunionselect name from v$controlfileunionselect name from v$tempfileunionselect member from v$logfile;

オンラインredoログのバックアップ(またはしない)

オンラインredoログをバックアップする必要がありますか。 任意のタイプのバックアップの一部として、オンラインredoログをバックアップする必要はありません。 次に、dbaがコールドバックアップの一部としてオンラインredoログをバックアップするのはなぜですか。 その理由の1つは、noarchivelogモードのシナリオの復元プロセスが少し簡単になることです。 通常の方法でデータベースを開くには、オンラインredoログが必要です。すべてのファイル(オンラインredoログを含む)をバックアップする場合、Oracle database12Cをバックアップ時の状態に戻すには、すべてのファイル(オンラインredo

ステップ3。 データベースのシャットダウン

SYS(またはSYSDBA特権ユーザー)としてデータベースに接続し、IMMEDIATE、TRANSACTIONAL、またはNORMALを使用してデータベースをシャットダウンします。 ほとんどすべての状況で、IMMEDIATEを使用することが推奨される方法です。 このモードは、ユーザーを切断し、不完全なトランザクションをロールバックし、データベースをシャットダウンします:

$ sqlplus / as sysdbaSQL> shutdown immediate;

ステップ4. ファイルのバックアップコピーの作成

手順2で識別されたすべてのファイルについて、OSユーティリティを使用してファイルをバックアップディレク この単純な例では、すべてのデータファイル、制御ファイル、一時データベース・ファイル、およびオンラインredoログが同じディレクトリにあります。 運用環境では、ファイルが複数の異なるディレクトリに分散される可能性が最も高いでしょう。 この例では、Linux/Unixのcpコマンドを使用して、データベース・ファイルを/u01/dbfile/O12Cから/u01/cbackup/O12Cディレクトリにコピーします:

$ cp /u01/dbfile/O12C/*.* /u01/cbackup/O12C

ステップ5. データベースを再起動する

すべてのファイルがコピーされたら、データベースを起動できます:

$ sqlplus / as sysdbaSQL> startup;

オンラインRedoログを使用したNoarchivelogモードでのコールドバックアップの復元

次の例では、noarchivelogモードでデータベースのコールドバックアップから復元する方法を説明し コールドバックアップの一部としてオンラインredoログを含めた場合は、ファイルを復元するときにそれらを含めることができます。 この手順に必要な手順は次のとおりです:

  1. インスタンスをシャットダウンします。
  2. データファイル、オンラインredoログ、一時ファイル、および制御ファイルをバックアップからライブ・データベース・データファイルの場所にコピーします。
  3. データベースを起動します。

これらの手順については、以下のセクションで詳しく説明します。

ステップ1。 インスタンスをシャットダウンする

インスタンスが実行中の場合は、インスタンスをシャットダウンします。 このシナリオでは、(トランザクションのリカバリなしで)ある時点に復元しているため、Oracle database12Cをどのようにシャットダウンするかは関係ありません。 ライブデータベースディレクトリの場所にあるすべてのファイルは、バックアップファイルがコピーされたときに上書きされます。 インスタンスが実行中の場合は、突然中止することができます。 SYSDBA特権ユーザーとして、次の操作を行います:

$ sqlplus / as sysdbaSQL> shutdown abort;

ステップ2. バックアップからファイルをコピーする

この手順では、バックアップの逆を行います。 この例では、すべてのバックアップファイルが/u01/cbackup/O12cディレクトリにあり、すべてのファイルが/u01/dbfile/O12Cディレクトリにコピーされていま:

$ cp /u01/cbackup/O12C/*.* /u01/dbfile/O12C

ステップ3. データベースを起動します

SYS(またはSYSDBA権限を持つユーザー)としてデータベースに接続し、データベースを起動します:

$ sqlplus / as sysdbaSQL> startup;

これらの手順を完了したら、コールドバックアップを作成したときと同じように、データベースの正確なコピーを作成する必要があります。 バックアップを作成した時点にデータベースを設定したかのようです。

オンラインRedoログなしのNoarchivelogモードでのコールド-バックアップの復元

前述のように、コールド-バックアップから復元するときにオンラインredoログは必要あり Noarchivelogモードでデータベースのコールドバックアップを作成し、バックアップの一部としてオンラインredoログを含めなかった場合、復元する手順は前の項の手順と 主な違いは、最後のステップでOPEN RESETLOGS句を使用してデータベースを開く必要があることです。 手順は次のとおりです:

  1. インスタンスをシャットダウンします。
  2. バックアップから制御ファイルとデータファイルをコピーします。
  3. データベースをマウントモードで起動します。
  4. OPEN RESETLOGS句を使用してデータベースを開きます。

ステップ1。 インスタンスをシャットダウンする

インスタンスが実行中の場合は、インスタンスをシャットダウンします。 このシナリオでは、ある時点に復元しているため、Oracle database12Cをどのようにシャットダウンするかは関係ありません。 ライブデータベースディレクトリの場所にあるファイルは、バックアップがコピーされると上書きされます。 インスタンスが実行中の場合は、突然中止することができます。 SYSDBA特権ユーザーとして、次の操作を行います:

$ sqlplus / as sysdbaSQL> shutdown abort;

ステップ2. バックアップからファイルをコピーする

バックアップの場所からライブデータファイルの場所に制御ファイルとデータファイルをコピーします:

$ cp <backup directory>/*.* <live database file directory>

ステップ3. マウント-モードでのデータベースの起動

SYSまたはSYSDBA権限を持つユーザーとしてデータベースに接続し、マウント-モードでデータベースを起動します:

$ sqlplus / as sysdbaSQL> startup mount

ステップ4. OPEN RESETLOGS句を使用してデータベースを開きます

OPEN RESETLOGS句で使用するためにデータベースを開きます:

SQL> alter database open resetlogs;

Database alteredメッセージが表示された場合、コマンドは正常に実行されました。 ただし、このエラーが表示されることがあります:

ORA-01139: RESETLOGS option only valid after an incomplete database recovery

この場合は、次のコマンドを発行します:

SQL> recover database until cancel;

このメッセージが表示されます:

Media recovery complete.

次に、OPEN RESETLOGS句を使用してデータベースを開こうとします:

SQL> alter database open resetlogs;

この文は、オンラインredoログを再作成するようにOracleに指示します。 Oracleでは、redoログの配置、名前、およびサイズの制御ファイル内の情報が使用されます。 これらの場所に古いオンラインredoログ・ファイルがある場合、それらは上書きされます。

あなたの警告を監視している場合。このプロセス全体でログに記録されると、ORA-00312およびORA-00313が表示されることがあります。 これらのファイルは、OPEN RESETLOGSコマンドによって再作成されるまで物理的に使用できないため、これは問題ありません。

コールドバックアップのスクリプトと復元

コールドバックアップのスクリプトを作成する方法を表示する方法について説明します。 基本的な考え方は、データディクショナリを動的にクエリして、バックアップするファイルの場所と名前を決定することです。 これは、スクリプト内のディレクトリの場所とファイル名をハードコーディングするのに適しています。 スクリプトを動的に生成すると、エラーや驚きが発生しにくくなります(たとえば、新しいデータファイルをデータベースに追加しますが、古いハードコードされたバ

画像

イメージ

注このセクションのスクリプトは、本番環境でのバックアップおよび回復スクリプトではありません。 むしろ、コールドバックアップとその後の復元のスクリプト作成の基本的な概念を説明しています。

このセクションの最初のスクリプトは、データベースのコールドバックアップを作成します。 コールドバックアップスクリプトを使用する前に、データベース環境に合わせてスクリプト内のこれらの変数を変更する必要があります:

  • ORACLE_SID
  • ORACLE_HOME
  • cbdir

cbdir変数は、バックアップディレクトリの場所の名前を指定します。 このスクリプトはcoldbackという名前のファイルを作成します。データベースのコールドバックアップを開始するためにSQL*Plusから実行されるsql:

#!/bin/bashORACLE_SID=O12CORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1PATH=$PATH:$ORACLE_HOME/bin#sqlplus -s <<EOF/ as sysdbaset head off pages0 lines 132 verify off feed off trimsp ondefine cbdir=/u01/cbackup/O12Cspo coldback.sqlselect 'shutdown immediate;' from dual;select '!cp ' || name || ' ' || '&&cbdir' from v$datafile;select '!cp ' || name || ' ' || '&&cbdir' from v$tempfile;select '!cp ' || member || ' ' || '&&cbdir' from v$logfile;select '!cp ' || name || ' ' || '&&cbdir' from v$controlfile;select 'startup;' from dual;spo off;@@coldback.sqlEOFexit 0

このファイルは、Oracle databaseのコールド・バックアップを作成するためにSQL*Plusスクリプトから実行されるコマンドを生成します。 あなたは感嘆符を置く(!)unixのcpコマンドの前で、sql*Plusがosにホストしてcpコマンドを実行するように指示します。 また、V data dataディクショナリビューを参照するときは、各ドル記号(.)の前にバックスラッシュ(\)を配置します。 \はescをエスケープし、shellを特殊文字として扱わないようにシェルスクリプトに指示します($は通常シェル変数を意味します)。

このスクリプトを実行した後、coldbackに書き込まれたcopyコマンドのサンプルを次に示します。sqlスクリプト:

shutdown immediate;!cp /u01/dbfile/O12C/system01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/sysaux01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/undotbs01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/users01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/tools01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/temp01.dbf /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo02a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo02b.rdo /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo01a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo01b.rdo /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo03a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo03b.rdo /u01/cbackup/O12C!cp /u01/dbfile/O12C/control01.ctl /u01/cbackup/O12C!cp /u01/dbfile/O12C/control02.ctl /u01/cbackup/O12Cstartup;

コールドバックアップを作成するときは、データファイル、一時ファイル、ログファイル、および制御ファイルを元の場所にコピーするコマンドを提供す このスクリプトを使用して、コールドバックアップから復元できます。 このセクションの次のスクリプトでは、coldrestを動的に作成します。バックアップの場所から元のデータファイルの場所にファイルをコピーするsqlスクリプト。 このスクリプトは、コールドバックアップスクリプトを変更したのと同じ方法で変更する必要があります(つまり、環境に合わせてORACLE_SID、ORACLE_HOMEおよびcbdir変:

#!/bin/bashORACLE_SID=O12CORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1PATH=$PATH:$ORACLE_HOME/bin#sqlplus -s <<EOF/ as sysdbaset head off pages0 lines 132 verify off feed off trimsp ondefine cbdir=/u01/cbackup/O12Cdefine dbname=$ORACLE_SIDspo coldrest.sqlselect 'shutdown abort;' from dual;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$datafile;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$tempfile;select '!cp ' || '&&cbdir/' || substr(member, instr(member,'/',-1,1)+1) || ' ' || member from v$logfile;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$controlfile;select 'startup;' from dual;spo off;EOFexit 0

このスクリプトは、coldrestという名前のスクリプトを作成します。データファイル、一時ファイル、ログファイル、および制御ファイルを元の場所に復元するためのcopyコマンドを生成するsql。 このシェルスクリプトを実行した後、coldrestのコードのスニペットを次に示します。sqlファイル:

shutdown abort;!cp /u01/cbackup/O12C/system01.dbf /u01/dbfile/O12C/system01.dbf!cp /u01/cbackup/O12C/sysaux01.dbf /u01/dbfile/O12C/sysaux01.dbf!cp /u01/cbackup/O12C/undotbs01.dbf /u01/dbfile/O12C/undotbs01.dbf!cp /u01/cbackup/O12C/users01.dbf /u01/dbfile/O12C/users01.dbf!cp /u01/cbackup/O12C/tools01.dbf /u01/dbfile/O12C/tools01.dbf...!cp /u01/cbackup/O12C/redo03b.rdo /u02/oraredo/O12C/redo03b.rdo!cp /u01/cbackup/O12C/control01.ctl /u01/dbfile/O12C/control01.ctl!cp /u01/cbackup/O12C/control02.ctl /u01/dbfile/O12C/control02.ctlstartup;

このスクリプトを使用してコールド・バックアップからリストアする必要がある場合は、SYSとしてSQL*Plusにログインし、スクリプトを実行します:

$ sqlplus / as sysdbaSQL> @coldrest.sql

Вас заинтересует|あなたのためにIntresting:

Oracle Database12C Oの管理..

Oracle Database12C Oの管理.. 再生回数:4931回/月29日(土)再生回数:4931回2020, 10:18:11

ホットバックアップStraを実装します。..

.. 再生回数:6414回/月29日(土)再生回数:6414回2020, 10:16:34

Oracle12cテーブル・タイプの一致。..

Oracle12cテーブル-タイプに一致します。.. 再生回数:1786回/月18日再生回数:1786回/月18日2018, 16:59:35

Oracleデータベースの停止1...

Oracleデータベースの停止1… 再生回数976回/月29日(土)再生回数976回/月2020, 10:19:28

コメントを残す

メールアドレスが公開されることはありません。