プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

271 Oracle Databaseアドバンスト・キューイング(AQ)のタイプ

この章では、PL/SQL、DBMS_AQおよびDBMS_AQADM向けにOracle Databaseアドバンスト・キューイング(AQ)パッケージで使用されるタイプについて説明します。


関連項目:

Oracle Databaseアドバンスト・キューイングの使用方法については、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

Oracle Databaseアドバンスト・キューイングのタイプの使用

このセクションには次のトピックが含まれます。

セキュリティ・モデル

PUBLICには、この章で説明するタイプのEXECUTE権限が付与されます。

タイプの要約

AQ$_AGENTタイプ

このタイプは、メッセージのプロデューサまたはコンシューマを識別します。

構文

TYPE SYS.AQ$_AGENT IS OBJECT (
   name       VARCHAR2(30),
   address    VARCHAR2(1024),
   protocol   NUMBER  DEFAULT 0);

属性

表271-1 AQ$_AGENTの属性

属性 説明

name

メッセージのプロデューサまたはコンシューマの名前。名前は、予約語に関して、『Oracle Database SQL言語リファレンス』のオブジェクト名ガイドラインに従う必要があります。

address

受信者のプロトコル固有のアドレス。プロトコルが0の場合、アドレスは[schema.]queue[@dblink]の形式になります。

たとえば、サイトdbs1.netHRキューにあるemp_messagesという名前のキューのアドレスは、hr.emp_messages@dbs1.netとなります。

protocol

アドレスを解釈し、メッセージを伝播するためのプロトコル。プロトコル1から127は、内部的に使用されるものです。プロトコル番号が128から255の場合、受信者のアドレスはOracle Databaseアドバンスト・キューイングで解釈されません。


AQ$_AGENT_LIST_Tタイプ

このタイプは、DBMS_AQ.LISTENがリスニングするエージェントのリストを識別します。


関連項目:

「AQ$_AGENTタイプ」

構文

TYPE SYS.AQ$_AGENT_LIST_T IS TABLE OF SYS.AQ$_AGENT 
   INDEX BY BINARY INTEGER;

AQ$_DESCRIPTORタイプ

このタイプは、通知時にAQ PL/SQLのコールバックが受信するOracle Databaseアドバンスト・キューイングの記述子を指定します。

構文

TYPE SYS.AQ$_DESCRIPTOR IS OBJECT (
   queue_name      VARCHAR2(61),
   consumer_name   VARCHAR2(30),
   msg_id          RAW(16),
   msg_prop        MSG_PROP_T,
   gen_desc        AQ$_NTFN_DESCRIPTOR,
   msgid_array     SYS.AQ$_NTFN_MSGID_ARRAY, 
   ntfnsRecdInGrp  NUMBER);

属性

表271-2 AQ$_DESCRIPTORの属性

属性 説明

queue_name

結果として通知されたメッセージがエンキューされたキューの名前。

consumer_name

マルチ・コンシューマ・キューのコンシューマ名。

msg_id

メッセージのID番号。

msg_prop

MSG_PROP_Tタイプで指定されるメッセージ・プロパティ。

gen_desc

タイムアウト指定を示します。

msgid_array

グループ通知メッセージIDリスト。

ntfnsRecdInGrp

グループで受信された通知。


AQ$_NTFN_DESCRIPTORタイプ

このタイプは、PL/SQL通知フラグに関する汎用通知記述子を格納するためのものです。

構文

TYPE SYS.AQ$_NTFN_DESCRIPTOR IS OBJECT(   ntfn_flags   NUMBER)

属性

表271-3 AQ$_NTFN_DESCRIPTORの属性

属性 説明

ntfn_flags

規定されたタイムアウト後に通知がすでに削除されている場合は、1に設定します。グループ化を示すには、2に設定します。デフォルトは0(ゼロ)です。


AQ$_NTFN_MSGID_ARRAYタイプ

このタイプは、AQネームスペースに通知のグループ化データを格納するためのものです。値230はVARRAYの最大サイズです。

構文

TYPE SYS.AQ$_NTFN_MSGID_ARRAY   AS VARRAY(1073741824)OF RAW(16);

AQ$_POST_INFOタイプ

メッセージの転送先となる匿名サブスクリプションを指定します。

構文

TYPE SYS.AQ$_POST_INFO IS OBJECT (
   name        VARCHAR2(128),
   namespace   NUMBER,
   payload     RAW(2000)  DEFAULT NULL);

属性

表271-4 AQ$_POST_INFOの属性

