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の場合:
手動構成の場合:
9.3.4 GDSカタログ・データベースの構成
GDSカタログを含めるデータベースを構成します。
ノート:
これらのステップに加えて、高可用性および障害時リカバリのためにGDSカタログが保護されていることを確認してください。-
GDS管理者アカウントを作成し、
GSMADMIN_ROLE
権限を付与します。例:
CREATE USER gsm_admin IDENTIFIED BY ****
GRANT gsmadmin_role TO gsm_admin
-
カタログ・データベースでGDSシステム・アカウントをロック解除します。
sqlplus / as SYSDBA
ALTER USER gsmuser ACCOUNT UNLOCK IDENTIFIED BY ****
ALTER USER gsmcatuser ACCOUNT UNLOCK IDENTIFIED BY ****
-
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を含めます。
-
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ごとにこのコマンドを繰り返します。 -
GSMを起動します。
start gsm -gsm gsm_name
例:
start gsm -gsm gsm_dc_x1
-
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.com
やsales_tc.example.com
など)で完全修飾する必要があります。これは、GDSにデフォルトのドメイン名があり、それがデータベースのdomain_name
パラメータとは異なるためです。また、この完全修飾サービス名は64文字までに制限されています。ノート:
PDB用のサービスを作成するには、PDB名が必要です。PDB名を指定しなかった場合、サービスはCDB$ROOT
に作成されます。
-
プライマリ・データベース用のグローバル・サービスを作成します。
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
-
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用のパッチが必要です。 -
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
を使用してそのサービスを開始でき、この設定による影響を受けません。
-
-
それらのサービスを開始します。
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.com
やsales_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のみです。 使用可能なデータベースまたはTrue Cacheのリストは、優先データベースまたはTrue Cacheのリストと相互に排他的である必要があります。 このオプションは、-preferred_allオプションとともに使用 |
-clbgoal {SHORT | LONG} |
True Cacheサービスについては、ランタイム・ロード・バランシングのために、接続ロード・バランシング目標をSHORT に設定します。
|
-failover_primary |
ノート: -failover_primary オプションには、バグ36740927用のパッチが必要です。 |
-gdspool gdspool_name |
サービスを追加するGlobal Data Servicesプールの名前を指定します。プール名を指定せず、ユーザーにアクセス権が付与されているgdspool が1つのみである場合は、アクセス権が付与されているそのgdspool が、デフォルトのgdspool として使用されます。
|
-lag {lag_value | 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のみです。インスタンスレベルの設定を指定するには、 優先データベースまたは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} |
このサービスをデータベースで開始するためにそのデータベースに付与されている必要があるデータベース・ロールを指定します。 プライマリ・データベース・サービスの場合は、 True Cacheサービスの場合は、 |
-service service_name.domain_name |
グローバル・サービスの名前を指定します。 ノート: アプリケーションでJDBCプログラミング・モデルが使用されている場合は、プライマリ・データベース・サービスとTrue Cacheサービスの名前を両方とも、ドメイン名(sales.example.com やsales_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