フェデレーテッド分散データベースの構成
既存のデータベースを使用してフェデレーテッド分散データベース構成をデプロイするには、ユーザー定義のデータ分散方法の場合と同様に、GDSCTL
コマンドを使用してデータベースのレイアウトを定義します。
フェデレーテッド分散データベース構成を作成およびデプロイする場合の手順の概要を次に示します。
-
FOR_FEDERATED_DATABASE
オプションを指定してGDSCTL CREATE SHARDCATALOG
コマンドを実行し、構成を作成します -
シャード・ディレクタを構成に追加します。
-
シャード領域を構成に追加します。シャード領域は、既存のデータベースおよびそのレプリカとして定義します。
-
既存のデータベースをシャード領域に追加することによってシャードを追加し、
DEPLOY
を実行します。 -
GDSCTL SYNC SCHEMA
を実行して、フェデレーテッド分散データベース構成内のスキーマを比較し、共通の共有スキーマを取得します。SYNC SCHEMA
を使用して、DDLの検査および適用を行います。 -
シャード・カタログに対して
SQL ALTER TABLE
を使用し、フェデレーテッド・シャードで同じデータを含む表を重複表に変換します。 -
マルチシャード問合せのために、フェデレーテッド分散データベース構成のシャードを準備します。
フェデレーテッド分散データベース構成の作成
フェデレーテッド分散データベース構成を作成するには、SHARDING
パラメータでデータ分散方法を選択するかわりにFOR_FEDERATED_DATABASE
オプションを指定して、GDSCTL
コマンドCREATE SHARDCATALOG
を使用します。
フェデレーテッド分散データベースの作成でのGDSCTL
コマンドCREATE SHARDCATALOG
の使用方法は、ユーザー定義のデータ分散方法でシャード・カタログを作成する場合と同様ですが、SHARDING
パラメータで方法を指定するかわりにFOR_FEDERATED_DATABASE
オプションを使用します。つまり、FOR_FEDERATED_DATABASE
オプションとSHARDING
オプションは相互に排他的です。
CREATE SHARDCATALOG -DATABASE connect_identifier
[-USER username[/password]]
[-REGION region_name_list]
[-CONFIGNAME config_name]
[-AUTOVNCR ON/OFF]
[-FORCE]
[-SDB distributed_db_name]
[-SHARDSPACE shardspace_name_list]
-FOR_FEDERATED_DATABASE
前述のCREATE SHARDCATALOG
構文の文は、サポートされるパラメータを示しています。表示されていないパラメータは、FOR_FEDERATED_DATABASE
データ分散方法で使用する場合はサポートされません(たとえば、–AGENT_PASSWORD
、REPFACTOR
、Oracle Data Guard保護モードのPROTECTMODE
など)。
ノート:
フェデレーテッド分散データベースでは、Oracle Data Guardのレプリケーションのみがサポートされています。Oracle Globally Distributed DatabaseではData Guard構成の作成および管理が処理されませんが、ADD SHARD
コマンドでData Guardパラメータを使用すると、プライマリ・データベースおよびスタンバイ・データベースを追加してGDSCTL
でステータスを確認できます。
関連項目:
使用上のノートおよびコマンド・オプションについては、Oracle Global Data Services概要および管理ガイドのGDSCTLのCREATE SHARDCATALOGのトピックを参照してください。DDLの取得、検査および適用
既存のデータベースに共通するスキーマ・オブジェクトをシャード・カタログに作成するには、各フェーズでGDSCTL SYNC SCHEMA
コマンドを実行します。
ここに示すGDSCTL SYNC SCHEMA
構文は、操作の3つのフェーズを示しています。
sync[hronize] schema
[-schema [schemalist | all] [-retrieve_only] [-restart [-force]]
| -apply [-skip_first]
| -show [[-ddl ddlnum] [-count n] | [-failed_only]]]
SYNC SCHEMA
は、ここで説明しているとおりに各フェーズで実行する必要があります。
-
取得フェーズ
-retrieve_only
オプションを指定してSYNC SCHEMA
を実行し、シャード・カタログに対して実行する前にDDLを検査して検証します。sync schema -schema schemalist –retrieve_only
-retrieve_only
を指定せずにSYNC SCHEMA
を実行した場合、DDLの取得と適用が同時に行われます。 -
検査フェーズ
DDL文とその処理ステータスは、
-show
オプションを使用して検査できます。-ddl ddlnum
オプションは指定したDDLを表示し、-count n
オプションは表示するエントリの最大数を指定します。sync schema –show -ddl ddlnum -count n
または、
-failed_only
オプションを使用して、エラーが発生した文のみを検査できます。sync schema –show -failed_only
-
適用フェーズ
最後のフェーズで、ユーザーはシャード・カタログに対してDDLを実行して、スキーマとそのオブジェクトを作成します。
sync schema –apply
適用フェーズでエラーが発生した場合、それを回避する方法は2つあります。
-
エラーの原因を修正できる場合は、修正してから
SYNC SCHEMA -apply
を再実行すると、失敗したDDLが再試行されます。 -
DDLを修正できない場合、またはそのDDLが不要な場合は、
SYNC SCHEMA –apply -skip_first
を実行すると、DDLが失敗した場所から適用フェーズが再開されます。
セキュリティ上の理由により、Oracle Globally Distributed DatabaseではDDLを編集できません。
-
-
増分の変更のインポート
スキーマに後から変更が発生した場合は、前のフェーズを再実行して増分の変更をインポートできます。たとえば、新しいオブジェクトを追加したり、表に新しい列を追加すると、
ALTER TABLE ADD
文が生成されます。
関連項目:
SYNC SCHEMA
の使用上のノートおよびオプションの詳細は、Oracle Global Data Services概要および管理ガイドのsync schema (synchronize schema)のトピックを参照してください。
SYNC SCHEMA
によって実行されるタスクの詳細は、SYNC SCHEMAの操作を参照してください。
重複表への表の変換
フェデレーテッド分散データベース構成の表を重複表としてマークするには、ALTER TABLE table_name externally duplicated
を使用します。
SYNC SCHEMA
によって作成される表は、マルチシャード問合せレイヤーではexternally shardedの表とみなされます。すべてのシャードで表に同じデータが含まれている場合、ユーザーはその表をexternally duplicatedに変更できます。これにより、ORA_SHARDSPACE_NAME
に対するフィルタ述部がない表の問合せの場合でも、マルチシャード問合せは1つのシャードのみからデータを取得します。
ALTER TABLE table_name [externally duplicated | externally sharded]
マルチシャード問合せのためのシャードの準備
特定のシャードに対する問合せを実行するには、すべてのシャード・ユーザーを作成して、ORA_SHARDSPACE_NAME
疑似列を使用します。
すべてのシャード・ユーザー
シャード・カタログからマルチシャード問合せを実行する前に、すべてのシャード・ユーザーを作成して、シャード表および重複表へのアクセス権を付与する必要があります。これらのユーザーとその権限は、シャードDDLを有効にして
シャード・カタログに作成する必要があります。
シャード領域固有の問合せの作成
フェデレーテッド分散データベースのシャード領域は、プライマリ・シャードと0個以上のスタンバイ・シャードで構成されるセットです。特定のシャード(領域)の問合せ結果をフィルタ処理するために、ORA_SHARDSPACE_NAME
という疑似列がすべてのexternally sharded
表に追加されます。表のこの疑似列の値は、シャード領域の名前です。
MULTISHARD_QUERY_DATA_CONSISTENCY
の値に応じて、シャード領域のプライマリまたはスタンバイから行をフェッチできます。特定のシャードに対してマルチシャード問合せを実行するには、述語ORA_SHARDSPACE_NAME = shardspace_name_shard_belongs_to
を使用して問合せをフィルタ処理できます。
CUSTOMER表がexternally sharded
としてマークされている場合、SELECT CUST_NAME, CUST_ID FROM CUSTOMER
などの問合せは、すべてのシャードで実行されます。
SELECT CUST_NAME, CUST_ID FROM CUSTOMER WHERE ora_shardspace_name = 'EUROPE'
などの問合せは、shardspace_name
がEuropeであるシャードで実行されます。MULTISHARD_QUERY_DATA_CONSISTENCY
パラメータ値に応じて、シャード領域Europeのプライマリ・シャードまたはスタンバイで問合せが実行されます。
異なるシャード領域のシャード表を結合できます。たとえば、シャード領域NAに注文があるシャード領域Europeの顧客を検索するには、次のような問合せを記述します。
SELECT order_id, customer_name FROM customers c , orders o WHERE c.cust_id = o.cust_id and
c.ora_shardspace_name = ‘Europe’ and o.ora_shardspace_name = ‘NA’
ORA_SHARDSPACE_NAME
述部を使用するかどうかにかかわらず、externally duplicated
の表を問い合せる場合は、いずれかのシャード領域のみを対象とする必要があります。MULTISHARD_QUERY_DATA_CONSISTENCY
パラメータ値によって、シャード領域のプライマリ・シャードまたはそのレプリカのどちらに問い合せるかが決定されます。