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

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

Oracle データベースをバックアップする前に、Oracle サーバーをホストとしてバックアップと 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 ディスク グループのバックアップと 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 の場合は、バックアップと DR 保護に進む前に、既存の ASM ディスクの正しい ASM ディスク文字列値を取得します。バックアップと DR のバックアップは、バックアップ ステージング ディスクのディスク文字列パス(/dev/Backup and DR/asm/*)を追加して ASM にマッピングします。

ファイル システムのバックアップと DR のステージング ディスク

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

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

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

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

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

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

    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 データベースのアプリケーションの詳細と設定で説明されているように、[Application Details & Settings] でファイルの絶対パスを指定します。

  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

  • インスタンス 3 名: dbrac3。データベース保護はノード 3(インスタンス名 dbrac3)から設定されます。

  1. 次のエントリを追加して、$ORACLE_HOME/network/admin または $GRID_HOME/network/admintnsnames.ora ファイルにサービス名エントリを作成します。

    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 and Settings] でプライマリ ノードの認証情報を設定します。

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

  • ユーザー名/パスワード: データベース ユーザー アカウントの認証情報。このユーザー アカウントを Data Guard ノードで sysdba アクセス権で使用できるようにするには、プライマリ ノードで 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 アカウントを使用している場合は、[アプリケーションの詳細と設定] の [データベース内のユーザーロール] でユーザーロールを設定します。 データベース認証情報が必要です。データベースの認証情報は、sysdba ロールまたは sysbackup ロールのいずれかである必要があります。また、[アプリケーションの詳細と設定] で [データベース内のユーザーロール] を sysdba または sysbackup に設定する必要があります。データベース認証を設定するには、Oracle サーバーでデータベース認証を有効にするをご覧ください。

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

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

[Details and Settings] の [Cluster Nodes] で、Oracle RAC 環境の Failover choice のノードを指定します。

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

ここで

  • フェイルオーバーの選択: フェイルオーバーするノードの順序。

  • ノード 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

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

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

One Node ではなく Oracle 環境の例:

  • 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 アーカイブログの圧縮

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

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

  • ほとんどの環境では、中程度の圧縮が推奨されます。圧縮率と速度のバランスが取れています。

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

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

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

rman target /

    show all

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

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

参照:

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

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

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

  1. すべてのノードにバックアップと DR エージェントをインストールします。

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

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

  4. このサービスは、[アプリケーションの詳細と設定] で指定します。[詳細設定] の [チャンネル数] を選択します。RMAN は、ノードの 3 と 4 の間でチャネルを分散します。

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

複数のノード間でのロード バランシング用に Oracle Database Services を構成する

  1. [Application Details & Settings] で、RAC メンバーノード: ノード 3 の IP とノード 4 の 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 サービス名に指定します。

  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 が発生)

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

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

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

次のステップ

Oracle ホストを追加する前に、次の操作を行います。

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

Oracle DBA ガイド