分散データベース・トポロジの構成

シャード・カタログ用のデータベースとすべてのシャードを対応するTNSリスナーとともに構成すると、GDSCTLを使用して分散データベース・メタデータをシャード・カタログ・データベースに追加できるようになります。分散データベース・メタデータは、分散データベースに使用するトポロジを記述します。

分散データベース・トポロジは、データ分散方法、レプリケーション(高可用性)テクノロジ、分散データベースに存在するデフォルトのチャンク数、シャード・ディレクタの場所と数、分散データベース内のシャードグループ、シャード領域、リージョンおよびシャードの数、および分散データベースへの接続に使用するグローバル・サービスで構成されます。

『Oracle Database Global Data Services概要および管理ガイド』Global Data Services Control Utility (GDSCTL)コマンド・リファレンスを手元に用意して、構成手順で使用するGDSCTLコマンドの使用方法とオプションの詳細を調べてください。

次に示す手順に従って、分散データベース・トポロジの構成を完了してください。

GDSCTLコマンドライン・インタフェースは、シャード・ディレクタ(グローバル・サービス・マネージャ)インストールの一部としてインストールされるため、コマンドはシャード・ディレクタ・ホストから実行してください。

シャード・カタログの作成

GDSCTL CREATE SHARDCATALOGコマンドは、分散データベース・トポロジについての情報を示すメタデータをシャード・カタログ・データベースに作成するために使用します。

CREATE SHARDCATALOGを実行して、残りの分散データベース・メタデータが作成されると、いくつかのメタデータ・プロパティは分散データベース全体を最初から再作成しないと変更できなくなります。これらには、分散データベース方法(システム管理、ユーザー定義、コンポジット)、レプリケーション・テクノロジ(Oracle Data GuardまたはRaftレプリケーション)、シャード領域内のチャンクのデフォルト数などがあります。コマンドに使用可能なオプションとそのデフォルト値の完全なリストは、GDSCTLのリファレンス・ドキュメントを参照してください。

シャード・カタログ接続文字列

CREATE SHARDCATALOGコマンドを実行すると、GDSCTLは指定されたユーザー名と接続文字列でシャード・カタログ・データベースに接続します。

高可用性または障害回復のために、シャード・カタログ・データベースにスタンバイ・データベースが関連付けられているときには、接続文字列(次の例のcatalog_connect_string)で、すべてのプライマリ・データベースおよびスタンバイ・データベースを指定する必要があります。接続文字列にスタンバイ・データベースを含めていないと、シャード・ディレクタのプロセスはプライマリ・シャード・カタログが使用不可のときにスタンバイに接続できなくなります。

catalog_connect_stringでは、シャード・カタログ・データベースのPDBを指定します。CDB$ROOTは指定しないでください。

次に、簡潔なtnsnames.oraのエントリを示します。

CATALOG_CONNECT_STRING=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = primary_catalog)(PORT = 1521))
      (ADDRESS = (PROTOCOL = tcp)(HOST = standby_catalog)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = catpdb.example.com)
    )
  )

シャード・カタログの作成

計画した分散データベース・トポロジに適した設定で、CREATE SHARDCATALOGを実行します。

システム管理の分散方法

次の例では、region1およびregion2という2つのリージョンがあるシステム管理構成用の分散データベース・メタデータが作成されます。システム管理はデフォルトの分散方法であるため、-shardingパラメータで指定する必要はありません。

GDSCTL> create shardcatalog -database catalog_connect_string
 -user mysdbadmin/mysdbadmin_password -repl DG -region region1,region2

-shardspaceの指定も省略すると、shardspaceoraというデフォルトのシャード領域が作成されます。-regionの指定を省略すると、regionoraというデフォルトのリージョンが作成されます。単一のデフォルト・リージョンがデフォルト・シャード領域とともに作成されると、そのシャード領域にshardspaceora_regionoraというデフォルトのシャードグループも作成されます。

システム管理の分散を使用するレプリケーション(-repl)の場合は、Oracle Data Guard (DG)またはRaftレプリケーション(native)のいずれかを選択できます。

コンポジット分散方法

次の例は、コンポジット分散データベース用のシャード・カタログ・メタデータの作成方法を示しています。ここでは、MaxAvailability保護モードのData Guardレプリケーション、シャード領域ごとに60チャンク、および2つのシャード領域を設定します。

GDSCTL> create shardcatalog -database catalog_connect_string
 -user mysdbadmin/mysdbadmin_password -sharding composite -chunks 60 
 -protectmode maxavailability -shardspace shardspace1,shardspace2

ユーザー定義の分散方法

