バックアップおよびREDOフェイルオーバー計画を使用した一時的な停止の管理
バックアップおよびREDOフェイルオーバーは、プライマリ・リカバリ・アプライアンスが停止したとき、または計画メンテナンスが必要なときに、保護されたデータベースがバックアップおよびREDOを一時的に代替リカバリ・アプライアンスに送ることを許可する高可用性機能です。これによって、保護されたデータベースのバックアップおよびREDOは中断することなく続行され、完全なデータ保護を維持できます。また、データベースのローカル・アーカイブ・ログの宛先が一杯になりデータベースに影響を与えることを防止します(代替のバックアップ宛先がない場合はそのようになることがあります)。
バックアップおよびREDOフェイルオーバー機能の概要
バックアップおよびREDOフェイルオーバーが構成されている環境で、保護されたデータベースは、通常の状況ではプライマリ・リカバリ・アプライアンスにバックアップおよびREDOを送信します。そのアプライアンスが使用できない場合、保護されたデータベースは、プライマリのサービスがリストアされるまで、バックアップおよびREDOを代替リカバリ・アプライアンスに送信します。
代替アプライアンスは、受信した一時バックアップから仮想完全バックアップを作成せず、バックアップ・ピースの格納のみを行います(増分バックアップおよびアーカイブ・ログ・バックアップ)。プライマリ・アプライアンスがオンラインに戻って機能するようになると、代替アプライアンスはすべての一時バックアップをプライマリ・アプライアンスに転送し、プライマリ・アプライアンスはそのバックアップを使用して対応する仮想完全バックアップを作成します。すべての仮想完全バックアップが作成されると、保護されたデータベースはプライマリ・アプライアンスへのバックアップおよびREDOの送信を再開します。代替アプライアンスは、プライマリ・アプライアンスに正常に転送して初めて、ローカル記憶域から一時バックアップ・ピースを削除します。
バックアップおよびREDOフェイルオーバーの構成
この項では、バックアップおよびREDOフェイルオーバーを構成する方法について説明します。基本的なワークフローは次のとおりです。
-
「バックアップおよびREDOフェイルオーバーのためのプライマリ・リカバリ・アプライアンスの構成」の説明に従って、プライマリ・リカバリ・アプライアンスを構成します。
-
「バックアップおよびREDOフェイルオーバーのための代替リカバリ・アプライアンスの構成」の説明に従って、代替リカバリ・アプライアンスを構成します。
-
「バックアップおよびREDOフェイルオーバーのためのレプリケーションの構成」の説明に従って、代替リカバリ・アプライアンスからプライマリ・リカバリ・アプライアンスへのレプリケーションを構成します。
-
「バックアップおよび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ユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成したレプリケーション・ユーザーの資格証明を追加します。代替リカバリ・アプライアンスは、プライマリ・リカバリ・アプライアンスへのログイン時にこれらの資格証明が必要となります。
代替リカバリ・アプライアンスで自動ログイン・ウォレットを構成するには:
-
次のコマンドを実行して、
/dbfs_repdbfs/REPLICATION
ディレクトリにOracleウォレットを作成します。mkstore -wrl /dbfs_repdbfs/REPLICATION -createALO
mkstore
ユーティリティにより、cwallet.sso
という名前のファイルが指定した場所に作成されます。 -
次のコマンドを実行して、レプリケーション・ユーザー資格証明を追加します。
mkstore -wrl wallet_location -createCredential serv_name rep_user pwd
プレースホルダは次のように定義されています。
-
wallet_location
は、前のステップでウォレットを作成したディレクトリです。 -
serv_name
は、Oracleネットワーク上でプライマリ・リカバリ・アプライアンスを識別するためにEZ接続記述子で使用するOracleネットワーク・サービス名です。 -
rep_user
は、レプリケーション・ユーザー・アカウントのユーザー名です。このユーザーは、「タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成されました。レプリケーション・ユーザーは代替では作成されません。 -
pwd
は、レプリケーション・ユーザーrep_user
のセキュア・パスワードです。
たとえば、次のコマンドは、ポート
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"
-
-
次のコマンドを実行して、このユーザーに資格証明が適切に追加されたことを確認します。
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
を実行して、この代替リカバリ・アプライアンスが停止後にバックアップを転送するプライマリ・リカバリ・アプライアンスにレプリケーション・サーバー構成を作成します。
このタスクでは、次のことを想定しています。
-
raprimary_rep
というレプリケーション・サーバー構成を作成します。 -
代替リカバリ・アプライアンスで、レプリケーション・アカウント
repuser_from_alternate
を使用してプライマリ・リカバリ・アプライアンスにログインします。このアカウントは、「タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成されました。 -
構成では、「タスク1: 代替リカバリ・アプライアンスでのOracleウォレットの構成」で作成したOracleウォレットに格納されているネット・サービス名
rapribrf-scan.acme.com:1522/rapri
を使用します。 -
Oracleウォレットは
/dbfs_repdbfs/REPLICATION
に格納されています。 -
すべてのリカバリ・アプライアンスに事前インストールされているリカバリ・アプライアンス・バックアップ・モジュールのファイル名は
/u01/app/oracle/product/12.1.0.2/dbh1/lib/libra.so
です。このモジュールは、SBTメディア管理ライブラリとして機能します。RMANは、リカバリ・アプライアンスにバックアップするためのチャネルを割当てまたは構成する際に、このモジュールを参照します(「リカバリ・アプライアンス・レプリケーションのための保護されたデータベースの構成」を参照)。
レプリケーション・サーバー構成を作成するには:
-
SQL*PlusまたはSQL Developerで、
RASYS
として代替リカバリ・アプライアンスのメタデータ・データベースに接続します。 -
プライマリ・リカバリ・アプライアンスに対して
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;
-
レプリケーション・サーバー構成の作成を確認します。
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フェイルオーバーの保護ポリシーとの関連付け
レプリケーション・サーバー構成を保護ポリシーに割り当てることで、代替リカバリ・アプライアンスが停止後にバックアップを転送するプライマリ・リカバリ・アプライアンスを指定します。
このタスクでは、次のことを想定しています。
-
「タスク2: 代替リカバリ・アプライアンスでのレプリケーション・サーバー構成の作成」で作成した
raprimary_rep
というレプリケーション・サーバー構成を使用します。 -
レプリケーション・サーバー構成を、「タスク1: 代替リカバリ・アプライアンスでのバックアップおよびREDOフェイルオーバーのための保護ポリシーの作成」で作成した保護ポリシー
alt_brf
に追加します。
レプリケーション・サーバー構成をバックアップおよびREDOフェイルオーバー保護ポリシーに関連付けるには:
-
リカバリ・アプライアンス管理者として代替リカバリ・アプライアンスのメタデータ・データベースに接続していることを確認します。
-
バックアップおよび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;
関連項目:
バックアップおよび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:dedicated
のvpcuser
資格証明を、保護されたデータベース上のウォレットに追加します。
$ 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を実行します。
データベースを登録し、制御ファイルをバックアップするには:
-
RMANを使用して、保護されたデータベースには
TARGET
として、代替リカバリ・アプライアンス・カタログにはCATALOG
として接続し、REGISTER DATABASE
コマンドを実行します。 -
REGISTER DATABASE
コマンドが完了した後、現在の制御ファイルを代替アプライアンスにバックアップします。BACKUP DEVICE TYPE SBT CURRENT CONTROLFILE;
-
制御ファイルのバックアップが代替アプライアンスからプライマリ・アプライアンスにレプリケートされたことを確認します。
タスク5: データベースがプライマリ・リカバリ・アプライアンスに登録されていることの確認
このステップでは、保護されたデータベースがプライマリ・アプライアンスに登録されていることを確認します。前のタスクでデータベースが代替アプライアンスに登録されるときにレプリケーションが構成されるため、データベースはプライマリ・アプライアンスに自動的に登録される必要があります。
プライマリ・アプライアンスへの登録を確認するには:
-
RMANで、CATALOG接続文字列にプライマリ・アプライアンス資格証明を使用して、データベースに接続します。
rman TARGET / CATALOG /@rapribrf-scan.acme.com:1521/rapri:dedicated
-
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概要および管理を参照してください。