ヘッダーをスキップ
Oracle® Streamsレプリケーション管理者ガイド
11g リリース2 (11.2)
B61352-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

6 キューと伝播の構成

次のトピックでは、キューと伝播の構成について説明します。

この章で説明する各タスクは、特に指定がないかぎり、適切な権限を付与されたOracle Streams管理者が実行する必要があります。


関連項目:


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キューを作成するには、次の手順を実行します。

  1. ANYDATAキューを作成する前に、「Oracle Streamsレプリケーションを構成する前に実行するタスク」で説明されている次のタスクを完了します。

  2. SQL*Plusで、Oracle Streams管理者としてキューを作成するデータベースに接続します。

    SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。

  3. SET_UP_QUEUEプロシージャを実行して、次のキューを作成します。

    BEGIN
      DBMS_STREAMS_ADM.SET_UP_QUEUE(
        queue_table => 'strmadmin.streams_queue_table',
        queue_name  => 'strmadmin.streams_queue',
        queue_user  => 'hr');
    END;
    /
    

    このプロシージャを実行すると、次のアクションが実行されます。

    • strmadminスキーマ内にキュー表streams_queue_tableが作成されます。このキュー表が作成されるのは、それが存在しない場合のみです。このキュー表に基づくキューには、ANYDATAタイプのメッセージが格納されます。キュー表の名前は、最大で24バイトです。

    • strmadminスキーマ内にキューstreams_queueが作成されます。このキューが作成されるのは、それが存在しない場合のみです。キューの名前は、最大で24バイトです。

    • streams_queueキューがstrmadmin.streams_queue_tableキュー表に基づくように指定されます。

    • hrユーザーがキューの保護キュー・ユーザーとして構成され、このユーザーにキューに対するENQUEUE権限とDEQUEUE権限が付与されます。

    • キューの起動。

    SET_UP_QUEUEプロシージャで明示的に設定しないパラメータには、デフォルトの設定が使用されます。

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を使用して、Oracle Streams環境全体(キューを含む)を構成できます。第2章「Oracle Streamsレプリケーションの簡単な構成」を参照してください。

  • メッセージをデキューできるサブスクライバが構成されていないと、メッセージをエンキューできません。



関連項目:

  • 『Oracle Streams概要および管理』

  • 『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド』

  • SET_UP_QUEUECREATE_QUEUE_TABLEおよびCREATE_QUEUEプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。


ANYDATAキュー間のOracle Streamsの伝播の作成

伝播では、Oracle Streamsソース・キューからOracle Streams宛先キューにメッセージを送信します。また、Oracle Streamsアドバンスト・キューイング(AQ)の機能を使用して、Oracle Streamsの伝播を管理できます。

次の任意のプロシージャを使用して、2つのANYDATAキュー間の伝播を作成できます。

  • DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES

  • DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES

  • DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES

  • DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES

  • DBMS_PROPAGATION_ADM.CREATE_PROPAGATION

DBMS_STREAMS_ADMパッケージのこれらの各プロシージャでは、名前を指定して伝播を作成したり(存在しない場合)、伝播にポジティブ・ルール・セットまたはネガティブ・ルール・セットを作成します(伝播にこれらのルール・セットがない場合)。また、ルール・セットに表ルール、スキーマ・ルールまたはグローバル・ルールを追加することもできます。

CREATE_PROPAGATIONプロシージャでは、伝播は作成しますが、その伝播のルール・セットやルールは作成しません。ただし、CREATE_PROPAGATIONプロシージャを使用すると、伝播にポジティブ・ルール・セットまたはネガティブ・ルール・セットとして関連付ける既存のルール・セットを指定できます。すべての伝播が作成時に自動的に起動されます。

この項の内容は、次のとおりです。


注意:

DBMS_STREAMS_ADMパッケージのプロシージャまたはOracle Enterprise Managerを使用して、Oracle Streams環境全体(伝播を含む)を構成できます。第2章「Oracle Streamsレプリケーションの簡単な構成」を参照してください。


関連項目:

  • 『Oracle Streams概要および管理』

  • Oracle Streams AQの機能を使用して伝播を構成する方法の詳細および型付きのキュー間の伝播を構成する手順は、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。


伝播の作成の準備

伝播を作成する前に、次のタスクを完了する必要があります。

DBMS_STREAMS_ADMを使用した伝播の作成