次の例は、ユーザー定義の分散データベースのシャード・カタログ・メタデータの作成方法を示しています。ここでは、Data Guardレプリケーションを設定しています。

GDSCTL> create shardcatalog -database catalog_connect_string
 -user mysdbadmin/mysdbadmin_password -sharding user
 -protectmode maxperformance 

コマンドの使用方法は、GDSCTLのドキュメントを参照するか、GDSCTL HELP CREATE SHARDCATALOGを実行してください。

レプリケーション設定

Oracle Data Guardは、任意のデータ分散方法で使用でき、-repl DGを使用してCREATE SHARDCATALOGコマンドで構成されます。

Raftレプリケーションにはもう少し計画が必要ですが、CREATE SHARDCATALOGコマンドで-repl nativeを指定して有効にすることもできます。追加の構成可能な属性については、Raftレプリケーションの構成および管理を参照してください。

シャード・カタログへの今後の接続

GDSCTLは、シャード・カタログ管理者の資格証明をローカル・ホストのウォレットに保管します。ただし、次回以降の別のホストでのGDSCTLセッションでは、次に示すようにGDSCTL CONNECTコマンドを使用して、管理タスクを実行するために明示的にシャード・カタログに接続することが必要になる場合があります。

GDSCTL> connect mysdbadmin/mysdbadmin_password@catalog_connect_string

シャード・ディレクタの追加と起動

構成にシャード・ディレクタを追加して起動します。シャード・ディレクタでは、GDSCTLコマンドなどのイベントに応じて分散データベース・システムの監視やバックグラウンド・タスクを実行します。

次のコマンドは、シャード・ディレクタのプロセスを実行するホストで実行する必要があります。これは、シャード・カタログ・ホストまたはシャード・ディレクタ・プロセスの専用ホストのどちらかになります。

  1. 次の例に示すように、シャード・ディレクタ(GSM)を追加して起動します。
    GDSCTL> connect mysdbadmin/mysdbadmin_password@catalog_connect_string
    GDSCTL> add gsm -gsm sharddirector1 -catalog catalog_connect_string -pwd gsmcatuser_password
    GDSCTL> start gsm -gsm sharddirector1
    

    -gsmパラメータの値は、今後のGDSCTLコマンドで、このシャード・ディレクタを参照するために使用する名前です。-catalogパラメータと-pwdパラメータの値は、シャード・カタログ・データベースの作成時に使用したものと同じにする必要があります。

    パラメータの-listener-localons、および-remoteonsは、GDSCTLのリファレンスで説明されているように、それぞれのポート番号1522、6123、および6234をオーバーライドするために使用します。使用するポート番号は、デフォルトかユーザー定義化にかかわらず、ホストで使用可能なことと、実行中の別のソフトウェアやOracleリスナーと競合していないことを必ず確認してください。

  2. 追加のシャード・ディレクタがある場合は、それぞれのシャード・ディレクタ・ホストでADD GSMコマンドとSTART GSMコマンドを繰り返します。

    シャード・ディレクタの名前(この例では、sharddirector1)は、シャード・ディレクタごとに適切な名前に置き換えます。

    複数のシャード・ディレクタを使用する場合は、CREATE SHARDCATALOGコマンドで、それらのための複数のリージョンを作成しておく必要があります。また、ADD REGIONを実行することで後からリージョンを追加することもできます。

    シャード・ディレクタごとのリージョンは、次に示すように、ADD GSMごとの-regionパラメータで指定します。

    GDSCTL> add gsm -gsm sharddirector2 -catalog catalog_connect_string -pwd gsmcatuser_password -region dc2

今後のGDSCTLセッションでは、管理するシャード・ディレクタの明示的な指定が必要になることがあります。デフォルトのGSMORAシャード・ディレクタを示すエラー・メッセージが表示され場合は、次に示すように、GDSCTL SET GSMを実行してから作業を進めてください。

GDSCTL> set gsm -gsm sharddirector1

シャード領域の追加(必要な場合)

コンポジットまたはユーザー定義のデータ分散を使用するときに、目的の分散データベース・トポロジの達成にシャード領域の追加が必要な場合は、ADD SHARDSPACEコマンドを使用してシャード領域を追加します。

  • 次に示すように、ADD SHARDSPACEを実行します。
    GDSCTL> add shardspace -shardspace shardspace2 

    デフォルトでは、ADD SHARDSPACEコマンドは、CREATE SHARDCATALOGコマンドで使用した-chunks-protectmodeの値を継承します。チャンクの数とData Guardの保護モードは、ADD SHARDSPACE-chunksパラメータと-protectmodeパラメータを使用することでシャード領域ごとに指定できます。

必要に応じたシャードグループの追加

