Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

AzureクラウドでOracleデータベースを保護

共同作成者

NetAppソリューションエンジニアリング担当Allen Cao氏

このセクションでは、azacsnapツールを使用してOracleデータベースを保護し、Azure Blobに対してスナップショットのバックアップ、リストア、およびスナップショットの階層化を行う方法について説明します。

AzAcSnapツールを使用して、Oracleデータベースをスナップショットとともにバックアップします

Azure Application-consistent Snapshotツール(AzAcSnap)は、サードパーティデータベースのデータ保護を可能にするコマンドラインツールです。このツールでは、ストレージスナップショットを取得する前に、それらをアプリケーションと整合性のある状態にするために必要なすべてのオーケストレーションを処理し、データベースを運用状態に戻します。

Oracleの場合は、データベースをバックアップモードにしてSnapshotを作成し、データベースをバックアップモードから解除します。

バックアップデータとログボリューム

データベース・サーバ・ホストでは、snapshotコマンドを実行する単純なシェル・スクリプトを使用して、バックアップを設定できます。スクリプトは'crontabから実行するようにスケジュールできます

一般に、バックアップの頻度はRTOとRPOに左右されます。Snapshotを頻繁に作成すると、より多くのストレージスペースが消費されバックアップの頻度とスペース消費のどちらを重視するかで差はありません。

通常、データボリュームはログボリュームよりも多くのストレージスペースを消費します。したがって、数時間ごとにデータボリュームにSnapshotを作成し、ログボリュームには15~30分ごとにSnapshotを作成することができます。

バックアップスクリプトおよびスケジュールの例を次に示します。

データボリュームSnapshotの場合:

 # /bin/sh
cd /home/azacsnap/bin
. ~/.bash_profile
azacsnap -c backup --volume data --prefix acao-ora01-data --retention 36
azacsnap -c backup --volume other --prefix acao-ora01-log --retention 250

ログボリュームSnapshotの場合:

 # /bin/sh
cd /home/azacsnap/bin
. ~/.bash_profile
azacsnap -c backup --volume other --prefix acao-ora01-log --retention 250

crontabスケジュール:

15,30,45 * * * * /home/azacsnap/snap_log.sh
0 */2 * * * /home/azacsnap/snap_data.sh
メモ バックアップを設定する場合 azacsnap.json 構成ファイルで、バイナリボリュームを含むすべてのデータボリュームをに追加します dataVolume すべてのログボリュームをに追加します otherVolume。Snapshotの最大保持数は250個です。

Snapshotを検証します

Azure portal > Azure NetApp Files / volumesに移動して、Snapshotが正常に作成されているかどうかを確認します。

このスクリーンショットは、Snapshotリスト内の2つのファイルを示しています。
このスクリーンショットは、Snapshotリスト内の8つのファイルを示しています。

ローカルバックアップからのOracleのリストアとリカバリ

Snapshotバックアップには、ソースデータベースボリュームと共存できるという大きなメリットがあります。プライマリデータベースボリュームは、ほぼ瞬時にロールバックできます。

プライマリ・サーバ上のOracleのリストアとリカバリ

