125 DBMS_PROPAGATION_ADM

Streamsパッケージのセットの1つであるDBMS_PROPAGATION_ADMパッケージは、ソース・キューから宛先キューへの伝播を構成するための管理インタフェースを提供します。

この章のトピックは、次のとおりです:

125.1 DBMS_PROPAGATION_ADMの概要

このパッケージは、伝播を開始、停止および構成するインタフェースを提供します。

参照:

このパッケージおよび伝播の詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

125.2 DBMS_PROPAGATION_ADMのセキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与するか、選択したユーザーまたはロールにEXECUTE_CATALOG_ROLEを付与することで制御できます。

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

DBMS_PROPAGATION_ADMパッケージを使用してOracle Streams構成を管理する場合、ユーザーには、Oracle Streams管理者の権限を付与する必要があります。

参照:

Oracle Streams管理者の構成の詳細は、『Oracle Streams概要および管理』を参照してください。

125.3 DBMS_PROPAGATION_ADMサブプログラムの要約

この表は、DBMS_PROPAGATION_ADMサブプログラムを示し、簡単に説明しています。

表125-1 DBMS_PROPAGATION_ADMパッケージのサブプログラム

サブプログラム 説明

ALTER_PROPAGATIONプロシージャ

伝播のルール・セットを追加、変更または削除します。

CREATE_PROPAGATIONプロシージャ

伝播を作成し、その伝播のソース・キュー、宛先キューおよびルール・セットを指定します。

DROP_PROPAGATIONプロシージャ

伝播を削除します。

START_PROPAGATIONプロシージャ

伝播を開始します。

STOP_PROPAGATIONプロシージャ

伝播を停止します。

注意:

特に指定がないかぎり、すべてのサブプログラムがコミットされます。

125.3.1 ALTER_PROPAGATIONプロシージャ

このプロシージャは、伝播のルール・セットを追加、変更または削除します。

参照:

ルールとルール・セットの詳細は、『Oracle Streams概要および管理』および「DBMS_RULE_ADM」を参照してください。