属性 説明

name

転送先となる匿名サブスクリプションの名前。

namespace

その他のアプリケーションからDBMS_AQ.POSTまたはOCISubscriptionPost()を介して通知を受信するには、ネームスペースがDBMS_AQ.NAMESPACE_ANONYMOUSであることが必要です。

payload

匿名サブスクリプションに転送されるペイロード。


AQ$_POST_INFO_LISTタイプ

メッセージの転送先となる匿名サブスクリプションのリストを識別します。


関連項目:

AQ$_POST_INFOタイプ

構文

TYPE SYS.AQ$_POST_INFO_LIST AS VARRAY(1024) OF SYS.AQ$_POST_INFO;

AQ$_PURGE_OPTIONS_Tタイプ

このタイプは、キュー表のパージで使用可能なオプションを指定します。

構文

TYPE AQ$_PURGE_OPTIONS_T is RECORD (
   block           BOOLEAN       DEFAULT FALSE
   delivery_mode   PLS_INTEGER   DEFAULT PERSISTENT);

表271-5 AQ$_PURGE_OPTIONS_Tタイプの属性

属性 説明

block

TRUE/FALSE

  • blockTRUEの場合、キュー表をパージしている間は、キュー表に含まれるすべてのキューの排他ロックは解放されません。これにより、キュー表のパージ時にエンキュー実行者とデキュー実行者が同時にブロックされます。blockTRUEの場合、パージ・コールは常に成功します。

  • blockのデフォルトはFALSEです。この場合、エンキュー実行者とデキュー実行者はブロックされませんが、同時実行回数が多いと、パージがエラーによって失敗する可能性があります。

delivery_mode

パージするメッセージの種類(DBMS_AQ.BUFFEREDまたはDBMS_AQ.PERSISTENT)。


AQ$_RECIPIENT_LIST_Tタイプ

メッセージを受信するエージェントのリストを識別します。このタイプは、キューが複数デキュー可能な場合のみに使用されます。


関連項目:

「AQ$_AGENTタイプ」

構文

TYPE SYS.AQ$_RECIPIENT_LIST_T IS TABLE OF SYS.AQ$_AGENT
   INDEX BY BINARY_INTEGER;

AQ$_REG_INFOタイプ

このタイプは、メッセージのプロデューサまたはコンシューマを識別します。

構文

TYPE SYS.AQ$_REG_INFO IS OBJECT (
   name                              VARCHAR2(128),
   namespace                         NUMBER,
   callback                          VARCHAR2(4000),
   context                           RAW(2000)  DEFAULT NULL,
   qosflags                          NUMBER,
   timeout                           NUMBER
   ntfn_grouping_class               NUMBER,
   ntfn_grouping_value               NUMBER    DEFAULT 600,
   ntfn_grouping_type                NUMBER,
   ntfn_grouping_start_time          TIMESTAMP WITH TIME ZONE,
   ntfn_grouping_repeat_count   NUMBER);

属性

表271-6 AQ$_REG_INFOタイプの属性

属性 説明

name

サブスクリプション名を指定します。単一コンシューマ・キューの登録の場合はschema.queue形式のサブスクリプション名、マルチ・コンシューマ・キューの登録の場合はschema.queue:consumer_name形式の名前となります。

namespace

サブスクリプションのネームスペースを指定します。Oracle Databaseアドバンスト・キューイングのキューから通知を受信するには、namespaceをDBMS_AQ.NAMESPACE_AQに設定する必要があります。DBMS_AQ.POSTまたはOCISubscriptionPost()を介して他のアプリケーションから通知を受信するには、namespaceをDBMS_AQ.NAMESPACE_ANONYMOUSに設定する必要があります。

callback

メッセージ通知時に実行されるアクションを指定します。HTTP通知を使用する場合は、http://www.company.com:8080を指定します。電子メール通知を使用する場合は、mailto://xyz@company.comを指定します。PLSQLCALLBACKプロシージャに対するRAWメッセージ・ペイロードの場合は、plsql://schema.procedure?PR=0を指定します。PLSQLCALLBACKプロシージャに対するXML変換済のユーザー定義タイプ・メッセージ・ペイロードの場合は、plsql://schema.procedure?PR=1を指定します。

context

コールバック関数に渡されるコンテキストを指定します。

qosflags

