Backup and DR Service 用に Oracle データベースを準備する

始める前に、Oracle 用 Backup and DR サービスを確認することをおすすめします。

Oracle データベースをバックアップする前に、Oracle サーバーをホストとして Backup and DR サービスに追加する必要があります。これを機能させるには、Oracle データベースのバックアップの前提条件を参照し、次の準備手順に沿って操作してください。

Oracle データベースの準備手順
ステップ 準備手順
1 Linux 環境で Oracle データベースを準備するまたは
Windows 環境で Oracle データベースを準備する
2 ASM ディスク グループにデータファイルがある Oracle データベースのバックアップを準備する
3 Oracle データベース認証を準備する
データベース ブロック変更トラッキングを有効にする(省略可)
Oracle Data Guard ノードから保護する
他のノードへの RMAN バックアップの RAC 透過的フェイルオーバーを構成する
Oracle アーカイブログの圧縮
複数のノード間でロード バランシングを行うように Oracle データベース サービスを構成する
Oracle 12c にパッチを適用する

Linux 環境で Oracle データベースを準備する

Oracle データベースを保護する前に、またはデータベース保護ジョブが失敗した場合は、Oracle データベース サーバーで次の設定が正しいことを確認してください。

  • 保護対象の Oracle データベースは、それぞれ稼働中である必要があります。次に例を示します。

    database: actdb
    #ps -ef | grep pmon | grep -i actdb
    oracle   27688     1  0  2015 ?        00:26:24 ora_pmon_actdb
    
  • データベースはアーカイブログ モードで実行されている必要があります。データベースがアーカイブ ログモードで実行されていることを確認するには、Oracle OS ユーザーとしてデータベース サーバーにログインし、データベース環境変数を設定します。

    export ORACLE_HOME=<oracle home path>
    (get this from /etc/oratab)
    export ORACLE_SID=<database instance name> (you can get this through
    ps -ef | grep pmon)
    export PATH=$ORACLE_HOME/bin:$PATH
    

    sqlplus にログインします。

    #sqlplus / as sysdba
    #SQL> archive log list;
    Database log mode   Archive Mode
    Automatic archival        Enabled
    Archive destination        +FRA
    Oldest online log sequence     569
    Next log sequence to archive   570
    Current log sequence        570
    #SQL>
    
  • データベースは spfile を使用しているものとします。データベースが spfile で実行されていることを確認します。

    #sqlplus / as sysdba
    SQL> show parameter spfile
    NAME      TYPE   VALUE
    ------------------ ----------- ------------
    spfile      string  +DATA/ctdb/spfilectdb.ora
    
  • Oracle RAC データベースの場合、スナップショット制御ファイルは共有ディスクに配置する必要があります。ASM で管理されている Oracle RAC データベースの場合、スナップショット制御ファイルは共有ディスクに配置する必要があります。

    これを確認するには、RMAN に接続して show all コマンドを実行します。必要に応じて構成します。

        rman target /
    

    RMAN で次の操作を行います。

       show all
    

    db_unique_name が CTDB のデータベースの RMAN 構成パラメータは次のとおりです。

    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/mnt/ctdb/snapcf_ctdb.f';
    

    この例は、ローカル ファイル システムに設定された構成を示しています。

    RAC 環境では、これを共有 ASM ディスク グループに設定する必要があります。ASM ディスク グループに配置するには、次のコマンドを使用します。

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+<DG name>/snap_<DB name>.f';
    

ASM ディスク グループにデータファイルがある Oracle データベースのバックアップを準備する

ASM ディスク グループ上の Backup and DR ステージング ディスク

ASM diskstring パラメータが設定されており、null ではありません。ASM OS ユーザーとしてデータベース サーバーにログインし、ASM 環境変数を設定します。

    # export ORACLE_HOME=(oracle ASM home path)
    (get this from /etc/oratab)
    #export ORACLE_SID=(ASM instance name) (you
    can get this through ps ?ef | grep pmon)
    #export PATH=$ORACLE_HOME/bin:$PATH

