レプリケーションに加えて、他の高可用性計画をリカバリ・アプライアンスとともに使用して、特定のシナリオでのデータ損失に対する保護を強化できます。
サイト障害およびシステムの停止に対してアプライアンスを保護するOracle最大可用性アーキテクチャ(MAA)のベスト・プラクティスは、リカバリ・アプライアンス・レプリケーションを使用して障害回復戦略を実装することです。レプリカ・アプライアンスを使用すると、保護されたデータベースのバックアップ、REDOおよびリストア操作は中断されることなく続行され、完全なデータ保護が維持されます。
組織に障害回復戦略がない場合、または既存の障害回復戦略にローカル・システムの高可用性を追加する場合は、リカバリ・アプライアンスのバックアップおよびREDOフェイルオーバー機能を使用できます。この機能は、リカバリ・アプライアンス・ソフトウェア更新12.1.1.1.8から使用可能です。バックアップおよびREDOフェイルオーバーの構成の詳細および手順は、「バックアップおよびREDOフェイルオーバー計画を使用した一時的な停止の管理」を参照してください。
高可用性(HA)および障害回復ソリューションのもう1つのコンポーネントは、Oracle Data Guardです。Oracle Data Guardは、保護されたデータベースの同期化されたスタンバイ・データベースを維持することによって、サービス中断および生じたデータ損失を最小限に抑えます。Oracle Data Guardの詳細は、「最大可用性: Oracle Data Guardと連携するリカバリ・アプライアンス」を参照してください。
関連項目:
リカバリ・アプライアンス・レプリケーションの詳細は、「リカバリ・アプライアンスでのバックアップのレプリケート」を参照してください。
バックアップおよびREDOフェイルオーバーは、プライマリ・リカバリ・アプライアンスが停止したとき、または計画メンテナンスが必要なときに、保護されたデータベースがバックアップおよびREDOを一時的に代替リカバリ・アプライアンスに送ることを許可する高可用性機能です。これによって、保護されたデータベースのバックアップおよびREDOは中断することなく続行され、完全なデータ保護を維持できます。また、データベースのローカル・アーカイブ・ログの宛先が一杯になりデータベースに影響を与えることを防止します(代替のバックアップ宛先がない場合はそのようになることがあります)。
バックアップおよびREDOフェイルオーバーが構成されている環境で、保護されたデータベースは、通常の状況ではプライマリ・リカバリ・アプライアンスにバックアップおよびREDOを送信します。そのアプライアンスが使用できない場合、保護されたデータベースは、プライマリのサービスがリストアされるまで、バックアップおよびREDOを代替リカバリ・アプライアンスに送信します。
代替アプライアンスは、受信した一時バックアップから仮想完全バックアップを作成せず、バックアップ・ピースの格納のみを行います(増分バックアップおよびアーカイブ・ログ・バックアップ)。プライマリ・アプライアンスがオンラインに戻って機能するようになると、代替アプライアンスはすべての一時バックアップをプライマリ・アプライアンスに転送し、プライマリ・アプライアンスはそのバックアップを使用して対応する仮想完全バックアップを作成します。すべての仮想完全バックアップが作成されると、保護されたデータベースはプライマリ・アプライアンスへのバックアップおよびREDOの送信を再開します。代替アプライアンスは、プライマリ・アプライアンスに正常に転送して初めて、ローカル記憶域から一時バックアップ・ピースを削除します。
この項では、バックアップおよびREDOフェイルオーバーを構成する方法について説明します。基本的なワークフローは次のとおりです。
「バックアップおよびREDOフェイルオーバーのためのプライマリ・リカバリ・アプライアンスの構成」の説明に従って、プライマリ・リカバリ・アプライアンスを構成します。
「バックアップおよびREDOフェイルオーバーのための代替リカバリ・アプライアンスの構成」の説明に従って、代替リカバリ・アプライアンスを構成します。
「バックアップおよびREDOフェイルオーバーのためのレプリケーションの構成」の説明に従って、代替リカバリ・アプライアンスからプライマリ・リカバリ・アプライアンスへのレプリケーションを構成します。
「バックアップおよびREDOフェイルオーバーのための保護されたデータベースの構成」の説明に従って、バックアップを送信するために保護されたデータベースを構成します。
バックアップおよびREDOフェイルオーバーのためにプライマリ・リカバリ・アプライアンスを構成するには、レプリケーション・シナリオのダウンストリーム・リカバリ・アプライアンスの設定用タスクの多くを実行します。
タスク1: プライマリ・リカバリ・アプライアンスでのVPCユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成
「仮想プライベート・カタログ・アカウントの作成」の手順に従います。
たとえば、次のSQL文を実行して、CREATE SESSION
権限を持つVPCユーザーvpcuser
およびレプリケーション・ユーザーrepuser_from_alternate
を作成します。
GRANT CREATE SESSION TO vpcuser IDENTIFIED BY password; GRANT CREATE SESSION TO repuser_from_alternate IDENTIFIED BY password;
タスク2 プライマリ・リカバリ・アプライアンスでの保護ポリシーの作成
「DBMS_RAを使用した保護ポリシーの作成」の手順に従います。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: プライマリ・リカバリ・アプライアンスでの保護ポリシーへのデータベースの追加
「DBMS_RAを使用した保護されたデータベースのメタデータの追加」の手順に従います。
たとえば、次の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ユーザーおよびレプリケーション・ユーザーへのデータベース・アクセスの付与
「DBMS_RAを使用したリカバリ・アプライアンス・アカウントへのデータベース・アクセスの付与」の手順に従います。
たとえば、次の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;
代替リカバリ・アプライアンスを構成するには、レプリケーション・シナリオのアップストリーム・リカバリ・アプライアンスの設定に類似したタスクを実行します。
タスク1 代替リカバリ・アプライアンスでのバックアップおよびREDOフェイルオーバーのための保護ポリシーの作成
「DBMS_RAを使用した保護ポリシーの作成」の手順に従います。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: 代替リカバリ・アプライアンスでの保護ポリシーへのデータベースの追加
「DBMS_RAを使用した保護されたデータベースのメタデータの追加」の手順に従います。
たとえば、次の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ユーザー・アカウントおよびレプリケーション・ユーザー・アカウントの作成」で作成されました。
「DBMS_RAを使用したリカバリ・アプライアンス・アカウントへのデータベース・アクセスの付与」の手順に従います。
たとえば、次のPL/SQLプログラムを実行して、VPCユーザーvpcuser
に保護されたデータベースorcl12
で必要な権限を付与します。
BEGIN DBMS_RA.GRANT_DB_ACCESS ( username => 'vpcuser', db_unique_name => 'orcl12'); END;
プライマリ・リカバリ・アプライアンスおよび代替リカバリ・アプライアンスを構成した後、代替アプライアンスからプライマリ・アプライアンスへのレプリケーションの設定に類似したタスクを実行します。このシナリオでは、代替アプライアンスはアップストリーム・ロールを持ち、プライマリ・アプライアンスはダウンストリーム・ロールを持ちます。
タスク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
は、レプリケーション・ユーザー・アカウントのユーザー名です。
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 => '/dbfs_repdbfs/REPLICATION'); END;
レプリケーション・サーバー構成の作成を確認します。
たとえば、次の問合せを実行します。
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フェイルオーバーのレプリケーションを構成した後、保護されたデータベースの管理者はこの項のタスクを実行して、保護されたデータベースが通常の状況ではバックアップをプライマリ・リカバリ・データベースに送信し、計画停止または計画外の停止の間は代替リカバリ・アプライアンスに送信できるようにする必要があります。
タスク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概要および管理を参照してください。