次の1つ以上の値に設定して、サービスの通知品質を指定できます。

  • NTFN_QOS_RELIABLE: この値は、信頼できる通知が必要であることを指定します。信頼できる通知がインスタンス間で存続し、データベースが再起動します。

  • NTFN_QOS_PAYLOAD: この値は、ペイロード配信が必要であることを指定します。これは、クライアント通知およびRAWキューに対してのみサポートされます。

  • NTFN_QOS_PURGE_ON_NTFN: この値は、最初の通知がこの登録場所に配信されたときに登録を自動的にパージすることを指定します。

ntfn_grouping_class

グループ化の基準を指定するために現在設定できるのは、次のフラグのみです。デフォルト値は0(ゼロ)です。ntfn_grouping_classが0(ゼロ)の場合、その他のすべての通知グループ化属性を0(ゼロ)にする必要があります。

  • NTFN_GROUPING_CLASS_TIME: 通知が時間ごとにグループ化されます。つまり、ユーザーが時間値を指定すると、その時間の終了時に1つの通知が発行されます。

ntfn_grouping_value

通知のグループ化の時間を秒単位で指定します。この時間の経過後、グループ化した通知は、ntfn_grouping_repeat_countで指定された回数に達するまで定期的に送信されます。

ntfn_grouping_type

  • NTFN_GROUPING_TYPE_SUMMARY: 指定時間内に発生したすべての通知の要約。(デフォルト)。

  • NTFN_GROUPING_TYPE_LAST: 指定時間内に発生した最後の通知。

ntfn_grouping_start_time

通知のグループ化の開始時間。通知のグループ化は、ユーザーが指定した時間に開始できますが、この時間はタイムゾーン付きの有効なタイムスタンプである必要があります。グループ化の使用時にntfn_grouping_start_timeを指定しない場合、デフォルトはタイムゾーン付きの現在のタイムスタンプになります。

ntfn_grouping_repeat_count

グループ化通知は、通知のグループ化の繰返し回数に指定した回数だけ送信され、その後、通常の通知に戻ります。ntfn_grouping_repeat_countを指定しない場合、次のデフォルトが使用されます。

  • NTFN_GROUPING_FOREVER: グループ化通知を無期限に送信し続けます。


使用上の注意

次の通知方法を使用できます。

  • OCIコールバック

  • 電子メール・コールバック

  • PL/SQLのコールバック

表271-7に、RAW表示が指定された場合に他の通知方法の非永続キューに対して実行されるアクションを示します。表271-8には、XML表示が指定された場合に実行されるアクションを示します。

表271-7 RAW表示が指定された場合の非永続キューに対するアクション

キュー・ペイロード・タイプ OCIコールバック 電子メール PL/SQLのコールバック

RAW

OCIコールバックはペイロードにおいてRAWデータを受信します。

サポートされていません。

PL/SQLコールバックはペイロードにおいてRAWデータを受信します。

Oracleオブジェクト・タイプ

サポートされていません。

サポートされていません。

サポートされていません。


表271-8 XML表示が指定された場合の非永続キューに対するアクション

キュー・ペイロード・タイプ OCIコールバック 電子メール PL/SQLのコールバック

RAW

OCIコールバックはペイロードにおいてXMLデータを受信します。

XMLデータはSOAPメッセージにフォーマットされ、登録済の電子メール・アドレスに送信されます。

PL/SQLコールバックはペイロードにおいてXMLデータを受信します。

Oracleオブジェクト・タイプ

OCIコールバックはペイロードにおいてXMLデータを受信します。

XMLデータはSOAPメッセージにフォーマットされ、登録済の電子メール・アドレスに送信されます。

PL/SQLコールバックはペイロードにおいてXMLデータを受信します。


AQ$_REG_INFO_LISTタイプ

キューに対する登録のリストを識別します。

構文

TYPE SYS.AQ$_REG_INFO_LIST AS VARRAY(1024) OF SYS.AQ$_REG_INFO;

AQ$_SUBSCRIBER_LIST_Tタイプ

キューをサブスクライブするサブスクライバのリストを識別します。


関連項目:

「AQ$_AGENTタイプ」

構文

TYPE SYS.AQ$_SUBSCRIBER_LIST_T IS TABLE OF SYS.AQ$_AGENT
   INDEX BY BINARY_INTEGER;

DEQUEUE_OPTIONS_Tタイプ

デキュー操作で使用可能なオプションを指定します。

構文

