ロールベースのサービスを使用したOracle Databaseサービスの構成

各サービスにデータベース・ロールを割り当てることで、プライマリとスタンバイの両方のOracleデータベースでOracleデータベース・サービスの起動を自動的に制御できます。

Oracleデータベース・ポリシーがAUTOMATICに設定されている場合およびサービス・ロールがデータベースの現行のロールに一致する場合、Oracleデータベースが起動すると、Oracleデータベース・サービスは自動的に開始します。この場合、Oracleデータベースのロールは、Active Data Guard構成の一部として、プライマリ・ロールまたはスタンバイ・ロールのいずれかに含まれます。

Data Guard構成内のすべてのOracleデータベースについて、srvctlユーティリティを使用してサービスを同一の構成にします。次の例では、プライマリとスタンバイの両方のOracleデータベースでまったく同じに作成された2つのサービスを示します。『Oracle Database管理者ガイド』「srvctl add service」を参照してください。

次のステップでは、プライマリOracleデータベースがオースティンにあり、スタンバイOracleデータベースがヒューストンにある場合に、primaryroleおよびstandbyroleデータベース・サービスをプライマリとスタンバイの両方のOracleデータベースに追加しています。

  1. プライマリOracleデータベースで、primaryroleデータベース・サービスを追加します。このOracleデータベースがプライマリとして機能している間、このサービスは開始します。
    srvctl add service -d Austin -s primaryrole -r ssa1,ssa2,ssa3,
     ssa4 -l PRIMARY -q TRUE -e SESSION -m BASIC -w 10 -z 150
  2. プライマリOracleデータベースで、standbyroleデータベース・サービスを追加します。このサービスは、このOracleデータベースがスタンバイ・ロールに切り替わり、スタンバイOracleデータベースでリアルタイム・レポートを提供する場合にのみ開始します。
    srvctl add service -d Austin -s standbyrole -r ssa1,ssa2,ssa3,
     ssa4 -l PHYSICAL_STANDBY -q TRUE -e SESSION -m BASIC -w 10 -z 150
  3. スタンバイOracleデータベースで、primaryroleデータベース・サービスを追加します。このサービスは、このOracleデータベースがプライマリ・ロールに切り替った場合にのみ開始します。
    srvctl add service -d Houston -s primaryrole -r ssb1,ssb2,ssb3,
     ssb4 -l PRIMARY -q TRUE -e SESSION -m BASIC -w 10 -z 150
  4. スタンバイOracleデータベースで、standbyroleデータベース・サービスを追加します。このOracleデータベースがスタンバイとして機能している間、このサービスは開始し、スタンバイOracleデータベースでリアルタイム・レポートを提供します。
    srvctl add service -d Houston -s standbyrole -r ssb1,ssb2,ssb3,
     ssb4 -l PHYSICAL_STANDBY -q TRUE -e SESSION -m BASIC -w 10 -z 150
  5. プライマリOracleデータベースで次のSQL文を実行し、サービス定義がフィジカル・スタンバイOracleデータベースに送信され適用されるようにします。
    EXECUTE DBMS_SERVICE.CREATE_SERVICE('standbyrole', 'standbyrole', NULL, 
     NULL, TRUE, 'BASIC', 'SESSION', 150, 10, NULL);
  6. 適切なtnsnames.oraファイルで接続の別名を追加して、プライマリとスタンバイのOracleデータベースを識別し、それぞれのデータベース・サービス名を指定します。
    primaryinstance=
      (DESCRIPTION_LIST=
        (LOAD_BALANCE=off)
        (FAILOVER=on)
        (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=on)
               (ADDRESS=(PROTOCOL=TCP)(HOST=myhost1)(PORT=1521)))
                   (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primaryrole)))
     
        (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=on)
               (ADDRESS=(PROTOCOL=TCP)(HOST=myhost2)(PORT=1521)))
                   (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primaryrole))))
     
    standbyinstance=
       (DESCRIPTION_LIST= 
         (LOAD_BALANCE=off)
         (FAILOVER=on)
         (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=on)
                (ADDRESS=(PROTOCOL=TCP)(HOST=myhost1)(PORT=1521)))
                    (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=standbyrole)))
     
         (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=on)
                (ADDRESS=(PROTOCOL=TCP)(HOST=myhost2)(PORT=1521)))
                   (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=standbyrole))))
  7. プライマリOracleデータベースで、primaryroleデータベース・サービスを開始します。
    srvctl start service -d Austin -s primaryrole 
  8. スタンバイOracleデータベースで、standbyroleデータベース・サービスを開始します。
    srvctl start service -d Houston -s standbyrole