次の例は、同じOracleホストのAzureダッシュボードとCLIからOracleデータベースをリストアおよびリカバリする方法を示しています。

  1. リストアするデータベースにテストテーブルを作成します。

    [oracle@acao-ora01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 12 19:02:35 2022
    Version 19.8.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.8.0.0.0
    
    SQL> create table testsnapshot(
         id integer,
         event varchar(100),
         dt timestamp);
    
    Table created.
    
    SQL> insert into testsnapshot values(1,'insert a data marker to validate snapshot restore',sysdate);
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select * from testsnapshot;
    
     ID
    ----------
    EVENT
    --------------------------------------------------------------------------------
    DT
    ---------------------------------------------------------------------------
             1
    insert a data marker to validate snapshot restore
    12-SEP-22 07.07.35.000000 PM
  2. Snapshotバックアップのあとにテーブルを削除します。

    [oracle@acao-ora01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 13 14:20:22 2022
    Version 19.8.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.8.0.0.0
    
    SQL> drop table testsnapshot;
    
    Table dropped.
    
    SQL> select * from testsnapshot;
    select * from testsnapshot
                  *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit
    Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.8.0.0.0
  3. Azure NetApp Files ダッシュボードで、ログボリュームを最新の使用可能なSnapshotにリストアします。「ボリュームを元に戻す」を選択します。

    このスクリーンショットは、ANFダッシュボードに表示されるボリュームのSnapshotリバートの方法を示しています。

  4. ボリュームの復元を確認し、*復帰*をクリックして、ボリュームを使用可能な最新のバックアップに復元します。

    「よろしいですか?」スナップショットリバートのページです。

  5. データボリュームに対して同じ手順を繰り返し、リカバリするテーブルがバックアップに含まれていることを確認します。

    このスクリーンショットは、ANFダッシュボードに表示されるデータボリュームのSnapshotリバートの方法を示しています。

  6. ボリュームが復元されたことを再度確認し、[元に戻す]をクリックします。

    「よろしいですか?」データボリュームのSnapshotリバートに関するページ。

  7. 制御ファイルのコピーが複数ある場合は、それらの制御ファイルを再同期し、古い制御ファイルを使用可能な最新のコピーに置き換えます。

    [oracle@acao-ora01 ~]$ mv /u02/oradata/ORATST/control01.ctl /u02/oradata/ORATST/control01.ctl.bk
    [oracle@acao-ora01 ~]$ cp /u03/orareco/ORATST/control02.ctl /u02/oradata/ORATST/control01.ctl
  8. OracleサーバVMにログインしてsqlplusを使用してデータベースリカバリを実行してください。

    [oracle@acao-ora01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 13 15:10:17 2022
    Version 19.8.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area 6442448984 bytes
    Fixed Size                  8910936 bytes
    Variable Size            1090519040 bytes
    Database Buffers         5335154688 bytes
    Redo Buffers                7864320 bytes
    Database mounted.
    SQL> recover database using backup controlfile until cancel;
    ORA-00279: change 3188523 generated at 09/13/2022 10:00:09 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_43__22rnjq9q_.arc
    ORA-00280: change 3188523 for thread 1 is in sequence #43
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 3188862 generated at 09/13/2022 10:01:20 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_44__29f2lgb5_.arc
    ORA-00280: change 3188862 for thread 1 is in sequence #44
    ORA-00278: log file
    '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_43__22rnjq9q_.arc' no longer
    needed for this recovery
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 3193117 generated at 09/13/2022 12:00:08 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_45__29h6qqyw_.arc
    ORA-00280: change 3193117 for thread 1 is in sequence #45
    ORA-00278: log file
    '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_44__29f2lgb5_.arc' no longer
    needed for this recovery
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 3193440 generated at 09/13/2022 12:01:20 needed for thread 1
    ORA-00289: suggestion :
    /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_46_%u_.arc
    ORA-00280: change 3193440 for thread 1 is in sequence #46
    ORA-00278: log file
    '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_45__29h6qqyw_.arc' no longer
    needed for this recovery
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    Media recovery cancelled.
    SQL> alter database open resetlogs;
    
    Database altered.
    
    SQL> select * from testsnapshot;
    
      ID
    ----------
    EVENT
    --------------------------------------------------------------------------------
    DT
    ---------------------------------------------------------------------------
             1
    insert a data marker to validate snapshot restore
    12-SEP-22 07.07.35.000000 PM
    
    SQL> select systimestamp from dual;
    
     SYSTIMESTAMP
    ---------------------------------------------------------------------------
    13-SEP-22 03.28.52.646977 PM +00:00

この画面は、削除されたテーブルがローカルスナップショットバックアップを使用してリカバリされたことを示しています。