TYPE DEQUEUE_OPTIONS_T IS RECORD (
   consumer_name     VARCHAR2(30)    DEFAULT NULL,
   dequeue_mode      BINARY_INTEGER  DEFAULT REMOVE,
   navigation        BINARY_INTEGER  DEFAULT NEXT_MESSAGE,
   visibility        BINARY_INTEGER  DEFAULT ON_COMMIT,
   wait              BINARY_INTEGER  DEFAULT FOREVER,
   msgid             RAW(16)         DEFAULT NULL,
   correlation       VARCHAR2(128)   DEFAULT NULL,
   deq_condition     VARCHAR2(4000)  DEFAULT NULL,
   signature         aq$_sig_prop    DEFAULT NULL,
   transformation    VARCHAR2(61)    DEFAULT NULL,
   delivery_mode     PLS_INTEGER     DEFAULT PERSISTENT);

属性

表271-9 DEQUEUE_OPTIONS_Tの属性

属性 説明

consumer_name

コンシューマの名前。コンシューマ名が一致するメッセージのみアクセスされます。キューがマルチ・コンシューマ用に設定されていない場合、このフィールドはNULLに設定してください。

キューのセキュリティを確保するため、consumer_nameに有効なAQ引数名を指定し、dbms_aqadm.enable_db_accessプロシージャ・コールを介して、デキューを実行するデータベース・ユーザーにマップする必要があります。

dequeue_mode

デキューに関連付けるロック動作を指定します。設定可能な値は次のとおりです。

BROWSE: メッセージのロックを取得せずにメッセージを読み取ります。この仕様は、SELECT文と同じです。

LOCKED: メッセージを読み取り、その書込みロックを取得します。ロックはトランザクションの継続中有効です。この設定は、SELECT FOR UPDATE文と同じです。

REMOVE: メッセージを読み取り、削除します。この設定がデフォルトです。メッセージは保存プロパティに基づいてキュー表に保存されます。

REMOVE_NODATA: メッセージに更新または削除のマークを設定します。メッセージは保存プロパティに基づいてキュー表に保存されます。

navigation

取り出されるメッセージの位置を指定します。最初に、位置が判断されます。次に、検索基準が適用されます。最後に、メッセージが取り出されます。設定可能な値は次のとおりです。

NEXT_MESSAGE: 使用可能で検索基準と一致する次のメッセージを取り出します。前のメッセージがメッセージ・グループに属している場合は、検索基準と一致し、そのメッセージ・グループに属している次の使用可能メッセージが取り出されます。この設定がデフォルトです。

NEXT_TRANSACTION: 現行トランザクション・グループの残り(ある場合)をスキップし、次のトランザクション・グループの最初のメッセージを取り出します。この設定は、現行キューに対してメッセージ・グループが使用可能な場合にのみ使用できます。

FIRST_MESSAGE: 使用可能で検索基準と一致する最初のメッセージを取り出します。この設定により、位置がキューの先頭に再設定されます。

FIRST_MESSAGE_MULTI_GROUP: DBMS_AQ.DEQUEUE_ARRAYへのコールが、利用可能であり検索基準に一致するキューおよびデキュー・メッセージ(異なるトランザクション・グループ間にわたる場合あり)の開始位置をARRAY_SIZE制限に達するまでリセットすることを示します。トランザクション・グループを区別するには、メッセージのTRANSACTION_GROUP属性を参照します。

NEXT_MESSAGE_MULTI_GROUP: DBMS_AQ.DEQUEUE_ARRAYへのコールが、利用可能であり検索基準に一致する次のメッセージ(異なるトランザクション・グループ間にわたる場合あり)をARRAY_SIZE制限に達するまでデキューすることを示します。トランザクション・グループを区別するには、メッセージのTRANSACTION_GROUP属性を参照します。

visibility

新規メッセージを現行トランザクションの一部としてデキューするかどうかを指定します。BROWSEデキュー・モードの使用時は無視されます。設定可能な値は次のとおりです。

ON_COMMIT: デキューは現行トランザクションの一部になります。この設定がデフォルトです。

IMMEDIATE: デキュー操作は現行トランザクションに含まれていません。操作の最後にコミットする自律型トランザクションに含まれています。

wait

検索基準と一致する使用可能なメッセージが存在していない場合の待機時間を指定します。設定可能な値は次のとおりです。

FOREVER: 使用可能なメッセージが発生するまで待機します。この設定がデフォルトです。

NO_WAIT: 待機しません。

number: 待機時間(秒)。

msgid

デキューするメッセージのメッセージIDを指定します。

correlation

デキューするメッセージの相関IDを指定します。パーセント記号(%)やアンダースコア(_)などの特殊なパターン一致文字を使用できます。パターンを満たすメッセージが複数ある場合、デキュー順序は未定義です。