DBMS_STREAMS_ADMパッケージのADD_TABLE_PROPAGATION_RULESプロシージャを使用して伝播を作成するには、次の手順を実行します。

  1. 「伝播の作成の準備」で説明されているタスクを完了します。

  2. SQL*Plusで、Oracle Streams管理者として伝播のソース・キューを含むデータベースに接続します。

    SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。

  3. ADD_TABLE_PROPAGATION_RULESプロシージャを実行して、次の伝播を作成します。

    BEGIN
      DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
        table_name              => 'hr.departments',
        streams_name            => 'strm01_propagation',
        source_queue_name       => 'strmadmin.strm_a_queue',
        destination_queue_name  => 'strmadmin.strm_b_queue@dbs2.example.com',
        include_dml             => TRUE,
        include_ddl             => TRUE,
        include_tagged_lcr      => FALSE,
        source_database         => 'dbs1.example.com',
        inclusion_rule          => TRUE,
        queue_to_queue          => TRUE);
    END;
    /
    

    このプロシージャを実行すると、次のアクションが実行されます。

    • 伝播strm01_propagationが作成されます。この伝播が作成されるのは、それが存在しない場合のみです。

    • 伝播で現行のデータベース内のstrmadmin.strm_a_queueからdbs2.example.comデータベース内のstrmadmin.strm_b_queueに論理変更レコード(LCR)を伝播するように指定されます。これらのキューは必ず存在している必要があります。

    • destination_queue_nameパラメータに@dbs2.example.comが指定されているため、伝播でdbs2.example.comデータベース・リンクを使用してLCRを伝播させるように指定されます。このデータベース・リンクは必ず存在している必要があります。

    • inclusion_ruleパラメータがTRUEに設定されているため、ポジティブ・ルール・セットが作成され、伝播に関連付けられます。このルール・セットでは、評価コンテキストSYS.STREAMS$_EVALUATION_CONTEXTが使用されます。ルール・セット名は、システムによって生成されます。

    • 2つのルールが作成されます。一方のルールは、hr.departments表に対するデータ操作言語(DML)変更の結果を含む行LCRについてTRUEと評価されます。もう一方のルールは、hr.departments表に対するデータ定義言語(DDL)変更を含むDDL LCRについてTRUEと評価されます。ルール名は、システムによって生成されます。

    • この2つのルールが、伝播に関連付けられたポジティブ・ルール・セットに追加されます。inclusion_ruleパラメータがTRUEに設定されているため、ルールはポジティブ・ルール・セットに追加されます。

    • include_tagged_lcrパラメータがFALSEに設定されているため、NULLタグがある場合にのみ伝播でLCRを伝播させるように設定されます。この動作は、伝播のシステム作成ルールを介して実行されます。

    • 伝播されているLCRのソース・データベースがdbs1.example.comであることを指定しますが、これが現行のデータベースになるとはかぎりません。ソース・データベースが異なるソース・キューのLCRは伝播されません。

    • キュー・ツー・キュー伝播の伝播ジョブが作成されます。


注意:

キュー・ツー・キュー伝播を使用するには、伝播に使用されるキューが含まれる各データベースの互換レベルが10.2.0以上である必要があります。


関連項目:


DBMS_PROPAGATION_ADMを使用した伝播の作成

DBMS_PROPAGATION_ADMパッケージのCREATE_PROPAGATIONプロシージャを使用して伝播を作成するには、次の手順を実行します。

  1. 「伝播の作成の準備」で説明されているタスクを完了します。

  2. SQL*Plusで、Oracle Streams管理者として伝播のソース・キューを含むデータベースに接続します。

    SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。

  3. 伝播で使用されるルール・セットを作成します(存在しない場合)。この例では、ルール・セットがstrmadmin.strm01_rule_setであると想定します。オプションで、ルール・セットにルールを追加することもできます。手順については、『Oracle Streams概要および管理』を参照してください。

  4. CREATE_PROPAGATIONプロシージャを実行して、次の伝播を作成します。

    BEGIN
      DBMS_PROPAGATION_ADM.CREATE_PROPAGATION(
        propagation_name   => 'strm02_propagation',
        source_queue       => 'strmadmin.strm_a_queue',
        destination_queue  => 'strmadmin.strm_b_queue',
        destination_dblink => 'dbs2.example.com',
        rule_set_name      => 'strmadmin.strm01_rule_set',
        queue_to_queue     => TRUE);
    END;
    /
    

    このプロシージャを実行すると、次のアクションが実行されます。

    • 伝播strm02_propagationが作成されます。同じ名前の伝播は存在できません。

    • 伝播で現行のデータベース内のstrmadmin.strm_a_queueからdbs2.example.comデータベース内のstrmadmin.strm_b_queueにメッセージを伝播するように指定されます。これらのキューは必ず存在している必要があります。伝播のルール・セット内のルールに応じて、伝播されるメッセージはLCRまたはユーザー・メッセージ(あるいはその両方)になります。

    • 伝播でdbs2.example.comデータベース・リンクを使用してメッセージを伝播するように指定されます。このデータベース・リンクは必ず存在している必要があります。

    • 伝播が、ルール・セットstrmadmin.strm01_rule_setに関連付けられます。このルール・セットは必ず存在している必要があります。このルール・セットは、伝播のポジティブ・ルール・セットです。

    • キュー・ツー・キュー伝播の伝播ジョブが作成されます。


注意:

キュー・ツー・キュー伝播を使用するには、伝播に使用されるキューが含まれる各データベースの互換レベルが10.2.0以上である必要があります。