シャード・カタログ・データベースの作成
次の情報とガイドラインを使用して、シャード・カタログ・データベースを作成してください。
シャード・カタログ・データベースには、少量の分散データベース・トポロジ・メタデータと、シャード・アプリケーションで使用するために作成するすべての重複表を格納します。シャード・カタログ・データベースは、複数のシャードからデータを選択して集計するクロスシャード問合せを実行するための問合せコーディネータとしても機能します。
分散データベースの観点では、カタログ・データベースの作成方法やプロビジョニング方法は重要ではありません。このデータベースは、Database Configuration Assistant (DBCA)で作成することも、SQL*Plusを使用して手動で作成することも、クラウド・インフラストラクチャ・ツールからプロビジョニングすることもできます。
次の特性を備えたシャード・カタログ・ホストでOracle Database Enterprise Editionインスタンスを実行していれば、シャード・カタログとして使用できます。
-
シャード・カタログ・データベースとして使用する(PDB)プラガブル・データベースを作成します。コンテナ・データベース(CDB)のルート・コンテナ(
CDB$ROOT
)をシャード・カタログ・データベースとして使用することは、サポートされていません。 -
シャード・カタログ・データベースでは、サーバー・パラメータ・ファイル(
SPFILE
)を使用する必要があります。これが必要になる理由は、分散データベース・インフラストラクチャが内部データベース・パラメータを使用して構成メタデータを保存し、そのデータはデータベースの起動操作と停止操作の間で永続している必要があるためです。$ sqlplus / as sysdba SQL> show parameter spfile NAME TYPE VALUE -------- --------- ------------------------------------ spfile string /u01/app/oracle/dbs/spfilecat.ora
-
データベース文字セットと各国語文字セットは、すべてのシャード・データベースで使用されるため、同じにする必要があります。つまり、シャード・カタログまたはシャードのいずれかに挿入される可能性のあるすべての文字が含まれている文字セットを選択する必要があるということです。
この要件は、
GDSCTL MOVE CHUNK
コマンドの実行時に、トランスポータブル表領域をシャード間で移動するためにOracle Data Pumpが内部的に使用されることから発生します。このメカニズムの要件は、ソースと宛先で文字セットが一致していることです。$ sqlplus / as sysdba SQL> alter session set container=catalog_pdb_name; SQL> select * from nls_database_parameters 2 where parameter like '%CHARACTERSET'; PARAMETER VALUE ---------------------------------------- -------------------- NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET WE8DEC
-
シャード・カタログ・データベースは、データベース・リンクを介してシャードに接続するマルチシャード問合せを実行できるため、データベース初期化パラメータ
OPEN_LINKS
およびOPEN_LINKS_PER_INSTANCE
の値は、分散データベース構成に含まれるシャードの数以上にする必要があります。$ sqlplus / as sysdba SQL> alter session set container=catalog_pdb_name; SQL> show parameter open_links NAME TYPE VALUE ------------------------------------ ----------- ------------ open_links integer 20 open_links_per_instance integer 20
-
データベース初期化パラメータ
DB_FILES
は、システム内のチャンクや表領域の合計数以上に設定します。分散データベース構成内の各データ・チャンクは、表領域パーティションとして実装され、専用のオペレーティング・システム・データ・ファイル内に存在します。そのため、データベース初期化パラメータ
DB_FILES
は、システム内のチャンク数(CREATE SHARDCATALOG
またはADD SHARDSPACE
コマンドで指定)や表領域数の合計以上にする必要があります。$ sqlplus / as sysdba SQL> alter session set container=catalog_pdb_name; SQL> show parameter db_files NAME TYPE VALUE ------------------------------------ ----------- ------------ db_files integer 1024
-
チャンク管理インフラストラクチャで使用されるOracle Managed Filesをサポートするには、
DB_CREATE_FILE_DEST
データベース・パラメータに有効な値が設定されている必要があります。この場所は、チャンクの移動操作(
MOVE CHUNK
や自動リバランスなど)の実行中に、チャンク・データを保持するトランスポータブル表領域を保存するために使用されます。さらに、『Oracle Database管理者ガイド』のOracle Managed Filesの使用に関する項で説明されているファイルも、Oracle Managed Filesを使用するOracleデータベースの慣例に従って、この場所に保存されます。$ sqlplus / as sysdba SQL> alter session set container=catalog_pdb_name; SQL> show parameter db_create_file_dest NAME TYPE VALUE --------------------- --------- ----------------------------- db_create_file_dest string /u01/app/oracle/oradata
-
スタンバイ・カタログ・データベースが分散データベース構成の一部である場合、スタンバイ・カタログ・データベースに新しいデータベース・ファイルを自動的に作成するために、
STANDBY_FILE_MANAGEMENT
データベース・パラメータを設定する必要があります。このパラメータが
MANUAL
(デフォルト)に設定されている場合、たとえばCREATE TABLESPACE
コマンドで作成される新しいデータベース・ファイルは、スタンバイには作成されません。これにより、スタンバイがプライマリ・データベースになると、データが使用できなくなり、アプリケーション・エラーが発生します。$ sqlplus / as sysdba SQL> alter session set container=catalog_pdb_name; SQL> show parameter standby_file_management NAME TYPE VALUE ------------------------------------ ----------- ------------ standby_file_management stirng AUTO
-
Oracle提供の
GSMCATUSER
という名前のユーザー・アカウントは、シャード・カタログに指定したPDB内でロック解除してパスワードを割り当てる必要があります。このアカウントは、シャード・ディレクタのプロセスがシャード・カタログ・データベースに接続して、分散データベースのコマンドに応じて管理タスクを実行するために使用されます。GSMCATUSER
は、コンテナ・データベースの共通ユーザーである点に注意してください。そのため、そのパスワードはCDB$ROOT
およびCDB内のすべてのPDBで同じになります。単一のCDB内にある複数のPDBが、異なる分散データベース構成のカタログ・データベースとして使用されていると、それらすべてが同じGSMCATUSER
パスワードを共有するため、セキュリティ上の問題が発生する可能性があります。この潜在的なセキュリティ上の問題を回避するには、各シャード・カタログをホストするように個別のCDBを構成します。CDB内の他のPDBが共通のGSMCATUSER
パスワードを共有できないように、各CDBには単一のシャード・カタログPDBのみを含める必要があります。このようにして、複数のCDBにまたがって複数のシャード・カタログを構成し、それぞれに異なるGSMCATUSER
パスワードを設定できます。指定したパスワードは、この後の分散データベース・トポロジの作成時に発行する
ADD GSM
コマンドで使用します。これは、シャード・ディレクタによってOracleウォレットに安全に保管され、必要なときにのみ復号化されるため、再指定が必要になることはありません。MODIFY GSM
コマンドは、その後にシャード・カタログ・データベースでパスワードが変更されたときに、保管したパスワードを更新するために使用できます。$ sqlplus / as sysdba SQL> alter user gsmcatuser account unlock; User altered. SQL> alter user gsmcatuser identified by gsmcatuser_password; User altered. SQL> alter session set container=catalog_pdb_name; SQL> alter user gsmcatuser account unlock; User altered.
-
シャード・カタログの管理者アカウントは、シャード・カタログとして指定したPDB内で作成し、パスワードを割り当てて、権限を付与する必要があります。
このアカウントは、シャード・カタログ・データベース内の分散データベース・メタデータに対する管理者アカウントです。管理者が分散データベース・トポロジに変更を加えるなどの管理タスクを実行する必要があるときに、
GDSCTL
ユーティリティを使用してシャード・カタログにアクセスするために使用します。GDSCTL
は、GDSCTL
コマンドの実行時に、このユーザーとしてシャード・カタログ・データベースに接続します。指定したユーザー名とパスワードは、この後のCREATE SHARDCATALOG
コマンドで使用します。前述したGSMCATUSER
と同様に、ユーザー名とパスワードは今後の使用に備えてOracleウォレットに安全に保存されます。保存された資格証明は、GDSCTL
から明示的にCONNECT
コマンドを発行してウォレット内の値をリセットすることで更新できます。$ sqlplus / as sysdba SQL> alter session set container=catalog_pdb_name; SQL> create user mysdbadmin identified by mysdbadmin_password; User created. SQL> grant gsmadmin_role to mysdbadmin; Grant succeeded.
-
Oracle Net TNSリスナーを設定して選択したポート(デフォルトは1521)で実行します。これにより、シャード・カタログPDBに対する着信接続リクエストを処理できます。
TNSリスナーは、どのような方法で作成および構成してもかまいません。データベースの作成方法によっては、
ALTER SESSION SET CONTAINER
を使用する必要のない、PDBへの直接接続リクエストを許可できるデータベース・サービスを明示的に作成することが必要になる場合もあります。リスナーが正しく構成されていることを確認するには、前の手順で新しく作成したmysdbadminアカウントと適切な接続文字列を使用して、次の操作を実行します。
LSNRCTL SERVICES
を実行すると、このリスナーを使用して現在利用可能なすべてのサービスが示されます。$ sqlplus mysdbadmin/mysdbadmin_password@catalog_connect_string SQL> show con_name CON_NAME ----------------------- catalog_pdb_name
接続を確認したら、前述のcatalog_connect_stringをノートにとっておきます。これは、この後の構成プロセスの
GDSCTL CREATE SHARDCATALOG
コマンドで使用します。一般に、これはhost:port/service_nameの形式になります(たとえば、cathost.example.com:1521/catalog_pdb.example.com
)。
前述の要件がすべて満たされていると、新しく作成したデータベースはGDSCTL CREATE SHARDCATALOG
コマンドの実行可能対象になります。
高可用性と障害回復のために、1つ以上のスタンバイ・シャード・カタログ・データベースも作成するようにしてください。分散データベースの観点からは、前述の要件がスタンバイ・データベースでも満たされていて、プライマリ・シャード・カタログ・データベースに対するすべての変更がスタンバイに一貫して適用されている場合、その他に必要な分散データベース固有の構成ステップはありません。