deq_condition

メッセージ・プロパティ、メッセージ・データ・プロパティおよびPL/SQLファンクションに基づいた条件式。

deq_conditionはSQL問合せのWHERE句と同様の構文を使用して、ブール式で指定されます。このブール式には、メッセージ・プロパティの状態、ユーザー・データのプロパティ(オブジェクト・ペイロードのみ)、およびPL/SQLまたはSQLファンクション(SQL問合せのWHERE句で指定)の状態を組み込むことができます。メッセージ・プロパティには、prioritycorridおよびキュー表におけるその他の列が含まれます。

メッセージ・ペイロード(オブジェクト・ペイロード)のデキュー条件を指定するには、句にオブジェクト・タイプの属性を使用します。各属性の前に修飾子としてtab.user_dataを付加して、ペイロードを格納するキュー表の特定の列を示します。deq_conditionのパラメータは4000バイト以内です。デキュー条件を満たすメッセージが複数ある場合、デキュー順序は未定義です。

signature

現在、実装されていません。

transformation

メッセージをデキューした後に適用される変換を指定します。変換のソース・タイプは、キューのタイプと一致させる必要があります。

delivery_mode

デキュー実行者は、デキュー・オプションでデキューするメッセージの配信モードを指定します。BUFFEREDPERSISTENTまたはPERSISTENT_OR_BUFFEREDを指定できます。デキューされたメッセージのメッセージ・プロパティに、デキューされたメッセージの配信モードが示されます。配列デキューは、配列サイズが1のバッファされたメッセージに対してのみサポートされています。


ENQUEUE_OPTIONS_Tタイプ

エンキュー操作で使用可能なオプションを指定します。

構文

TYPE SYS.ENQUEUE_OPTIONS_T IS RECORD (
   visibility            BINARY_INTEGER  DEFAULT ON_COMMIT,
   relative_msgid        RAW(16)         DEFAULT NULL,
   sequence_deviation    BINARY_INTEGER  DEFAULT NULL,
   transformation        VARCHAR2(61)    DEFAULT NULL,
   delivery_mode         PLS_INTEGER     NOT NULL DEFAULT PERSISTENT);

属性

表271-10 ENQUEUE_OPTIONS_Tの属性

属性 説明

visibility

エンキュー要求のトランザクション動作を指定します。設定可能な値は次のとおりです。

ON_COMMIT: エンキューは、現行トランザクションの一部です。操作は、トランザクションがコミットされると完了します。この設定がデフォルトです。

IMMEDIATE: エンキュー操作は現行トランザクションに含まれていません。操作の最後にコミットする自律型トランザクションに含まれています。非永続キューにエンキューするときは、この値のみ許可されます。

relative_msgid

順序逸脱操作で参照されるメッセージのメッセージIDを指定します。このフィールドは、sequence_deviationBEFOREが指定されている場合にのみ有効です。順序逸脱が指定されていない場合、このパラメータは無視されます。

sequence_deviation

エンキューされるメッセージが、すでにキューにある他のメッセージより前にデキューされる必要があるかどうかを指定します。設定可能な値は次のとおりです。

BEFORE: メッセージは、relative_msgidで指定されたメッセージより前にエンキューされます。

TOP: メッセージは、他のどのメッセージよりも前にエンキューされます。

transformation

メッセージをエンキューする前に適用される変換を指定します。変換ファンクションの戻りタイプは、キューのタイプと一致させる必要があります。

delivery_mode

エンキュー実行者は、エンキュー・オプションにエンキューするメッセージの配信モードを指定します。BUFFEREDまたはPERSISTENTを指定できます。エンキューされたメッセージのメッセージ・プロパティには、エンキューされたメッセージの配信モードが示されます。配列エンキューは、配列サイズが1のバッファされたメッセージに対してのみサポートされています。


SYS.MSG_PROP_Tタイプ

このタイプは、AQメッセージのメッセージ・プロパティをPL/SQL通知クライアント・コールバックに渡すために、PL/SQL通知でaq$_descriptorの1つのフィールドとして使用されます。

構文

CREATE or replace TYPE sys.msg_prop_t AS OBJECT (
   priority         NUMBER,
   delay            NUMBER,
   expiration       NUMBER,
   correlation      VARCHAR2(128),
   attempts         NUMBER,
   exception_queue  VARCHAR2(51),
   enqueue_time     DATE,
   state            NUMBER,
   sender_id        aq$_agent,
   original_msgid   RAW(16),
   delivery_mode    NUMBER);

