バックアップおよびREDOフェイルオーバー計画を使用した一時的な停止の管理

バックアップおよびREDOフェイルオーバーは、プライマリ・リカバリ・アプライアンスが停止したとき、または計画メンテナンスが必要なときに、保護されたデータベースがバックアップおよびREDOを一時的に代替リカバリ・アプライアンスに送ることを許可する高可用性機能です。これによって、保護されたデータベースのバックアップおよびREDOは中断することなく続行され、完全なデータ保護を維持できます。また、データベースのローカル・アーカイブ・ログの宛先が一杯になりデータベースに影響を与えることを防止します(代替のバックアップ宛先がない場合はそのようになることがあります)。

バックアップおよびREDOフェイルオーバー機能の概要

バックアップおよびREDOフェイルオーバーが構成されている環境で、保護されたデータベースは、通常の状況ではプライマリ・リカバリ・アプライアンスにバックアップおよびREDOを送信します。そのアプライアンスが使用できない場合、保護されたデータベースは、プライマリのサービスがリストアされるまで、バックアップおよびREDOを代替リカバリ・アプライアンスに送信します。

代替アプライアンスは、受信した一時バックアップから仮想完全バックアップを作成せず、バックアップ・ピースの格納のみを行います(増分バックアップおよびアーカイブ・ログ・バックアップ)。プライマリ・アプライアンスがオンラインに戻って機能するようになると、代替アプライアンスはすべての一時バックアップをプライマリ・アプライアンスに転送し、プライマリ・アプライアンスはそのバックアップを使用して対応する仮想完全バックアップを作成します。すべての仮想完全バックアップが作成されると、保護されたデータベースはプライマリ・アプライアンスへのバックアップおよびREDOの送信を再開します。代替アプライアンスは、プライマリ・アプライアンスに正常に転送して初めて、ローカル記憶域から一時バックアップ・ピースを削除します。

バックアップおよびREDOフェイルオーバーの構成

この項では、バックアップおよびREDOフェイルオーバーを構成する方法について説明します。基本的なワークフローは次のとおりです。

  1. 「バックアップおよびREDOフェイルオーバーのためのプライマリ・リカバリ・アプライアンスの構成」の説明に従って、プライマリ・リカバリ・アプライアンスを構成します。

  2. 「バックアップおよびREDOフェイルオーバーのための代替リカバリ・アプライアンスの構成」の説明に従って、代替リカバリ・アプライアンスを構成します。

  3. 「バックアップおよびREDOフェイルオーバーのためのレプリケーションの構成」の説明に従って、代替リカバリ・アプライアンスからプライマリ・リカバリ・アプライアンスへのレプリケーションを構成します。

  4. 「バックアップおよびREDOフェイルオーバーのための保護されたデータベースの構成」の説明に従って、バックアップを送信するために保護されたデータベースを構成します。

バックアップおよびREDOフェイルオーバーのためのプライマリ・リカバリ・アプライアンスの構成

バックアップおよびREDOフェイルオーバーのためにプライマリ・リカバリ・アプライアンスを構成するには、レプリケーション・シナリオのダウンストリーム・リカバリ・アプライアンスの設定用タスクの多くを実行します。

タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成

racli add db_userに関する項の手順に従います。

たとえば、リカバリ・アプライアンスにrootとしてログインし、binディレクトリに変更し、次のコマンドを使用してVPCユーザーを作成します。

# ./racli add db_user --user_name=vpcuser --user_type=vpc

プロンプト表示されたら、vpcuserユーザーのパスワードを入力します。

CREATE SESSION権限のあるレプリケーション・ユーザーrepuser_from_alternateを作成するには、次のようにします。

CREATE USER repuser_from_alternate IDENTIFIED BY password;
GRANT CREATE SESSION TO repuser_from_alternate;

代替で作成されたuser_nameは、プライマリで作成されたVPCユーザーと同じである必要があります。ただし、パスワードは同じである必要はありません。

タスク2 プライマリ・リカバリ・アプライアンスでの保護ポリシーの作成

「保護ポリシーの作成」の手順に従います。store_and_forwardフィールドがNOに設定されていることを確認します。

たとえば、次のPL/SQLプログラムを実行して、primary_brfポリシーを作成します。

BEGIN
  DBMS_RA.CREATE_PROTECTION_POLICY (
    protection_policy_name => 'primary_brf',
    description            => 'For protected dbs on primary',
    storage_location_name  => 'delta',
    recovery_window_goal   => INTERVAL '28' DAY,
    guaranteed_copy        => 'NO',
    store_and_forward      => 'NO');
END;