構文

  DBMS_PROPAGATION_ADM.ALTER_PROPAGATION(
     propagation_name          IN  VARCHAR2,
     rule_set_name             IN  VARCHAR2  DEFAULT NULL,
     remove_rule_set           IN  BOOLEAN   DEFAULT FALSE,
     negative_rule_set_name    IN  VARCHAR2  DEFAULT NULL,
     remove_negative_rule_set  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表125-2 ALTER_PROPAGATIONプロシージャのパラメータ

パラメータ 説明

propagation_name

変更する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

rule_set_name

伝播に使用するポジティブ・ルール・セット名。ポジティブ・ルール・セットには、伝播でメッセージを伝播するように指示するルールが含まれます。

ポジティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるprop_rulesという名前のポジティブ・ルール・セットを指定するには、hr.prop_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_rule_setパラメータをFALSEに設定すると、既存のすべてのポジティブ・ルール・セットが保持されます。NULLを指定し、remove_rule_setパラメータをTRUEに設定すると、既存のすべてのポジティブ・ルール・セットが削除されます。

remove_rule_set

TRUEに設定すると、指定した伝播に対するポジティブ・ルール・セットが削除されます。伝播のポジティブ・ルール・セットを削除し、ネガティブ・ルール・セットが伝播に存在しない場合は、すべてのメッセージが伝播によって伝播されます。

伝播のポジティブ・ルール・セットを削除し、ネガティブ・ルール・セットが伝播に存在する場合は、そのネガティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

FALSEに設定すると、指定した伝播に対するポジティブ・ルール・セットが保持されます。

rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

negative_rule_set_name

伝播に使用するネガティブ・ルール・セット名。ネガティブ・ルール・セットには、伝播でメッセージを廃棄するように指示するルールが含まれます。

ネガティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_negative_rule_setパラメータをFALSEに設定すると、既存のすべてのネガティブ・ルール・セットが保持されます。NULLを指定し、remove_negative_rule_setパラメータをTRUEに設定すると、既存のすべてのネガティブ・ルール・セットが削除されます。

ポジティブ・ルール・セットとネガティブ・ルール・セットの両方を伝播に指定した場合は、常にネガティブ・ルール・セットが先に評価されます。

remove_negative_rule_set

TRUEに設定すると、指定した伝播に対するネガティブ・ルール・セットが削除されます。伝播のネガティブ・ルール・セットを削除し、ポジティブ・ルール・セットが伝播に存在しない場合は、すべてのメッセージが伝播によって伝播されます。

伝播のネガティブ・ルール・セットを削除し、ポジティブ・ルール・セットが伝播に存在する場合は、そのポジティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

FALSEに設定すると、指定した伝播に対するネガティブ・ルール・セットが保持されます。

negative_rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

125.3.2 CREATE_PROPAGATIONプロシージャ

このプロシージャは伝播を作成し、その伝播のソース・キュー、宛先キューおよび任意のルール・セットを指定します。伝播によって、ローカル・ソース・キューのメッセージが宛先キューに伝播されます。宛先キューは、ソース・キューと同じデータベース内にある場合と、ない場合があります。

構文

  DBMS_PROPAGATION_ADM.CREATE_PROPAGATION(
     propagation_name           IN  VARCHAR2,
     source_queue               IN  VARCHAR2,
     destination_queue          IN  VARCHAR2,
     destination_dblink         IN  VARCHAR2  DEFAULT NULL,
     rule_set_name              IN  VARCHAR2  DEFAULT NULL,
     negative_rule_set_name     IN  VARCHAR2  DEFAULT NULL,
     queue_to_queue             IN  BOOLEAN   DEFAULT NULL,
     original_propagation_name  IN  VARCHAR2  DEFAULT NULL,
     auto_merge_threshold       IN  NUMBER    DEFAULT NULL);

パラメータ

表125-3 CREATE_PROPAGATIONプロシージャのパラメータ

パラメータ 説明

propagation_name

作成する伝播の名前。NULLを設定することはできません。所有者を指定しないでください。

注意: propagation_nameの設定は、伝播の作成後は変更できません。

source_queue

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにソース・キューが含まれている必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue

宛先キューの名前。[schema_name.]queue_nameの形式で指定します。

たとえば、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_dblink

伝播で使用するデータベース・リンクの名前。データベース・リンクとは、ソース・キューが含まれているデータベースから宛先キューが含まれているデータベースへのリンクです。

NULLを指定する場合は、ソース・キューおよび宛先キューが同一のデータベース内にある必要があります。

注意: 接続修飾子は使用できません。

rule_set_name

伝播に使用するポジティブ・ルール・セット名。ポジティブ・ルール・セットには、伝播でメッセージを伝播するように指示するルールが含まれます。

ポジティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるprop_rulesという名前のポジティブ・ルール・セットを指定するには、hr.prop_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、ネガティブ・ルール・セットが伝播に存在しない場合は、そのキュー内のすべてのメッセージが伝播によって伝播されます。

NULLを指定し、ネガティブ・ルール・セットが伝播に存在する場合は、そのネガティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

negative_rule_set_name

伝播に使用するネガティブ・ルール・セット名。ネガティブ・ルール・セットには、伝播でメッセージを廃棄するように指示するルールが含まれます。

ネガティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、ポジティブ・ルール・セットが伝播に存在しない場合は、そのキュー内のすべてのメッセージが伝播によって伝播されます。

NULLを指定し、ポジティブ・ルール・セットが伝播に存在する場合は、そのポジティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

ポジティブ・ルール・セットとネガティブ・ルール・セットの両方を伝播に指定した場合は、常にネガティブ・ルール・セットが先に評価されます。

queue_to_queue

TRUEまたはNULLに設定すると、キューからキューへの伝播が実行されます。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEに設定すると、キューからデータベース・リンクへの伝播が実行されます。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

original_propagation_name

作成中の伝播が、DBMS_STREAMS_ADMパッケージのSPLIT_STREAMSプロシージャによって開始される分割操作およびマージ操作の一部である場合は、元の伝播名を指定します。分割操作は、新しい名前で元の伝播のクローンを作成します。クローンが作成された伝播が、DBMS_STREAMS_ADMパッケージのMERGE_STREAMSプロシージャを使用して元のストリームにコピーされる場合は、元の伝播の名前が重要になります。

作成中の伝播が分割操作およびマージ操作の一部ではない場合は、NULLを指定します。

関連項目: SPLIT_STREAMSプロシージャおよびMERGE_STREAMSプロシージャ

auto_merge_theshold

次の両方の条件を満たす場合は、正数を指定します。

  • 作成中の伝播が、DBMS_STREAMS_ADMパッケージのSPLIT_STREAMSプロシージャによって開始される分割操作およびマージ操作の一部である場合

  • ストリームが自動的に元のストリームにマージされる場合

次のいずれかの条件を満たす場合は、NULLを指定します。

  • 作成中の伝播が分割操作およびマージ操作の一部ではない場合

  • 作成中の伝播が分割操作およびマージ操作の一部であるが、分割されたストリームが自動的に元のストリームにマージされない場合

関連項目: SPLIT_STREAMSプロシージャおよびMERGE_STREAMSプロシージャ

使用上の注意

このプロシージャによって伝播が開始され、伝播ジョブが作成される場合もあります。このプロシージャによって伝播ジョブが作成される場合は、これによって伝播ジョブのデフォルトのスケジュールが確立されます。各伝播ジョブはOracle Schedulerジョブです。Oracle Schedulerを使用して、伝播ジョブのスケジュールを調整できます。

ソース・キューを所有するユーザーが、メッセージを伝播するユーザーです。このユーザーには、メッセージを伝播するための権限が必要です。

参照:

125.3.3 DROP_PROPAGATIONプロシージャ

このプロシージャは、伝播を削除し、ソース・キューで宛先キューへのすべてのメッセージを削除します。また、このプロシージャによって、ソース・キューから宛先キューへの伝播スケジュールも削除されます。

構文

DBMS_PROPAGATION_ADM.DROP_PROPAGATION(
   propagation_name       IN  VARCHAR2,
   drop_unused_rule_sets  IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表125-4 DROP_PROPAGATIONプロシージャのパラメータ

パラメータ 説明

propagation_name

削除する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

drop_unused_rule_sets

TRUEを指定すると、指定された伝播に使用されるポジティブ・ルール・セットおよびネガティブ・ルール・セットのうち、取得プロセス、伝播、適用プロセスおよびメッセージ・クライアントなどの、他のOracle Streamsクライアントで使用されていないものが削除されます。このプロシージャによってルール・セットが削除される場合は、そのルール・セット内のルールのうち、別のルール・セット内に存在しないルールも同時に削除されます。

FALSEに設定すると、指定した伝播で使用されるルール・セットは削除されず、ルール・セットにルールが保持されます。

使用上の注意

このプロシージャを使用して伝播を削除すると、DBMS_STREAMS_ADMパッケージを使用して伝播に対して作成されたルールに関する情報が、Oracle Streamsルールのデータ・ディクショナリ・ビューから削除されます。そのルールが削除対象の伝播のすべてのルール・セットに存在しない場合でも、こうしたルールに関する情報は削除されます。

参照:

Oracle Streamsデータ・ディクショナリ・ビューの詳細は、『Oracle Streams概要および管理』を参照してください。

Oracle Streamsルールのデータ・ディクショナリ・ビューは次のとおりです。

  • ALL_STREAMS_GLOBAL_RULES

  • DBA_STREAMS_GLOBAL_RULES

  • ALL_STREAMS_MESSAGE_RULES

  • DBA_STREAMS_MESSAGE_RULES

  • ALL_STREAMS_SCHEMA_RULES

  • DBA_STREAMS_SCHEMA_RULES

  • ALL_STREAMS_TABLE_RULES

  • DBA_STREAMS_TABLE_RULES

    注意:

    伝播を削除すると、その伝播で使用されるが、他の伝播では使用されない伝播ジョブも自動的に削除されます。

125.3.4 START_PROPAGATIONプロシージャ

このプロシージャは、伝播を開始します。

構文

DBMS_PROPAGATION_ADM.START_PROPAGATION(
   propagation_name  IN  VARCHAR2);

パラメータ

表125-5 START_PROPAGATIONプロシージャのパラメータ

パラメータ 説明

propagation_name

開始する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

使用上の注意

伝播ステータスは永続的に記録されます。したがって、ステータスがENABLEDの場合、伝播はデータベース・インスタンスの起動時に開始されます。

125.3.5 STOP_PROPAGATIONプロシージャ

このプロシージャは、伝播を停止します。

構文

DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
   propagation_name  IN  VARCHAR2,
   force             IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表125-6 STOP_PROPAGATIONプロシージャのパラメータ

パラメータ 説明

propagation_name

停止する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

force

TRUEに設定すると、伝播が停止され、伝播の統計情報が消去されます。

FALSEに設定すると、伝播の統計情報が消去されずに伝播が停止されます。

使用上の注意

伝播ステータスは永続的に記録されます。したがって、ステータスがDISABLEDまたはABORTEDの場合、伝播はデータベース・インスタンスの起動時に開始されません。