パラメータ

表271-11 SYS.MSG_PROP_Tタイプの属性

パラメータ 説明

priority

メッセージの優先順位を指定します。数値が小さいほど優先順位は高くなります。優先順位には、負数も含めたあらゆる数値を使用できます。

delay

エンキュー・メッセージの遅延を指定します。遅延は、メッセージがデキュー可能になるまでの秒数を表します。msgidによるデキューの場合、delay操作は上書きされます。遅延設定をしてエンキューされたメッセージはWAITING状態になり、遅延期間が終了するとREADY状態になります。DELAY処理では、キュー・モニターを起動する必要があります。ただし、必要であれば、システムがキュー・モニターを自動的に起動します。delayは、メッセージをエンキューするプロデューサが設定します。

次の値を設定できます。

NO_DELAY: メッセージは、すぐにデキュー可能になります。

number: メッセージの遅延秒数。

expiration

メッセージの期限切れを指定します。この時間(秒)を経過したメッセージはデキューされません。このパラメータは、メッセージのデキューが可能になった時間からオフセットされます。期限切れ処理にはキュー・モニターを起動させる必要があります。ただし、必要であれば、システムがキュー・モニターを自動的に起動します。

次の値を設定できます。

NEVER: メッセージは時間切れになりません。

number: メッセージをREADY状態にしておく時間(秒数)。時間切れまでにメッセージがデキューされない場合、メッセージはEXPIRED状態で例外キューに移されます。

correlation

エンキュー時にメッセージのプロデューサが提供したIDを戻します。

attempts

メッセージのデキューの試行回数を戻します。このパラメータはエンキュー時には設定できません。

exception_queue

メッセージが正常に処理されなかった場合のメッセージの移動先キュー名を指定します。

メッセージは自動的に例外キューへ移動されます。メッセージが自動的に例外キューへ移動されるのは、次の場合です。

  • RETRY_COUNT。キュー作成時に、デキューの試行失敗回数が、DBMS_AQADM.CREATE_QUEUEプロシージャのMAX_RETRIESパラメータで指定した回数を超えた場合。

    マルチ・コンシューマ・キューの場合、デキューの試行失敗回数がコンシューマのMAX_RETRIESパラメータ値のいずれか1つを超えても、メッセージを例外キューに移動できるようになります。ただし、他のすべてのコンシューマにおいて、メッセージが正常にコンシュームされたか、MAX_RETRIESのパラメータ値を超えて試行を失敗すると、メッセージは移動されません。キューに対するMAX_RETRIESは、ALL_QUEUESデータ・ディクショナリ・ビューで参照できます。

    サーバー・プロセスの停止(ALTER SYSTEM KILL SESSION)またはインスタンスのSHUTDOWN ABORTによって、デキュー・トランザクションが失敗した場合は、RETRY_COUNTは増加しません。

  • 期限切れになるまで、メッセージはデキューされません。

  • 次のエラーのいずれかが発生すると、指定宛先キューへのメッセージ伝播は失敗します。

    * マルチ・コンシューマ宛先キューに受信者が指定されていない。

    * 単一のコンシューマ宛先キューに受信者が指定されている。

    * 宛先キューが例外キューである。

    * 変換適用時にエラーが発生した。

デフォルトは、キュー表に関連付けられている例外キューです。指定した例外キューが移動時に存在しない場合、そのメッセージは、キュー表に関連付けられているデフォルトの例外キューに移動され、アラート・ログに警告ログが記録されます。デフォルトの例外キューが指定されると、デキュー時にNULL値が戻されます。

enqueue_time

メッセージがエンキューされた時刻を指定します。この値はシステムによって設定され、エンキュー時にユーザーが設定することはできません。

state

デキュー時にメッセージの状態を指定します。このパラメータはエンキュー時には設定できません。次の状態を設定できます。

  • DBMS_AQ.READY: メッセージは処理可能な状態です。

  • DBMS_AQ.WAITING: メッセージは遅延の指定秒数に達していません。

  • DBMS_AQ.PROCESSED: メッセージは処理され、保存されています。

  • DBMSAQ.EXPIRED: メッセージは例外キューに移されました。

sender_id

エンキュー時にメッセージのプロデューサが指定するアプリケーション送信者の識別番号。aq$_agentタイプの送信者IDです。

保護キューでは、エンキュー時に送信者名が必要です。有効なAQエージェント名を指定し、dbms_aqadm. enable_db_accessプロシージャ・コールを介して、エンキューを実行するデータベース・ユーザーにマップする必要があります。送信者アドレスとプロトコルを指定する必要はありません。