タスク3: プライマリ・リカバリ・アプライアンスでの保護ポリシーへのデータベースの追加

「保護されたデータベースの登録」の手順に従います。

たとえば、次のPL/SQLプログラムを実行して、orcl12を前のタスクで作成したprimary_brfポリシーに追加します。

BEGIN
  DBMS_RA.ADD_DB (
    db_unique_name         => 'orcl12',
    protection_policy_name => 'primary_brf',
    reserved_space         => '128G');
END;

タスク4: プライマリ・リカバリ・アプライアンスでのVPCユーザーおよびレプリケーション・ユーザーへのデータベース・アクセスの付与

「保護されたデータベースの登録」の手順に従います。

たとえば、次のPL/SQLプログラムを実行して、VPCユーザーvpcuserおよびレプリケーション・ユーザーrepuser_from_alternateに、保護されたデータベースorcl12で必要な権限を付与します。

BEGIN
  DBMS_RA.GRANT_DB_ACCESS (
    username       => 'vpcuser',
    db_unique_name => 'orcl12');
END;
BEGIN
  DBMS_RA.GRANT_DB_ACCESS (
    username       => 'repuser_from_alternate',
    db_unique_name => 'orcl12');
END;

バックアップおよびREDOフェイルオーバーのための代替リカバリ・アプライアンスの構成

代替リカバリ・アプライアンスを構成するには、レプリケーション・シナリオのアップストリーム・リカバリ・アプライアンスの設定に類似したタスクを実行します。

タスク1 代替リカバリ・アプライアンスでのバックアップおよびREDOフェイルオーバーのための保護ポリシーの作成

「保護ポリシーの作成」の手順に従います。store_and_forwardフィールドをYESに設定していることを確認します。

たとえば、次のPL/SQLプログラムを実行して、alt_brfポリシーを作成します。

BEGIN
  DBMS_RA.CREATE_PROTECTION_POLICY (
    protection_policy_name => 'alt_brf',
    description            => 'For protected dbs on alternate',
    storage_location_name  => 'delta',
    recovery_window_goal   => INTERVAL '28' DAY,
    guaranteed_copy        => 'NO',
    store_and_forward      => 'YES');
END;

タスク2: 代替リカバリ・アプライアンスでの保護ポリシーへのデータベースの追加

「保護されたデータベースの登録」の手順に従います。

たとえば、次のPL/SQLプログラムを実行して、orcl12を前のタスクで作成したalt_brfポリシーに追加します。

BEGIN
  DBMS_RA.ADD_DB (
    db_unique_name         => 'orcl12',
    protection_policy_name => 'alt_brf',
    reserved_space         => '128G');
END;

タスク3: 代替リカバリ・アプライアンスでのVPCユーザーへのデータベース・アクセスの付与

このユーザーは、「タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成されました。

「保護されたデータベースの登録」の手順に従います。

たとえば、次のPL/SQLプログラムを実行して、VPCユーザーvpcuserに保護されたデータベースorcl12で必要な権限を付与します。

BEGIN
  DBMS_RA.GRANT_DB_ACCESS (
    username       => 'vpcuser',
    db_unique_name => 'orcl12');
END;

バックアップおよびREDOフェイルオーバーのレプリケーションの構成

プライマリ・リカバリ・アプライアンスおよび代替リカバリ・アプライアンスを構成した後、代替アプライアンスからプライマリ・アプライアンスへのレプリケーションの設定に類似したタスクを実行します。このシナリオでは、代替アプライアンスはアップストリーム・ロールを持ち、プライマリ・アプライアンスはダウンストリーム・ロールを持ちます。

タスク1: 代替リカバリ・アプライアンスでのOracleウォレットの構成

代替リカバリ・アプライアンスで、mkstoreユーティリティを使用してOracle自動ログイン・ウォレットを作成し、「タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成したレプリケーション・ユーザーの資格証明を追加します。代替リカバリ・アプライアンスは、プライマリ・リカバリ・アプライアンスへのログイン時にこれらの資格証明が必要となります。