sqlplus に接続します。

    #sqlplus / as sysasm
    #sql> show parameter asm_diskstring
    NAME      TYPE   VALUE
    ------------------- ----------- ------------------------------
    asm_diskstring      string  ORCL:*, /dev/sdt1, /dev/sdu1

値の結果が null の場合は、Backup and DR 保護に進む前に、既存の ASM ディスクの正しい ASM ディスク文字列値を取得します。Backup and DR のバックアップは、バックアップ ステージング ディスクのディスク文字列パス(/dev/Backup and DR/asm/*)を ASM にマッピングするために追加します。

ファイル システム上の Backup and DR ステージング ディスク

Oracle ASM データベースをファイル システムに保護する場合は、[Application Details & Settings] で [Convert ASM to file system] を [Yes] に設定する必要があります。Oracle データベースのアプリケーションの詳細と設定をご覧ください。

Oracle データベース認証を準備する

次の追加の準備手順は、データベース認証を使用する場合にのみ必要です。Oracle データベース認証については、データベース認証を使用したバックアップと DR をご覧ください。

  1. Linux 環境で Oracle データベースを準備するの手順に沿って操作します。

  2. Backup and DR バックアップ用のデータベース ユーザー アカウントが指定されていない場合は、作成します。

    create user act_rman_user identified by <password>;
    
  3. sqlplus にすべてのノードにログインし、次のコマンドを実行して、すべての RAC ノードに sysdba アクセス権を付与します。

    grant create session, resource, sysdba to act_rman_user;
    

    Oracle 12c の場合、このロールは of sysdba ではなく sysbackup になり、データベースのユーザー名は # で始まります。

  4. RAC 環境内のすべてのノードで sysdba ロールが付与されていることを確認します。

    #sqlplus / as sysasm
    # sql> select * from gv$pwfile_users;
    INST_ID USERNAME SYSDB SYSOP SYSAS
    ---------- --------------  ----- ----- -----
    1 SYS TRUE TRUE FALSE
    2 SYS TRUE TRUE FALSE
    1 ACT_RMAN_USER TRUE TRUE FALSE
    2 ACT_RMAN_USER TRUE TRUE FALSE
    
  5. 次の手順に沿って、環境タイプに基づいてサービス名をテストします。

非 RAC 環境で Oracle サービス名を作成して確認する

Oracle サービス名は、データベース認証にのみ使用されます。OS 認証には必要ありません。

例: データベース名: dbstd、インスタンス名: dbstd

  1. Oracle サービス名がリストにない場合は、$ORACLE_HOME/network/admin または $GRID_HOME/network/admin にある tnsnames.ora ファイルに次のエントリを追加して、サービス名エントリを作成します。

    act_svc_dbstd =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST
    = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = dbstd)
    ) )
    

    tnsnames.ora ファイルが標準以外の場所にある場合は、アプリケーションの詳細と設定で絶対パスを指定します(Oracle データベースのアプリケーションの詳細と設定を参照)。

  2. データベースのサービス名エントリをテストして、構成されていることを確認します。

    Oracle OS ユーザーとしてログインし、Oracle 環境を設定します。

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbstd
    
  3. データベース ユーザー アカウントを確認して、バックアップと DR バックアップが接続できることを確認します。

    sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
    
  4. Oracle データベースのアプリケーションの詳細と設定で説明されているように、[Application Details & Settings] の [Oracle Service Name] 設定で、作成したサービス名(act_svc_dbstd)を指定します。

RAC 環境で Oracle サービス名を作成して確認する

Oracle サービス名は、データベース認証にのみ使用されます。OS 認証には必要ありません。

3 ノード RAC の例:

  • データベース名: dbrac

  • Instance1 名: dbrac1

  • Instance2 名: dbrac2

  • Instance3 の名前: Node3(インスタンス名 dbrac3)からデータベース保護が設定されている dbrac3:

  1. $ORACLE_HOME/network/admin または $GRID_HOME/network/admin にある tnsnames.ora ファイルに次のエントリを追加して、servicename エントリを作成します。

    act_svc_dbrac3 =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = dbrac3)
    (SERVICE_NAME = dbrac)
    ) ) )
     Where:
     HOST = This can be SCAN IP in a RAC environment or VIP or IP of the node 3 database server.
    SERVICE_NAME = database name
    INSTANCE_NAME = database instance name on node3
    
  2. servicename をテストします。

    Oracle OS ユーザーとしてログインし、Oracle 環境を設定します。

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbrac3
    
  3. データベース ユーザー アカウントを確認して、バックアップと DR バックアップが接続できることを確認します。

    sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
    
  4. Oracle データベースのアプリケーションの詳細と設定で説明されているように、[Application Details & Settings] の [Oracle Service name] 設定で、作成したサービス名(act_svc_dbrac3)を指定します。

    tnsnames.ora ファイルが標準以外の場所にある場合は、Oracle データベースのアプリケーションの詳細と設定で説明されている [Application Details & Settings] の [Oracle TNS_Admin Path] 設定で、tnsnames.ora ファイルの絶対パスを指定します。

データベース ブロックの変更トラッキングを有効にする(省略可)

データベースの変更ブロックのトラッキングについては、Oracle データベース ブロック チェンジ トラッキング(BCT)をご覧ください。

データベース ブロックの変更トラッキングが有効になっているかどうかを確認するには:

sqlplus / as sysdba

sql プロンプトで、次のコマンドを入力します。

select * from v$block_change_tracking;

データベース ブロックの変更トラッキングが有効になっていない場合は、sqlplus でデータベース ブロックの変更トラッキングを有効にします。

ASM ディスク グループの使用

sqlplus / as sysdba

sql プロンプトで、次のコマンドを入力します。

alter database enable block change tracking using file '+<ASM Disk Group Name>/<database name>/<dbname>.bct';

ファイル システムの使用

sqlplus / as sysdba

sql プロンプトで、次のコマンドを入力します。

alter database enable block change tracking using file '$ORACLE_HOME/dbs/<dbname>.bct';

Oracle Data Guard ノードから保護する

Oracle データベースは、プライマリ データベース ノードまたは Oracle Data Guard スタンバイ ノードから保護できます。Oracle Data Guard ノードから保護を設定する場合は、管理コンソールの [Application Details & Settings] でプライマリ ノードの認証情報を設定してください。

データベース認証の場合(Linux のみ)

  • ユーザー名/パスワード: データベース ユーザー アカウントの認証情報。このユーザー アカウントを sysdba アクセス権を持つ Data Guard ノードで使用できるようにするには、プライマリ ノードで sysdba 権限を持つユーザーを作成する必要があります(sysdba アクセス権を持つバックアップ ユーザー アカウントの作成を参照)。次に、プライマリ ノードから取得したパスワード ファイル($ORACLE_HOME/dbs/ 内)を Data Guard ノードにコピーする必要があります。

OS 認証の場合

  • ユーザー名/パスワード: OS 認証では、sysdba 権限は必要ありません。このデータベース ユーザー アカウントには connect, alter system 権限が必要です。このユーザー アカウントを Data Guard ノードで使用できるようにするには、プライマリ ノードでこのユーザーを作成する必要があります。

ユーザーに sysdba ロールがない場合は、grant connect, alter system, select on dba_tablespaces が必要です。

これらの権限を付与するには、SQL プロンプトで次の操作を行います。

    grant connect, alter system, select on dba_tablespaces to act_rman_user;
  • Oracle Data Guard プライマリ ノードのサービス名: これは、スタンバイ ノードからプライマリ ノードに接続するために Data Guard ノードで構成された tnsnames.ora ファイルのサービス名です。Data Guard スタンバイ ノードからバックアップが構成されている場合、OS 認証と DB 認証の両方に Oracle Data Guard プライマリ ノードのサービス名が必要です。

すべての詳細と設定について詳しくは、Oracle データベースのアプリケーションの詳細と設定をご覧ください。

データベース ノード OS 認証 データベース認証
プライマリ データベース認証情報は必要ありません。 データベース認証情報が必要です。ロールが選択されていない場合は、sysdba が使用されます。
スタンバイ OS 認証の場合でも、データベース認証情報が必要です(ログを切り替えるためにプライマリに接続するため)。データベース認証情報に sysdba/sysbackup ロールは必要ありません。sysdba/sysbackup アカウントを使用する場合は、[Application Details & Settings] の [User Role in the Database] でユーザーロールを設定します。 データベース認証情報が必要です。データベース認証情報は sysdba ロールまたは sysbackup ロールのいずれかである必要があり、[アプリケーションの詳細と設定] で [データベースのユーザーロール] を sysdba または sysbackup に設定する必要があります。データベース認証を設定するには、Oracle サーバーのデータベース認証を有効にするをご覧ください。

RMAN バックアップの他のノードへの RAC 透過的フェイルオーバーを構成する

バックアップ フェイルオーバー構成の一部にする予定のすべてのノードに、バックアップと DR エージェントがインストールされ、実行されている必要があります。保護は 1 つのノードからのみ設定されます。

[Details & Settings] の [Cluster Nodes] で、Oracle RAC 環境のフェイルオーバー ノードの選択を指定します。

    <Failover choice>:<Node IP>:<Servicename>:<Role>

ここで

  • Failover Choice: フェイルオーバーするノードの順番。

  • ノード IP: バックアップを行うノードの IP アドレス

  • Servicename: バックアップと DR RMAN バックアップのために tnsnames.ora で作成され、指定されたサービスの名称。バックアップと DR バックアップのために新しく作成したサービス名の場合や、該当するノード上のデータベースの SID 名(インスタンス名)の場合があります。

  • ロール: フェイルオーバー ノードを示す F

tnsnames.ora ファイル($ORACLE_HOME/network/admin/tnsnames.ora または $GRID_HOME/network/admin/tnsnames.ora)のフェイルオーバー ノードに新しいサービス名を作成するには:

Oracle One Node 環境での例

RAC One Node は 2 つのノードで構成されます。

172.15.157.200
172.15.157.201

データベースは「OneN」という名前の 1 つだけで、常にいずれか 1 つのノードでのみ稼働中だとします。クラスタノードは 1:172.15.157.201:OneN:F と設定されており、OneN は 172.15.157.200 で保護されています。

OneN が 172.15.157.201 にフェイルオーバーした場合、バックアップと DR バックアップはこれに準じ、次のバックアップを 172.15.157.200 ではなく~ 201 で行います。フェイルオーバーがバックアップ ジョブの途中で発生した場合、ジョブは失敗し、次のジョブはフェイルオーバー ノードを使用して新しいバックアップを開始します。

Oracle 環境(One Node ではない)の例:

  • 2 ノード RAC(dbrac1dbrac2

  • 保護は dbrac1 のデータベース名「dbrac」を使用して設定され、フェイルオーバーは dbrac2 に設定されます。

  • node2 のサービス名: act_svc_dbrac2

  • Node2 IP またはスキャン IP: 172.1.1.0

act_svc_node2 =

  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.1.0)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (INSTANCE_NAME = dbrac2)
  (SERVICE_NAME = dbrac)
  ) )

[アプリケーションの詳細と設定] で、クラスタノードのエントリは次のようになります。

Failoverchoice:NodeIP:Servicename:Role

1:172.1.1.1:act_svc_node2:F

クラスタノード エントリ F と M の動作

F: フェイルオーバー ノード。保護ノードがバックアップを実行しない場合にのみ参加します。

M: メンテナンス ノード。バックアップを実行できるように、検証済みの保護ノードを置き換えます。

Oracle アーカイブログの圧縮

Backup and DR のアーカイブログ バックアップは、Oracle ログ バックアップ セットの圧縮をサポートしています。選択する圧縮のタイプは、これらの RMAN 構成設定によって異なります。ユースケースに基づいてオプションを選択します。

  • 圧縮率が低いほど、バックアップ スループットへの影響は小さくなります。これらは、CPU リソースが制限要因となる環境に最適です。

  • ほとんどの環境では、中程度の圧縮をおすすめします。これらは、圧縮率と速度のバランスが取れています。

  • 圧縮率が高いほどリソースを大量に消費するため、ネットワーク速度が制限要因となる低速ネットワークでのバックアップに最適です。

デフォルトの設定は [ベーシック] です。Basic では Oracle Advanced Compression は必要ありません。

環境内に設定された圧縮の種類を確認するには、RMAN プロンプトから show all コマンドを実行します。

rman target /

    show all

複数のノード間でロード バランシングを行うように Oracle データベース サービスを構成する

この手順は Oracle ASM データベースにのみ適用されます。この例では、4 ノードの RAC 環境を想定しています。ノード 3 とノード 4 は、バックアップ用にロードバランスされます。

参照:

Oracle RAC ノード間のロード バランシングには、Oracle データベース認証が必要です。

複数のノードから並列 RMAN イメージコピーを構成する

RAC 環境では、複数のノードから並行して実行するようにバックアップを構成できます。

  1. すべてのノードに Backup and DR エージェントをインストールします。

  2. アプリケーションの詳細と設定を使用して、ノード 3 とノード 4 への ASM ディスク グループ マッピングを設定します。

  3. srvctl を使用してデータベース サービスを作成し、ノード 3 とノード 4 から実行します。

  4. このサービスを使用して、[Application Details & Settings] で指定します。[詳細設定] で [チャンネル数](チャンネル数)を選択します。RMAN は、ノード 3 とノード 4 の間でチャネルを分散します。

  5. Oracle サービス名と RAC メンバーノードを設定します。

複数のノード間でロード バランシングを行うように Oracle Database サービスを構成する

  1. [Application Details & Settings] で構成します。RAC メンバーノード: node3 の IP と node4 の IP。

  2. バックアップと DR でバックアップに使用されるメンテナンス ノードのデータベース サービスを作成します。

    srvctl add service -d <dbname> -s act_service_<dbname>
    -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname>
    -s act_service_<dbname>
    
  3. バックアップ ノード(この例では dbinstance3 ノードと dbinstance4 ノード)で作成された Oracle サービス名の tns エントリを tnsnames.ora ファイル($ORACLE_HOME/network/admin/tnsnames.ora または $GRID_HOME/network/admin/tnsnames.ora)に追加します。

    act_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = <DATABASE NAME>)
    ) )
    
  4. 作成した servicename をテストします。

    tnsping actservice

  5. servicename とユーザー認証情報をテストします。

    sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
    
  6. このサービス名を [Application Details & Settings] の [Oracle service name] で指定します。

  7. バックアップに使用する専用のアーカイブ ログ バックアップ サービスを保護されたノード(ノード 3 など)に作成します。

    srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
    srvctl start service -d <dbname> -s act_arc_service_<dbname>
    
  8. tnsnames.ora ファイル($ORACLE_HOME/network/admin/tnsnames.ora または $GRID_HOME/network/admin/tnsnames.ora)で作成されたアーカイブ ログ バックアップ サービス名の tns エントリを追加します。

    act_arc_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = <node 3 instance>)
    (SERVICE_NAME = act_arc_service_<dbname>)
    ) )
    
  9. サービス名をテストします。

    tnsping act_archservice

  10. このサービス名を [Application Details & Settings] のアーカイブ ログ バックアップ サービス名で指定します。

Oracle 12c にパッチを適用する

Oracle 12c のインストールにこのパッチが含まれていない場合、バックアップと DR のアプリケーション認識マウントが失敗する可能性があります。このパッチは、Oracle サポートポータルからダウンロードできます。

Oracle Database 12c バグ# 19404068(ORA-1610 ON RECOVER DATABASE FOR CREATED CONTROLFILE)

  • (パッチ 19404068)Oracle 12.1.0.2.0 用 Linux x86-64

パッチがインストールされているかどうかを確認するには、次のコマンドを実行します。

    $cd $ORACLE_HOME/OPatch
    $./opatch lsinventory -details
    $./opatch lsinventory -details | grep 19404068

次のステップ

Oracle ホストを追加する前に、次の手順に進みます。

  1. (省略可)Backup and DR で Oracle Direct NFS を使用する
  2. Oracle パッチと既知の問題

Oracle DBA ガイド