メッセージが他のキューから伝播されている場合、デキュー時に戻されるメッセージ・プロパティの送信者IDとして送信者のアドレスが表示される場合があります。リモート・データベース[format source_queue@source_database_name]の場合、アドレスの値は、source_queue(ソース・データベース名)となります。

original_msgid

このパラメータは、Oracle Databaseアドバンスト・キューイングでメッセージを伝播するために使用します。

delivery_mode

DBMS_AQ.BUFFEREDまたはDBMS_AQ.PERSISTENT


MESSAGE_PROPERTIES_Tタイプ

このタイプは、DBMS_AQパッケージ内部で定義されており、個々のメッセージの状態を伝達するためにAQで使用される情報を記述します。これらはエンキュー時に設定され、デキュー時にその値が戻されます。

構文

TYPE message_properties_t IS RECORD (
   priority               BINARY_INTEGER  NOT NULL DEFAULT 1,
   delay                  BINARY_INTEGER  NOT NULL DEFAULT NO_DELAY,
   expiration             BINARY_INTEGER  NOT NULL DEFAULT NEVER,
   correlation            VARCHAR2(128)   DEFAULT NULL,
   attempts               BINARY_INTEGER,
   recipient_list         AQ$_RECIPIENT_LIST_T,
   exception_queue        VARCHAR2(61)    DEFAULT NULL,
   enqueue_time           DATE,
   state                  BINARY_INTEGER,
   sender_id              SYS.AQ$_AGENT   DEFAULT NULL, 
   original_msgid         RAW(16)         DEFAULT NULL,
   signature              aq$_sig_prop    DEFAULT NULL,
   transaction_group      VARCHAR2(30)    DEFAULT NULL,
   user_property          SYS.ANYDATA     DEFAULT NULL
   delivery_mode          PLS_INTEGER     NOT NULL DEFAULT DBMS_AQ.PERSISTENT); 

属性

表271-12 MESSAGE_PROPERTIES_Tの属性

属性 説明

priority

メッセージの優先順位を指定します。数値が小さいほど優先順位は高くなります。優先順位には、負数も含めたあらゆる数値を使用できます。

delay

エンキュー・メッセージの遅延を指定します。遅延は、メッセージがデキュー可能になるまでの秒数を表します。msgidによるデキューの場合、delay操作は上書きされます。遅延設定をしてエンキューされたメッセージはWAITING状態になり、遅延期間が終了するとREADY状態になります。DELAY処理では、キュー・モニターを起動する必要があります。ただし、必要であれば、システムがキュー・モニターを自動的に起動します。delayは、メッセージをエンキューするプロデューサが設定します。

次の値を設定できます。

NO_DELAY: メッセージは、すぐにデキュー可能になります。

number: メッセージの遅延秒数。

expiration

メッセージの期限切れを指定します。この時間(秒)を経過したメッセージはデキューされません。このパラメータは、メッセージのデキューが可能になった時間からオフセットされます。期限切れ処理にはキュー・モニターを起動させる必要があります。ただし、必要であれば、システムがキュー・モニターを自動的に起動します。

次の値を設定できます。

NEVER: メッセージは時間切れになりません。

number: メッセージをREADY状態にしておく時間(秒数)。時間切れまでにメッセージがデキューされない場合、メッセージはEXPIRED状態で例外キューに移されます。

correlation

エンキュー時にメッセージのプロデューサが提供したIDを戻します。

attempts

メッセージのデキューの試行回数を戻します。このパラメータはエンキュー時には設定できません。

recipient_list

このパラメータは、マルチ・コンシューマを許可しているキューに対してのみ有効です。デフォルトの受信者は、キューのサブスクライバです。このパラメータは、デキュー時にコンシューマに戻されません。

タイプ定義の詳細は、「AQ$_AGENTタイプ」を参照してください。

exception_queue

メッセージが正常に処理されなかった場合のメッセージの移動先キュー名を指定します。