分散データベース・トポロジにシステム管理またはコンポジットのデータ分散方法を使用する場合は、アプリケーション用に必要な追加のシャードグループを追加することもできます。

それぞれのシャード領域には、少なくとも1つのプライマリ・シャードグループを含める必要があり、任意の数またはタイプのスタンバイ・シャードグループを含めることができます。シャードグループは、ユーザー定義の分散方法では使用しません。

  • ADD SHARDGROUPを実行して、構成にシャードグループを追加します。
    GDSCTL> add shardgroup -shardgroup shardgroup_primary -shardspace shardspace1
     -deploy_as primary -region region1
    GDSCTL> add shardgroup -shardgroup shardgroup_standby -shardspace shardspace1
     -deploy_as active_standby -region region2
    

    ADD SHARDGROUPを実行するときに-deploy_asパラメータを使用すると、シャードグループの3つのタイプprimarystandby (マウント済、未オープン)、およびactive_standby (オープン、問合せに使用可能)を指定できます(デフォルトは、standbyです)。

    この後でシャードグループに追加したシャードは、そのシャードグループの-deploy_as設定に対応するモードでオープンする必要があります。たとえば、プライマリ・シャードグループの場合は読取り/書込み、スタンバイ・シャードグループの場合はマウント済、またはアクティブ・スタンバイ・シャードグループの場合は読取り専用を適用します。

    シャードのデプロイ後、シャードの現在のモードはシャード・ディレクタによって監視され、その後のスイッチオーバー操作やフェイルオーバー操作によっては同じシャードグループ内に異なるオープン・モードのシャードが存在する可能性や予測などがシャード・カタログに通知されます。

分散データベース・トポロジの検証

シャード・データベースに関する情報をカタログに追加する前に、分散データベース・トポロジが適切なことを確認します。その後で、各種のGDSCTL CONFIGコマンドを使用して作業を進めてください。

シャードを追加してデプロイした後では、シャード・カタログ・メタデータの大部分が変更できなくなります。そのため、この時点で構成を検証することが重要なタスクになります。

  • GDSCTL CONFIGを実行して、全体的な構成情報を表示します。
    GDSCTL> config
    
    Regions
    ------------------------
    region1                       
    region2                       
    
    GSMs
    ------------------------
    sharddirector1                          
    sharddirector2                          
    
    Sharded Database
    ------------------------
    orasdb                     
    
    Databases
    ------------------------ 
    
    Shard Groups
    ------------------------
    shardgroup_primary                         
    shardgroup_standby                         
    
    Shard spaces
    ------------------------
    shardspaceora                         
    
    Services
    ------------------------
    
    GDSCTL pending requests
    ------------------------
    Command                   Object                  Status
    -------                   ------                  ------
    
    Global properties
    ------------------------
    Name: oradbcloud
    Master GSM: sharddirector1
    DDL sequence #: 0

    シャード領域やシャードグループなどのシャード・カタログ・オブジェクトに関する詳細な情報は、各種のGDSCTL CONFIGコマンドを使用して表示できます。様々なGDSCTL CONFIGコマンドの完全なリストについては、GDSCTLのリファレンス・ドキュメントを参照するか、GDSCTL HELPを実行してください。

シャードCDBの追加

シャードPDBを格納するCDBは、ADD CDBコマンドを使用して分散データベース構成に追加します。

  1. 次に示すように、ADD CDBコマンドを実行します。
    GDSCTL> add cdb -connect cdb_connect_string -pwd gsmrootuser_password

    このコマンドにより、GDSCTLSYSDGとしてGSMROOTUSER/gsmrootuser_password@cdb_connect_stringに接続し、設定を検証して、CDBのDB_UNIQUE_NAMEを取得します。これが、シャード・カタログでのCDB名になります。

  2. 構成内のシャードPDBを格納するすべてのCDBに対して、ADD CDBコマンドを繰り返します。
  3. すべてのCDBを追加したら、GDSCTL CONFIG CDBを実行してカタログ内のCDBのリストを表示します。
    GDSCTL> config cdb

シャードPDBの追加

