Oracle バックアップモード 確認

Oracle Database のバックアップに使用するスクリプトを作成できます。バックアップを実行するためにデータベースを停止する必要はありません。データベースがアーカイブ ログ モードであることを確認します。アーカイブ ログ モードでない場合は、データベースをバックアップする前に、アーカイブ ログ モードに変更します。Oracle Database をバックアップするには、以下の 2 つのスクリプトを作成します。

  • pre-db-backup-mode.sh - このスクリプトは、データベース全体をバックアップ モードに保持します。
  • post-db-backup-mode.sh - このスクリプトは、バックアップ モードからデータベースを削除します。

実行するスクリプトは、バックアップ ウィザードの[実行前/後スクリプトの設定]にある[Oracle Database]ノードで指定できます。

以下の手順に従います。

  1. root ユーザとしてバックアップ サーバにログインします。
  2. 以下のコードを使用して pre-db-backup-mode.sh スクリプトを作成します。

    #!/bin/bash

    orauser="oracle"

    orasid="orcl"

    su - ${orauser}   << BOF 2>&1

    export ORACLE_SID=$orasid

    sqlplus /nolog << EOF 2>&1

    connect / as sysdba

    alter database begin backup;

    exit;

    EOF

    BOF

    注:ご使用の Oracle Database で定義されている orauser および orasid 変数の値を指定します。

  3. 以下のコードを使用して post-db-backup-mode.sh スクリプトを作成します。

    #!/bin/bash

    orauser="oracle"

    orasid="orcl"

    su - ${orauser}   << BOF 2>&1

    export ORACLE_SID=$orasid

    sqlplus /nolog << EOF 2>&1

    connect / as sysdba

    alter database end backup;

    exit;

    EOF

    BOF

    注:ご使用の Oracle Database で定義されている orauser および orasid 変数の値を指定します。

  4. 両方のスクリプトに実行権限を付与します。
  5. 両方のスクリプトを以下の場所に配置します。

    /opt/Arcserve/d2dserver/usr/prepost/

  1. Arcserve UDP エージェント(Linux) Web インターフェースにログインします。
  2. バックアップ ウィザードを開いて、[拡張]タブに移動します。
  3. 実行前/後スクリプトの設定]オプションで、[スナップショットの取得前]ドロップダウン リストから pre-db-backup-mode.sh スクリプト ファイルを選択します。
  4. 実行前/後スクリプトの設定]オプションで、[スナップショットの取得後]ドロップダウン リストから post-db-backup-mode.sh スクリプト ファイルを選択します。
  5. バックアップ ジョブをサブミットします。

    バックアップ ジョブがサブミットされます。

Oracle Database をバックアップするスクリプトが作成されました。

注:Arcserve UDP エージェント(Linux) はボリューム レベルのスナップショットをサポートしています。データの整合性を保証するには、データベースのすべてのデータ ファイルが 1 つのボリューム上に存在する必要があります。

Oracle データベースをリストアするには、「Arcserve UDP エージェント(Linux) を使用して Oracle データベースをリストアする方法」を参照してください。


Copyright © 2018. All rights reserved.

このページを評価するこのページのコンテンツは役に立ちました。 強く反対する 12345 強く同意する このページに関する評価と任意のコメントを送信する

本ページではOSコマンドを用いたオンライン、オフラインバックアップ手順をそれぞれ記載します。

オフラインバックアップの場合

1 DBをabort以外のオプションで停止します。

SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

2 OSコマンドで以下のファイルをコピーします。
- データファイル
- 制御ファイル
- redoログ

$ cp /app/oracle/oradata/ORCL102/system01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/undotbs01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/sysaux01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/users01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/control.ctl /bk/
$ cp /app/oracle/oradata/ORCL102/redo01.log /bk/
$ cp /app/oracle/oradata/ORCL102/redo02.log /bk/
$ cp /app/oracle/oradata/ORCL102/redo03.log /bk/

上記のファイルパスは以下のSQLの結果で確認することができます。

SQL> SELECT NAME FROM V$DATAFILE;
SQL> SELECT NAME FROM V$CONTROLFILE;
SQL> SELECT NAME FROM V$TEMPFILE;
SQL> SELECT MEMBER FROM V$LOGFILE;

オンラインバックアップの場合

1 オンラインバックアップモードに変更します。
以下の例ではデータベース全体をバックアップモードに変更していますが表領域の単位でも可能です。

SQL> alter database begin backup;

Database altered.

2 OSコマンド(Windowsの場合はocopyツール)で以下のファイルをコピーします。
- データファイル
- redoログ

