6 キューおよび伝播の構成
この章で説明する各タスクは、特に明記されていないかぎり、適切な権限を付与されているOracle Streams管理者が完了する必要があります。
関連項目:
-
キューと伝播の詳細は、『Oracle Streams概要および管理』を参照してください。
6.1 ANYDATAキューの作成
Oracle Streams環境では、メッセージはキューに格納されます。メッセージに対しては、エンキュー、異なるキュー間での伝播、およびデキューの処理を行うことができます。ANYDATAキューには、ペイロードがANYDATAタイプのメッセージが格納されます。したがって、ペイロードがANYDATAラッパーにラップされている場合は、ほぼすべてのタイプのペイロードを含むメッセージをANYDATAキューに格納できます。Oracle Streamsの各取得プロセス、同期取得、適用プロセスおよびメッセージ・クライアントが1つのANYDATAキューに関連付けられ、Oracle Streamsの各伝播が1つのANYDATAソース・キューと1つのANYDATA宛先キューに関連付けられます。
ANYDATAキューを作成する最も簡単な方法は、DBMS_STREAMS_ADMパッケージのSET_UP_QUEUEプロシージャを使用することです。このプロシージャを使用すると、作成するANYDATAキューについて次の設定を指定できます。
-
キューのキュー表
-
キュー表のSTORAGE句
-
キュー名
-
キューの保護キュー・ユーザーとして構成され、キューに対する
ENQUEUEおよびDEQUEUE権限が付与されるキュー・ユーザー -
キューに関するコメント
指定したキュー表が存在しない場合は、キュー表が作成されます。指定したキュー表が存在する場合は、既存のキュー表が新規キュー用に使用されます。キューの作成時にキュー表を指定しないと、デフォルトでstreams_queue_tableが指定されます。
たとえば、SET_UP_QUEUEプロシージャを使用してANYDATAキューを作成するには、次の手順を実行します。
SET_UP_QUEUEプロシージャでキュー表が作成されるとき、次のDBMS_AQADM.CREATE_QUEUE_TABLEパラメータ設定が指定されます。
-
データベースがOracle Database 10g リリース2以上の場合、
sort_list設定はcommit_timeです。データベースがOracle Database 10g リリース2より前のリリースの場合、sort_list設定はenq_timeです。 -
multiple_consumers設定はTRUEです。 -
message_grouping設定はtransactionalです。 -
secure設定はTRUEです。
CREATE_QUEUE_TABLEプロシージャの他のパラメータは、それぞれのデフォルト値に設定されます。
DBMS_AQADMパッケージのCREATE_QUEUE_TABLEプロシージャを使用すると、DBMS_STREAMS_ADMパッケージのSET_UP_QUEUEプロシージャで指定されたデフォルト・プロパティ以外のプロパティを使用してANYDATAタイプのキュー表を作成できます。CREATE_QUEUE_TABLEプロシージャでキュー表を作成した後、そのキュー表を使用するキューを作成できます。そのためには、SET_UP_QUEUEプロシージャのqueue_tableパラメータにそのキュー表を指定します。
同様に、SET_UP_QUEUEのかわりに、DBMS_AQADMパッケージのCREATE_QUEUEプロシージャを使用してキューを作成できます。CREATE_QUEUEは、キューにカスタム設定が必要な場合に使用します。たとえば、CREATE_QUEUEを使用して、カスタムの再試行遅延や保存時間を指定できます。CREATE_QUEUEを使用する場合は、キューを手動で起動する必要があります。
注意:
-
DBMS_STREAMS_ADMパッケージのプロシージャまたはOracle Enterprise Manager Cloud Controlを使用して、Oracle Streams環境全体(キューを含む)を構成できます。「Oracle Streamsレプリケーションの簡単な構成」を参照してください。 -
メッセージをデキューできるサブスクライバが構成されていないと、メッセージをエンキューできません。
6.2 ANYDATAキュー間のOracle Streamsの伝播の作成
伝播では、Oracle Streamsソース・キューからOracle Streams宛先キューにメッセージを送信します。また、Oracle Streamsの伝播は、Oracle Databaseアドバンスト・キューイング(AQ)の機能を使用して管理することもできます。
次の任意のプロシージャを使用して、2つのANYDATAキュー間の伝播を作成できます。
DBMS_STREAMS_ADMパッケージのこれらの各プロシージャでは、名前を指定して伝播を作成したり(存在しない場合)、伝播にポジティブ・ルール・セットまたはネガティブ・ルール・セットを作成します(伝播にこれらのルール・セットがない場合)。また、ルール・セットに表ルール、スキーマ・ルールまたはグローバル・ルールを追加することもできます。
CREATE_PROPAGATIONプロシージャでは、伝播は作成しますが、その伝播のルール・セットやルールは作成しません。ただし、CREATE_PROPAGATIONプロシージャを使用すると、伝播にポジティブ・ルール・セットまたはネガティブ・ルール・セットとして関連付ける既存のルール・セットを指定できます。すべての伝播が作成時に自動的に起動されます。
この項では、次の項目について説明します。
注意:
DBMS_STREAMS_ADMパッケージのプロシージャまたはOracle Enterprise Manager Cloud Controlを使用して、Oracle Streams環境全体(伝播を含む)を構成できます。「Oracle Streamsレプリケーションの簡単な構成」を参照してください。
関連項目:
-
Oracle Streams AQの機能を使用して伝播を構成する方法の詳細および型付きのキュー間の伝播を構成する手順は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』 を参照してください
6.2.1 伝播の作成の準備
伝播を作成する前に、次のタスクを完了する必要があります。
-
「Oracle Streamsレプリケーションを構成する前に実行するタスク」で説明されている次のタスクを完了します。
-
存在しない場合は、伝播のソース・キューと宛先キューを作成します。キューは両方とも
ANYDATAキューである必要があります。この章の例では、ソース・キューがstrmadmin.strm_a_queue、宛先キューがstrmadmin.strm_b_queueであると想定しています。方法については、「ANYDATAキューの作成」を参照してください。
6.2.2 DBMS_STREAMS_ADMを使用した伝播の作成
DBMS_STREAMS_ADMパッケージのADD_TABLE_PROPAGATION_RULESプロシージャを使用して伝播を作成するには、次の手順を実行します。
注意:
キュー・ツー・キュー伝播を使用するには、伝播に使用されるキューが含まれる各データベースの互換レベルが10.2.0以上である必要があります。
関連項目:
-
キュー、伝播およびルールの詳細は、『Oracle Streams概要および管理』を参照してください。