代替リカバリ・アプライアンスで自動ログイン・ウォレットを構成するには:

  1. 次のコマンドを実行して、/dbfs_repdbfs/REPLICATIONディレクトリにOracleウォレットを作成します。

    mkstore -wrl /dbfs_repdbfs/REPLICATION -createALO
    

    mkstoreユーティリティにより、cwallet.ssoという名前のファイルが指定した場所に作成されます。

  2. 次のコマンドを実行して、レプリケーション・ユーザー資格証明を追加します。

    mkstore -wrl wallet_location -createCredential serv_name rep_user pwd
    

    プレースホルダは次のように定義されています。

    たとえば、次のコマンドは、ポート1522およびデータベース名rapriを使用するネット・サービス名rapribrf-scan.acme.comと、レプリケーション・ユーザー名repuser_from_alternateの資格証明を追加します。

    mkstore -wrl /dbfs_repdbfs/REPLICATION -createCredential \
    "rapribrf-scan.acme.com:1522/rapri" "repuser_from_alternate" "pwd"
    
  3. 次のコマンドを実行して、このユーザーに資格証明が適切に追加されたことを確認します。

    mkstore -wrl /dbfs_repdbfs/REPLICATION -listCredential
    
    Oracle Secret Store Tool : Version 12.1.0.1 Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
    List credential (index: connect_string username)
    1: rapribrf-scan.acme.com:1522/rapri repuser_from_alternate

    結果にパスワードは表示されません。

タスク2: 代替リカバリ・アプライアンスでのレプリケーション・サーバー構成の作成

DBMS_RA.CREATE_REPLICATION_SERVERを実行して、この代替リカバリ・アプライアンスが停止後にバックアップを転送するプライマリ・リカバリ・アプライアンスにレプリケーション・サーバー構成を作成します。

このタスクでは、次のことを想定しています。

レプリケーション・サーバー構成を作成するには:

  1. SQL*PlusまたはSQL Developerで、RASYSとして代替リカバリ・アプライアンスのメタデータ・データベースに接続します。

  2. プライマリ・リカバリ・アプライアンスに対してDBMS_RA.CREATE_REPLICATION_SERVERプロシージャを実行します。

    次の例では、プライマリ・リカバリ・アプライアンスにraprimary_repというレプリケーション・サーバー構成を作成します。

    BEGIN
      DBMS_RA.CREATE_REPLICATION_SERVER (
        replication_server_name => 'raprimary_rep',
        sbt_so_name      => '/u01/app/oracle/product/12.1.0.2/dbh1/lib/libra.so',
        catalog_user_name       => 'RASYS',
        wallet_alias            => 'rapribrf-scan.acme.com:1522/rapri',
        wallet_path             => 'file:/dbfs_repdbfs/REPLICATION');
    END;
    
  3. レプリケーション・サーバー構成の作成を確認します。replication_server_nameは大文字に変換されて、格納されます。したがって、名前の問合せも大文字にする必要があります。

    たとえば、次の問合せを実行します。

    SELECT COUNT(*) should_be_one 
    FROM   RA_REPLICATION_SERVER
    WHERE  REPLICATION_SERVER_NAME = 'RAPRIMARY_REP';
    
    SHOULD_BE_ONE
    -------------
    1
    

    構成が正しく作成された場合、戻り値は1です。

タスク3: 代替リカバリ・アプライアンスのバックアップおよびREDOフェイルオーバーの保護ポリシーとの関連付け

レプリケーション・サーバー構成を保護ポリシーに割り当てることで、代替リカバリ・アプライアンスが停止後にバックアップを転送するプライマリ・リカバリ・アプライアンスを指定します。

このタスクでは、次のことを想定しています。

レプリケーション・サーバー構成をバックアップおよびREDOフェイルオーバー保護ポリシーに関連付けるには:

  1. リカバリ・アプライアンス管理者として代替リカバリ・アプライアンスのメタデータ・データベースに接続していることを確認します。

  2. バックアップおよびREDOフェイルオーバー保護ポリシーとレプリケーション・サーバー構成に対して、DBMS_RA.ADD_REPLICATION_SERVERプロシージャを実行します。

    たとえば、次のPL/SQLプログラムを実行します。

    BEGIN
      DBMS_RA.ADD_REPLICATION_SERVER (
       replication_server_name => 'raprimary_rep',
       protection_policy_name  => 'alt_brf');
    END;

関連項目:

"ADD_REPLICATION_SERVER"

バックアップおよびREDOフェイルオーバーのための保護されたデータベースの構成

バックアップおよびREDOフェイルオーバーのレプリケーションを構成した後、保護されたデータベースの管理者はこの項のタスクを実行して、保護されたデータベースが通常の状況ではバックアップをプライマリ・リカバリ・データベースに送信し、計画停止または計画外の停止の間は代替リカバリ・アプライアンスに送信できるようにする必要があります。

タスク1: ウォレットの場所を指定するsqlnet.oraの構成

sqlnet.oraファイルに、Oracleウォレットの場所が含まれていることを確認します。

次の例は、ウォレットの場所のエントリがどのように表示されるかを示しています。