$ cp /app/oracle/oradata/ORCL102/system01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/undotbs01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/sysaux01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/users01.dbf /bk/
$ cp /app/oracle/oradata/ORCL102/redo01.log /bk/
$ cp /app/oracle/oradata/ORCL102/redo02.log /bk/
$ cp /app/oracle/oradata/ORCL102/redo03.log /bk/

- 制御ファイル
ALTER DATABASE BACKUP CONTROLFILEコマンドでバックアップするほか、念のため TO TRACE 指定で取得できる制御ファイルの作成文も取得しておいたほうが望ましいです。 なお、TO TRACEで出力される制御ファイルの作成文はSQLを実行したサーバプロセスのトレースに出力されます。

SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/bk/control.ctl';
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

3 オンラインバックアップモードを解除します

SQL>  alter database end backup;

Database altered.

※表領域単位でオンラインバックアップモードに変更する場合は最初に制御ファイルのバックアップを取得し、1と3のalter database をalter tablespace に読み替えて各表領域毎に1~3を繰り返します。

SQL> alter tablespace <表領域名> begin backup;

Database altered.
SQL> alter tablespace <表領域名> end backup;

Tablespace altered.

オンラインの読取り/書込み表領域のユーザー管理バックアップの作成

表領域がオンラインで、データベースがオープンしているときに、データファイルのユーザー管理バックアップを作成するには、読取り/書込み表領域をバックアップ・モードに設定する必要があります。 ALTER TABLESPACE ... BEGIN BACKUP 文を使用すると、表領域をバックアップ・モードに設定できます。 バックアップ・モードでは、変更されたデータ・ブロック全体がREDOストリームにコピーされます。 ユーザーがALTER TABLESPACE ... END BACKUPまたはALTER DATABASE END BACKUP文を使用して表領域のバックアップ・モードを終了すると、データファイル・チェックポイントSCNが現在のデータファイル・チェックポイントSCNまで進みます。

この方法でバックアップされたデータファイルをリストアすると、リカバリが必要な場合は、REDOログ・ファイルの適切なセットを適用するように求められます。 REDOログには、データファイルをリカバリし、データファイルを一貫性のある状態にするために必要なすべての変更が含まれています。

ユーザー管理データベース・バックアップの作成

Oracle使いへの王道 (DB SELECTION) P.341

オフラインバックアップの仕組み
(中略)

  1. バックアップする表領域をバックアップモードに変更します。オンラインバックアップ中でも、データベースライターによるデータファイルへの書き出しは停止されません。
  2. チェックポイントが完了したときにデータファイルチェックポイントヘッダーに書き込まれるチェックポイント情報は、通常とは別の場所に書き込まれます。
  3. データベースライターによるデータファイルへの書き出しは停止しないので、データベースライターとOSのコピーコマンドが同時に同一ブロックにアクセスする可能性があります。同時にアクセスした場合、バックアップしたファイルの1つのブロックには、チェックポイント前とチェックポイント完了後のデータが混在することになります。これはOracleのI/Oブロックサイズと、OSのコピーコマンドのI/Oブロックサイズが異なるためです。このように1つのブロックにチェックポイント前後のデータが混在することは、本来想定していないので正しくリカバリできません。そこでバックアップモードを導入し、通常は、変更した列データだけを保存しているREDOログに、変更したブロック全体を保存することでブックレベルの一貫性を保ち、正常なリカバリを実現しています。ただしバックアップモード中は、変更を加えたデータファイルのブロック全体がREDOログに保存されるので、生成されるREDOログの量が増大します。
  • バックアップモードにすると、
    • データファイルヘッダーのチェックポイントSCNが更新されなくなる。
    • REDOログに変更したブロック全体が保存されるようになる。
  • バックアップモードを終了すると、
    • データファイルヘッダーのチェックポイントSCNが最新のチェックポイントまで進む。
    • REDOログには変更した列データのみが保存されるようになる。

従って、オンラインバックアップで取得したバックアップからリストア・リカバリする場合、リストアされたデータファイルのヘッダーのチェックポイントSCNより後の変更をアーカイブログを使ってブロック単位で変更を適用していき、バックアップモードが終了した後はブロック単位ではなく列データ単位で変更が適用されていき、直近までリカバリする場合は、アーカイブログによる変更を全て適用して、オンラインREDOログによる変更を適用して、最後にUNDO表領域のUNDOデータを使って、commit されていないデータをロールバックするという流れになります。
ちなみにUNDO表領域はリストア後にアーカイブログとオンラインREDOログによって変更が適用され、最新の状態になり、その最新のUNDO表領域のUNDOデータを使ってロールバックが行われます。