メッセージは自動的に例外キューへ移動されます。メッセージが自動的に例外キューへ移動されるのは、次の場合です。

  • RETRY_COUNT。キュー作成時に、デキューの試行失敗回数が、DBMS_AQADM.CREATE_QUEUEプロシージャのMAX_RETRIESパラメータで指定した回数を超えた場合。

    マルチ・コンシューマ・キューの場合、デキューの試行失敗回数がコンシューマのMAX_RETRIESパラメータ値のいずれか1つを超えても、メッセージを例外キューに移動できるようになります。ただし、他のすべてのコンシューマにおいて、メッセージが正常にコンシュームされたか、MAX_RETRIESのパラメータ値を超えて試行を失敗すると、メッセージは移動されません。キューに対するMAX_RETRIESは、ALL_QUEUESデータ・ディクショナリ・ビューで参照できます。

    サーバー・プロセスの停止(ALTER SYSTEM KILL SESSION)またはインスタンスのSHUTDOWN ABORTによって、デキュー・トランザクションが失敗した場合は、RETRY_COUNTは増加しません。

  • 期限切れになるまで、メッセージはデキューされません。

  • 次のエラーのいずれかが発生すると、指定宛先キューへのメッセージ伝播は失敗します。

    * マルチ・コンシューマ宛先キューに受信者が指定されていない。

    * 単一のコンシューマ宛先キューに受信者が指定されている。

    * 宛先キューが例外キューである。

    * 変換適用時にエラーが発生した。

デフォルトは、キュー表に関連付けられている例外キューです。指定した例外キューが移動時に存在しない場合、そのメッセージは、キュー表に関連付けられているデフォルトの例外キューに移動され、アラート・ログに警告ログが記録されます。デフォルトの例外キューが指定されると、デキュー時にNULL値が戻されます。

enqueue_time

メッセージがエンキューされた時刻を指定します。この値はシステムによって設定され、エンキュー時にユーザーが設定することはできません。

state

デキュー時にメッセージの状態を指定します。このパラメータはエンキュー時には設定できません。次の状態を設定できます。

  • DBMS_AQ.READY: メッセージは処理可能な状態です。

  • DBMS_AQ.WAITING: メッセージは遅延の指定秒数に達していません。

  • DBMS_AQ.PROCESSED: メッセージは処理され、保存されています。

  • DBMSAQ.EXPIRED: メッセージは例外キューに移されました。

sender_id

エンキュー時にメッセージのプロデューサが指定するアプリケーション送信者の識別番号。aq$_agentタイプの送信者IDです。

保護キューでは、エンキュー時に送信者名が必要です。有効なAQエージェント名を指定し、dbms_aqadm. enable_db_accessプロシージャ・コールを介して、エンキューを実行するデータベース・ユーザーにマップする必要があります。送信者アドレスとプロトコルを指定する必要はありません。

メッセージが他のキューから伝播されている場合、デキュー時に戻されるメッセージ・プロパティの送信者IDとして送信者のアドレスが表示される場合があります。リモート・データベース[format source_queue@source_database_name]の場合、アドレスの値は、source_queue(ソース・データベース名)となります。

original_msgid

このパラメータは、Oracle Databaseアドバンスト・キューイングでメッセージを伝播するために使用します。

signature

現在、実装されていません。

transaction_group

デキューされたメッセージのtransaction_groupを指定します。同じトランザクション・グループに属するメッセージには、同じ属性値が指定されます。この属性は、DBMS_AQ.DEQUEUE_ARRAYでのみ設定されます。この属性を使用しても、DBMS_AQ.ENQUEUEまたはDBMS_AQ.ENQUEUE_ARRAYコールを介してメッセージのトランザクション・グループを設定することはできません。

user_property

このオプション属性を使用して、ペイロードの追加情報を格納できます。

delivery_mode

このメッセージ・パブリッシャは、message_propertiesに配信モードを指定します。DBMS_AQ.BUFFEREDまたはDBMS_AQ.PERSISTENTを指定できます。配列エンキューは、配列サイズが1のバッファされたメッセージに対してのみサポートされています。


MESSAGE_PROPERTIES_ARRAY_Tタイプ

このタイプは、メッセージのプロパティを保存するために、dbms_aq.enqueue_arrayおよびdbms_aq.dequeue_arrayコールで使用されます。payload_arrayの各エレメントは、MESSAGE_PROPERTIES_ARRAY_T VARRAYのエレメントと対応している必要があります。

構文

TYPE MESSAGE_PROPERTIES_ARRAY_T IS VARRAY (2147483647)
   OF MESSAGE_PROPERTIES_T;

MSGID_ARRAY_Tタイプ

msgid_array_tタイプは、エンキューまたはデキューされたメッセージに対応するメッセージIDを保存するために、dbms_aq.enqueue_arrayおよびdbms_aq.dequeue_arrayコールで使用されます。

構文

TYPE MSGID_ARRAY_T IS TABLE OF RAW(16) INDEX BY BINARY_INTEGER