SQLNET.WALLET_OVERRIDE = true
WALLET_LOCATION = 
(SOURCE = 
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /u01/app/oracle/product/12.1.0/dbhome_1/dbs/zdlra)
   )
  )

タスク2: sqlnet.oraで指定した場所での自動ログイン・ウォレットの作成

次の例では、「タスク1: ウォレットの場所を指定するsqlnet.oraの構成」で指定したディレクトリに自動ログイン・ウォレットを作成します。

$ mkstore -wrl /u01/app/oracle/product/12.1.0/dbhome_1/dbs/zdlra/ -createALO

タスク3: プライマリおよび代替リカバリ・アプライアンスの資格証明のウォレットへの追加

このタスクでは、保護されたデータベースの管理者は、「タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成したVPCユーザーを使用して、プライマリおよび代替アプライアンスの資格証明をウォレットに追加します。

次の例では、プライマリ・アプライアンスrapribrf-scan.acme.com:1521/rapri:dedicatedおよび代替アプライアンスraaltbrf-scan.acme.com:1521/raalt:dedicatedvpcuser資格証明を、保護されたデータベース上のウォレットに追加します。

$ mkstore -wrl /u01/app/oracle/product/12.1.0/dbhome_1/dbs/zdlra/ -createCredential "rapribrf-scan.acme.com:1521/rapri:dedicated" "vpcuser" "pwd"
$ mkstore -wrl /u01/app/oracle/product/12.1.0/dbhome_1/dbs/zdlra/ -createCredential "raaltbrf-scan.acme.com:1521/raalt:dedicated" "vpcuser" "pwd"

タスク4: データベースの代替リカバリ・アプライアンスへの登録および制御ファイルのバックアップ

このタスクでは、保護されたデータベースの管理者がステップ1および2を実行し、リカバリ・アプライアンス管理者がステップ3を実行します。

データベースを登録し、制御ファイルをバックアップするには:

  1. RMANを使用して、保護されたデータベースにはTARGETとして、代替リカバリ・アプライアンス・カタログにはCATALOGとして接続し、REGISTER DATABASEコマンドを実行します。

  2. REGISTER DATABASEコマンドが完了した後、現在の制御ファイルを代替アプライアンスにバックアップします。

    BACKUP DEVICE TYPE SBT CURRENT CONTROLFILE;
  3. 制御ファイルのバックアップが代替アプライアンスからプライマリ・アプライアンスにレプリケートされたことを確認します。

タスク5: データベースがプライマリ・リカバリ・アプライアンスに登録されていることの確認

このステップでは、保護されたデータベースがプライマリ・アプライアンスに登録されていることを確認します。前のタスクでデータベースが代替アプライアンスに登録されるときにレプリケーションが構成されるため、データベースはプライマリ・アプライアンスに自動的に登録される必要があります。

プライマリ・アプライアンスへの登録を確認するには:

  1. RMANで、CATALOG接続文字列にプライマリ・アプライアンス資格証明を使用して、データベースに接続します。

    rman TARGET / CATALOG /@rapribrf-scan.acme.com:1521/rapri:dedicated

  2. REGISTER DATABASEコマンドを実行します。

    次のエラーが表示されます。

    RMAN-20002: target database already registered in recovery catalog

ノート:

  • 保護されたデータベースの管理者は、プライマリ・アプライアンスが使用できないときにバックアップを代替リカバリ・アプライアンスに送り、プライマリ・アプライアンスが機能するようになったらバックアップをプライマリ・アプライアンスにリダイレクトする、別のRMANバックアップ・スクリプトを作成する必要もあります。このスクリプトは代替リカバリ・アプライアンス・カタログに接続する必要があり、credential_aliasを代替アプライアンスに設定したCONFIGURE CHANNELまたはALLOCATE CHANNELコマンドが必要です。リカバリ・アプライアンスのRMANバックアップ・スクリプトを作成する方法の例は、Zero Data Loss Recovery Appliance保護されたデータベースの構成ガイドを参照してください。

  • プライマリ・アプライアンスの停止中にリアルタイムREDOを代替リカバリ・アプライアンスに送信するには、プライマリ・アプライアンスへの接続に使用するログ・アーカイブ宛先のALTERNATEとして追加のログ・アーカイブ宛先を定義する必要があります。接続文字列は、プライマリ・アプライアンスに必要な接続文字列と同様に、Oracle自動ログイン・ウォレットに定義して、同じVPCユーザー(パスワードは異なる場合がありますが)を使用する必要があります。ALTERNATE属性を使用して代替リモート宛先に自動的にフェイルオーバーする方法の例は、Data Guard概要および管理を参照してください。