ADD SHARDコマンドは、シャードPDBの情報をシャード・カタログに追加するために使用します。追加した情報は、CONFIG SHARDコマンドで検証します。

  1. 次の例に示すように、データ分散方法に適した使用方法でADD SHARDを実行します。

    システム管理またはコンポジットの分散の場合は、次に示すパラメータでADD SHARDを実行します。

    
    GDSCTL> add shard -connect shard_connect_string -pwd gsmuser_password 
    -shardgroup shardgroup_name -cdb cdb_name
    

    ユーザー定義の分散の場合は、コマンドの使用方法がわずかに異なります。

    GDSCTL> add shard -connect shard_connect_string -pwd gsmuser_password 
    -shardspace shardspace_name -deploy_as db_mode -cdb cdb_name
    

    -cdbパラメータでは、シャードPDBが存在するCDBの名前を指定します。-shardgroupまたは-shardspaceでは、分散データベース・トポロジでのシャードの場所を指定します。-deploy_asでは、シャードのオープン・モード(primarystandbyactive_standby)を指定します。

    ノート:

    接続文字列にserver=dedicatedを設定することをお薦めします。

    ADD SHARDを実行すると、GDSCTLはSYSDGとしてGSMUSER/gsmuser_password@shard_connect_stringに接続し、シャードの設定を検証します。さらに、エラー・チェックのためにdbms_gsm_fix.validateShardを再実行し、db_unique_name_of_CDB_PDB_nameという命名規則を使用してシャード名(たとえばcdb1_pdb1)を作成します。

    最後に、シャードについての情報を示すメタデータがシャード・カタログに追加されます。

  2. GDSCTL CONFIG SHARDを実行して、シャード・カタログにあるシャード・メタデータを表示します。
    GDSCTL> config shard
    Name      Shard Group          Status    State    Region    Availability
    --------- -------------------  ------    -----    ------    ------------
    cdb1_pdb1 shardgroup_primary   U         none     region1   -
    cdb2_pdb1 shardgroup_standby   U         none     region2   -
    cdb3_pdb2 shardgroup_primary   U         none     region1   -
    cdb4_pdb2 shardgroup_standby   U         none     region2   -
    

    「Status」の値は、"アンデプロイ"のUになります。「State」と「Availability」は、DEPLOYコマンドの実行が正常に完了するまではnone-になります。

ホスト・メタデータの追加

すべてのシャード・ホストのホスト名とIPアドレスをシャード・カタログに追加します。

デプロイメント・プロセスの一環として、シャード・ディレクタはシャードと通信して、シャード・ディレクタのTNSリスナー・プロセスに登録するように指示します。このリスナー・プロセスは、信頼できるソースからの着信登録リクエストのみを受け入れ、不明なホストからの登録リクエストを拒否します。

シャード・ホストに複数のホスト名またはネットワーク・インタフェースが割り当てられている場合、シャード・ディレクタへの着信登録リクエストは、ADD SHARDの実行時に自動的に追加されていなかったホストから送信される可能性があります。この場合、その登録リクエストは拒否され、シャードは正常にデプロイされなくなります。この問題について目視できる現象は、DEPLOYの完了後に、CONFIG SHARDがシャードの「Availability」にPENDINGを示すことです。

この問題を回避するために、GDSCTL ADD INVITEDNODEコマンドを使用して、シャード・ホストのすべてのホスト名とIPアドレスをシャード・カタログ・メタデータに手動で追加します。

  1. 信頼できるホストのリストを表示します。

    デフォルトでは、ADD SHARDコマンドは、シャード・カタログ・メタデータにシャード・ホストのデフォルト・ホスト名を追加します。そのため、そのホストからシャード・ディレクタへの登録リクエストがすべて受け入れられるようになります。信頼できるホストのリストは、GDSCTL CONFIG VNCRコマンドを実行することで表示できます。

    GDSCTL> config vncr
  2. 構成内のすべてのホストからPingを実行して、ホスト名の解決が成功することを確認します。

    CONFIG VNCRの出力にリストされたすべてのホストは、その他のトポロジ内のすべてのホストから名前でアクセスできる必要があります。シャード、シャード・カタログ、およびシャード・ディレクタのホストからpingコマンドを使用して、リストされているすべてのホスト名のホスト名解決が成功することを確認します。

    問題を解決するには、オペレーティング・システムのコマンドや設定を使用して、すべてのホスト名を解決できることを確認します。

  3. REMOVE INVITEDNODEコマンドを実行して、どのホストからも必要とされていないホスト名と解決できないホスト名を手動で削除します。
  4. ADD INVITEDNODEコマンドを実行して、シャード・ホストのすべてのホスト名とIPアドレスをシャード・カタログ・メタデータに手動で追加します。
    GDSCTL> add invitednode 127.0.0.1

チェック・フリーDB_FILES

分散データベースに必要なチャンクおよび表領域セットの数を作成するための十分な容量があることを確認するために、各シャードに十分な空きデータ・ファイルがあることを確認します。

チェック・フリーDB_FILESおよびパラメータ設定を確認するには:

SQL> select count(*) from v$datafile;

  COUNT(*)
----------
XxxXX

SQL> show parameter db_files

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_files			     integer	 200

DB_FILES設定を計算する式は、シャード・データベースの作成を参照してください。