9.3 True Cache用のGlobal Data Servicesの構成

これらは、True Cache用にOracle Global Data Services (GDS)を構成するための基本的なステップです。

その他のGDS構成オプションについては、Global Data Servicesフレームワークの構成を参照してください。

9.3.1 環境の設定

ソフトウェアをインストールする前に、Linux向けの、ハードウェア、ネットワーク、オペレーティング・システムおよびその他のソフトウェア要件を確認してください。

  • GDSプール内のプライマリ・データベースおよびすべてのTrue Cacheが、グローバル・サービス・マネージャ(GSM)のリスナーおよびOracle Notification Service (ONS)のポートすべてに到達(双方向)できる必要があります。GSMリスナー・ポートおよびONSポートを、アプリケーション層、GDSプール内のプライマリ・データベースとすべてのTrue Cache、GDSカタログおよびその他すべてのGSMに対してもオープンする必要があります。
  • GDSプール内のプライマリ・データベースおよびすべてのTrue CacheのTNSリスナー・ポート(デフォルト: 1521)を、GSMとGDSカタログに対してオープン(双方向)する必要があります。
  • 別のマシンからGDSCTLを実行する場合は、そのマシンからGDSプール内のプライマリ・データベースおよびすべてのTrue Cacheに対して直接、ポートをオープン(双方向)する必要もあります。

Global Data Servicesで必要となるメモリー、物理ストレージ、カーネル・バージョンおよびパッケージの詳細は、Databaseインストレーション・ガイドfor Linuxを参照してください。

9.3.2 グローバル・サービス・マネージャ・ソフトウェアのインストール

グローバル・サービス・マネージャ(GSM)は、GDSフレームワークの中心的要素であり、GDSCTLコマンドライン・インタフェースを含んでいます。

各リージョンに少なくとも1つのGSMをインストールします。高可用性を実現するには、各リージョンに2つのGSMを含めます。

GSMをインストールするには、Oracle Database Global Data Services概要および管理ガイドの次のトピックを参照してください。

9.3.3 True Cacheの構成

Oracle DBCAを使用して、または手動でTrue Cacheを作成します。

ノート:

後でGDSを使用してグローバル・サービスとして構成するため、Oracle DBCAを使用してTrue Cacheアプリケーション・サービスを構成したり、手動で構成する必要はありません。

Oracle DBCAの場合:

  1. 前提条件
  2. DBCAを使用したTrue Cacheの作成

手動構成の場合:

  1. 前提条件
  2. True Cacheの手動作成

9.3.4 GDSカタログ・データベースの構成

GDSカタログを含めるデータベースを構成します。

ノート:

これらのステップに加えて、高可用性および障害時リカバリのためにGDSカタログが保護されていることを確認してください。
  1. GDS管理者アカウントを作成し、GSMADMIN_ROLE権限を付与します。

    例:

    CREATE USER gsm_admin IDENTIFIED BY ****
    GRANT gsmadmin_role TO gsm_admin
  2. カタログ・データベースでGDSシステム・アカウントをロック解除します。

    sqlplus / as SYSDBA
    ALTER USER gsmuser ACCOUNT UNLOCK IDENTIFIED BY ****
    ALTER USER gsmcatuser ACCOUNT UNLOCK IDENTIFIED BY ****
  3. GDSCTLを起動します。

    gdsctl

9.3.5 GDSカタログの作成

プライマリ・データベース、またはGDS構成外のデータベースにGDSカタログを作成します。

大規模なGDS構成の場合は、GDSカタログをGDS構成内のデータベースの外部でホストすることをお薦めします。

create catalog -database db_name –region region_list -user user_name/password

例:

create catalog -database gdscatdb -region DCX, DC_Y -user gsmcatuser/****

カタログの設定時にリージョンを指定しなかった場合は、REGIONORAという名前のデフォルト・リージョンが作成されます。オプションで、後でさらにリージョンを追加できます。

9.3.6 グローバル・サービス・マネージャの設定

グローバル・サービス・マネージャ(GSM)を起動する前に、GSMをGDSカタログに登録する必要があります。

高可用性を実現するには、各リージョンに2つのGSMを含めます。

  1. GSMをリージョンに追加します。

    add gsm -gsm gsm_name -pwd password -catalog catalog_db_name -region region_name

    例:

    add gsm -gsm gsm_dc_x1 -catalog primdb1i -pwd **** -region DC_X

    ノート:

    このコマンドは、GSMをホストするシステムでのみ実行できます。GSMを実行する各システムでGSMごとにこのコマンドを繰り返します。
  2. GSMを起動します。

    start gsm -gsm gsm_name

    例:

    start gsm -gsm gsm_dc_x1
  3. GSMのステータスを確認します。

    status gsm

9.3.7 (オプション)リージョンの設定

GDSカタログの作成時にリージョンをまだ設定していなかった場合は、データ・センターごとにGDSリージョンを追加します。

高可用性を実現するには、各リージョンにバディ・リージョンを割り当てます。バディ・リージョンはリージョンごとに1つのみ許可されます。

ノート:

リージョンを追加するには、少なくとも1つのGSMを追加し実行する必要があります。
add region –region region_list
modify region -region region_name -buddy region_name

例:

add region -region DC_X, DC_Y
modify region -region DC_X -buddy DC_Y

9.3.8 GDSプールの設定

GDSプールを追加してから、プライマリ・データベースとTrue Cacheをプールに追加します。

add gdspool -gdspool db_pool_list
add database -connect db_name -region region_name -gdspool gds_pool_name

例:

add gdspool -gdspool sales
add database -connect primdb1i -pwd **** -gdspool sales –region DC_X  // primary
add database -connect tcdb1 -pwd **** -gdspool sales –region DC_X  // True Cache

ノート:

既存のTrue Cacheおよびサービスが実行されているGDSプールにTrue Cacheを追加するときにORA-44311: service service_name not runningという警告が表示された場合は、無視してかまいません。

9.3.9 グローバル・サービスの設定

プライマリ・データベース用とTrue Cache用のグローバル・データベース・アプリケーション・サービスを作成し開始します。

ノート:

アプリケーションでJDBCプログラミング・モデルが使用されている場合は、プライマリ・データベース・サービスとTrue Cacheサービスの名前を両方とも、ドメイン名(sales.example.comsales_tc.example.comなど)で完全修飾する必要があります。これは、GDSにデフォルトのドメイン名があり、それがデータベースのdomain_nameパラメータとは異なるためです。また、この完全修飾サービス名は64文字までに制限されています。

ノート:

PDB用のサービスを作成するには、PDB名が必要です。PDB名を指定しなかった場合、サービスはCDB$ROOTに作成されます。
  1. プライマリ・データベース用のグローバル・サービスを作成します。

    add service -service service_name.domain_name -gdspool gdspool_name -preferred dbname_list -pdbname primary_pdb_name -role primary

    例:

    add service -service sales.example.com -gdspool sales -preferred primdb1i -pdbname sales_pdb -role primary
  2. True Cache用のグローバル・サービスを作成します。

    add service -service service_name.domain_name -gdspool gdspool_name -preferred_all -pdbname primary_pdb_name -clbgoal SHORT –rlbgoal SERVICE_TIME –locality LOCAL_ONLY –region_failover -lag lag_value -role true_cache -failover_primary

    例:

    add service -service sales_tc.example.com -gdspool sales -preferred_all -pdbname sales_pdb -clbgoal SHORT –rlbgoal SERVICE_TIME –locality LOCAL_ONLY –region_failover -lag 15 -role true_cache -failover_primary

    ノート:

    -failover_primaryオプションには、バグ36740927用のパッチが必要です。
  3. True Cacheサービスをプライマリ・データベース・サービスに関連付けます。

    • True Cacheと単一インスタンス・プライマリ・データベースの場合は、DBMS_SERVICE_PRVT PL/SQLパッケージを使用します。

      プライマリ・データベースで、最初にPDBに接続します。次の例では、sales.example.comおよびsales_tc.example.comサービスを使用します。
      ALTER SESSION SET CONTAINER=primary_pdb_name;
      DECLARE
          db_params sys.dbms_service_prvt.svc_parameter_array;
          cl_params sys.dbms_service_prvt.svc_parameter_array;
      BEGIN
          -- modify an already existing primary service SALES to set the TRUE_CACHE_SERVICE attribute and associate with SALES_TC
          db_params('true_cache_service') :='sales_tc.example.com';
          DBMS_SERVICE_PRVT.MODIFY_SERVICE('sales.example.com', cl_params, db_params, FALSE, 1);
      END;
    • Oracle RACプライマリ・データベースの場合は、srvctlコマンドライン・ユーティリティを-global_overrideオプションとともに使用してグローバル・サービスを変更します。

      Oracle DBCAを使用してTrue Cacheを構成する場合は、次のコマンドを使用します:

      srvctl add service -db primary_db_unique_name -service primary_db_service_name.domain_name -preferred primary_db_instance_list -pdb primary_pdb_name -global_override

      例:

      srvctl add service -db primdb1i -service sales.example.com -preferred primdb1i1,primdb1i2 -pdb sales_pdb -global_override

      手動構成のオプションについては、「プライマリ・データベースでのデータベース・アプリケーション・サービスの作成」を参照してください。

      ノート:

      また、プライマリ・データベース・サービスの停止時や再起動時にエラーが発生しないように、True Cacheサービスをその追加先のクラスタで無効にします。例:

      srvctl start service -d primdb1i -s sales_tc.example.com
      srvctl stop service -d primdb1i -s sales_tc.example.com
      srvctl disable service -d primdb1i -s sales_tc.example.com

      これによってスタンバイ・データベースやTrue Cacheが影響を受けることはありません。これは、True Cacheサービスが無効になっているクラスタの外部でそれらが実行されるためです。無効ステータスは、プライマリ・ディクショナリおよびDBA_SERVICESには格納されず、Cluster Ready Services (CRS)にのみ格納され、True Cacheサービスが追加されているクラスタにのみ格納されます。クラスタ外部のその他のデータベースは、DBMS_SERVICE.START_SERVICEを使用してそのサービスを開始でき、この設定による影響を受けません。

  4. それらのサービスを開始します。

    start service -service service_name.domain_name

    次の例では、プライマリ・データベースとすべてのTrue Cacheでサービスを開始します:

    start service -service sales.example.com
    start service -service sales_tc.example.com

9.3.9.1 JDBCの場合のグローバル・サービスのベスト・プラクティス

JDBCのsetReadOnly(TRUE)フラグを指定してグローバル・サービスを使用するには、次のベスト・プラクティスに従います。

  • 完全修飾名(sales.example.comsales_tc.example.comなど)を使用してプライマリ・データベース用とTrue Cache用のグローバル・サービスを作成します。これは、GDSにデフォルトのドメイン名があり、それがデータベースのdomain_nameパラメータとは異なるためです。また、この完全修飾サービス名は64文字までに制限されています。
  • True Cacheサービスをプライマリ・データベース・サービスに関連付けるには、DBMS_SERVICEではなくDBMS_SERVICE_PRVTを使用します。

9.3.9.2 GDSCTL add serviceのオプション

この表では、True Cacheに適用される、GDSCTL add serviceのオプションについて説明します。

オプション 説明
-available dbname_list

優先データベースまたはTrue Cacheを使用できない場合の、そのサービスを実行する使用可能なデータベースまたはTrue Cacheを、カンマ区切りリストで指定します。使用可能なインスタンスのリストは指定できません。データベースとTrue Cacheのみです。modify serviceコマンドを-server_poolパラメータとともに使用すると、インスタンスレベルの設定を指定できます。

使用可能なデータベースまたはTrue Cacheのリストは、優先データベースまたはTrue Cacheのリストと相互に排他的である必要があります。

このオプションは、-preferred_allオプションとともに使用できません

-clbgoal {SHORT | LONG} True Cacheサービスについては、ランタイム・ロード・バランシングのために、接続ロード・バランシング目標をSHORTに設定します。
-failover_primary

-roleTRUE_CACHEであるときは、True Cacheを使用できない場合にサービスをプライマリ・データベースにフェイルオーバーできます。-preferredまたは-availableリストにプライマリ・データベースも含めるか、-preferred_allオプションを使用します。

ノート:

-failover_primaryオプションには、バグ36740927用のパッチが必要です。
-gdspool gdspool_name サービスを追加するGlobal Data Servicesプールの名前を指定します。プール名を指定せず、ユーザーにアクセス権が付与されているgdspoolが1つのみである場合は、アクセス権が付与されているそのgdspoolが、デフォルトのgdspoolとして使用されます。
-lag {lag_value | ANY}

サービスの最大許容ラグを秒単位で指定します。上限しきい値がない場合は、ANYと入力します。指定されたラグ時間を超えてTrue Cacheがプライマリ・データベースより遅れている場合は、サービスにより、True Cacheが追いつくまでそのTrue Cacheへのリクエストの転送が中止されます。

lagのデフォルト値(指定していない場合)はANYです。

-locality {ANYWHERE | LOCAL_ONLY} True Cacheサービスについて、局所性をLOCAL_ONLYに設定します。これにより、負荷に関係なくGDSによって同じリージョン内のTrue Cacheにのみルーティングすることを指定します。このオプションは、-region_failoverとともに使用します。それにより、リージョン内のすべてのTrue Cacheに障害が発生した場合に、クライアント接続およびリクエストが別のリージョンにルーティングされるようになります。
-pdbname primary_pdb_name

プライマリ・プラガブル・データベース(PDB)の名前を入力します。

ノート:

PDB用のサービスを作成するには、PDB名が必要です。PDB名を指定しなかった場合、サービスはCDB$ROOTに作成されます。
-preferred dbname_list

サービスを実行する優先データベースまたはTrue Cacheをカンマ区切りリストで指定します。優先インスタンスは指定できません。データベースとTrue Cacheのみです。インスタンスレベルの設定を指定するには、modify serviceコマンドを使用します。

優先データベースまたはTrue Cacheのリストは、使用可能なデータベースまたはTrue Cacheのリストと相互に排他的である必要があります。

このオプションは、-preferred_allオプションとともに使用できません

-preferred_all True Cacheサービスについて、このサービスを既存および将来のすべてのTrue Cacheで開始することを指定します(-failover_primaryとともに使用した場合は、プライマリ・データベースでも開始される)。
-region_failover サービスでリージョン・フェイルオーバーが有効であることを示します。このオプションは、-localityオプションにLOCAL_ONLYを指定する場合にのみ使用できます。
-rlbgoal {SERVICE_TIME | THROUGHPUT} True Cacheサービスについて、ランタイム・ロード・バランシング目標をSERVICE_TIMEに設定して、スループットではなくレスポンス時間によって接続を分散させます。
-role {PRIMARY] | [PHYSICAL_STANDBY | TRUE_CACHE}

このサービスをデータベースで開始するためにそのデータベースに付与されている必要があるデータベース・ロールを指定します。

プライマリ・データベース・サービスの場合は、PRIMARYを使用します。

True Cacheサービスの場合は、TRUE_CACHEを使用します。これにより、サービスがプライマリ・データベースではなく他のTrue Cacheでのみ実行されるようになります。

-service service_name.domain_name

グローバル・サービスの名前を指定します。

ノート:

アプリケーションでJDBCプログラミング・モデルが使用されている場合は、プライマリ・データベース・サービスとTrue Cacheサービスの名前を両方とも、ドメイン名(sales.example.comsales_tc.example.comなど)で完全修飾する必要があります。これは、GDSにデフォルトのドメイン名があり、それがデータベースのdomain_nameパラメータとは異なるためです。また、この完全修飾サービス名は64文字までに制限されています。

グローバル・サービス名は、GDSプール内で一意である必要があり、ドメイン修飾されている場合はGDS構成内でも一意である必要があります。グローバル・サービスは、データベースに同じ名前のローカル・サービスまたはグローバル・サービスがすでに存在する場合、そのデータベースで作成できません。

グローバル・サービス名には、英数字、アンダースコア(_)およびピリオド(.)を含めることができます。最初の文字は英数字にする必要があります。グローバル・サービス名の長さは最大64文字です。ドメイン修飾されたグローバル・サービス名の長さは、最大250文字です。

グローバル・サービスに接続するために使用されるOracle Net接続記述子には、ドメイン修飾されたサービス名を含める必要があります。

True Cacheサービス名については、「データベース・アプリケーション・サービスに関するベスト・プラクティス」を参照してください。

ノート:

この表では、True Cache固有の、add serviceのオプションを示しています。完全な構文とパラメータについては、Oracle Database Global Data Services概要および管理ガイドadd serviceを参照してください。

9.3.10 クライアントのTNSエントリの設定

リージョンに基づいて、プライマリ・データベースおよびTrue Cacheのtnsnames.oraファイルを更新します。

例9-1 プライマリ・データベース

この例では、ADDRESS_LISTは、プライマリ・データベースが存在するリージョンにあるGSMを指しています。

sales =
(DESCRIPTION =(CONNECT_TIMEOUT=90)(RETRY_COUNT=30)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
 (FAILOVER=ON)
  (ADDRESS_LIST = //Lists DC_X's GSM listeners because primary is in DC_X
   (LOAD_BALANCE=ON)
    (ADDRESS = (PROTOCOL = TCP)(HOST = gsm_dc_x1)(PORT = 1572)))
  (CONNECT_DATA =
    (SERVICE_NAME = sales.example.com)))

例9-2 True Cache

この例では、最初のADDRESS_LISTは、True Cacheが存在するリージョンにあるGSMを指しています。2番目のADDRESS_LISTは、関連付けられているバディ・リージョンにあるGSMを指しています。

sales_tc =
(DESCRIPTION =(CONNECT_TIMEOUT=90)(RETRY_COUNT=30)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
 (FAILOVER=ON)
  (ADDRESS_LIST = //DC_X's GSM listeners
   (LOAD_BALANCE=ON)
    (ADDRESS = (PROTOCOL = TCP)(HOST = gsm_dc_x1)(PORT = 1572)))
  (ADDRESS_LIST = //buddy DC_Y's GSM listeners
   (LOAD_BALANCE=ON)
    (ADDRESS = (PROTOCOL = TCP)(HOST = gsm_dc_y1)(PORT = 1572)))
  (CONNECT_DATA =
    (SERVICE_NAME = sales_tc.example.com) (REGION=DC_X)))   // this client is in DC_X