296 Oracle Databaseアドバンスト・キューイング(AQ)のタイプ
この章では、PL/SQL、DBMS_AQ
およびDBMS_AQADM
向けにOracle Databaseアドバンスト・キューイング(AQ)パッケージで使用されるタイプについて説明します。
この章のトピックは、次のとおりです:
参照:
Oracle Databaseアドバンスト・キューイングの使用方法の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。
296.2 Oracle Databaseアドバンスト・キューイング(AQ)のタイプ - タイプの要約
Oracle Databaseアドバンスト・キューイング(AQ)では、タイプを使用して特定タイプの情報を指定します。
296.2.1 AQ$_AGENTタイプ
このタイプは、メッセージのプロデューサまたはコンシューマを識別します。
構文
TYPE SYS.AQ$_AGENT IS OBJECT ( name VARCHAR2(512), address VARCHAR2(1024), protocol NUMBER);
属性
表296-1 AQ$_AGENTの属性
属性 | 説明 |
---|---|
|
メッセージのプロデューサ名またはコンシューマ名です。名前は、予約語に関して、『Oracle Database SQL言語リファレンス』のオブジェクト名ガイドラインに従う必要があります。 |
|
受信者のプロトコル固有のアドレス。プロトコルが たとえば、サイト |
|
アドレスを解釈しメッセージを伝播させるプロトコルです。プロトコル1から127は、内部的に使用されるものです。プロトコル番号が128から255の場合、受信者のアドレスはOracle Databaseアドバンスト・キューイングで解釈されません。 |
296.2.2 AQ$_AGENT_LIST_Tタイプ
このタイプは、DBMS_AQ
.LISTEN
がリスニングするエージェントのリストを識別します。
参照:
構文
TYPE SYS.AQ$_AGENT_LIST_T IS TABLE OF SYS.AQ$_AGENT INDEX BY BINARY INTEGER;
296.2.3 AQ$_DESCRIPTORタイプ
このタイプは、通知時にAQ PL/SQLのコールバックが受信するOracle Databaseアドバンスト・キューイングの記述子を指定します。
構文
TYPE SYS.AQ$_DESCRIPTOR IS OBJECT ( queue_name VARCHAR2(261), consumer_name VARCHAR2(512), msg_id RAW(16), msg_prop MSG_PROP_T, gen_desc AQ$_NTFN_DESCRIPTOR, msgid_array SYS.AQ$_NTFN_MSGID_ARRAY, ntfnsRecdInGrp NUMBER);
属性
表296-2 AQ$_DESCRIPTORの属性
属性 | 説明 |
---|---|
|
メッセージがエンキューされ、通知されたキューの名前を指定します。 |
|
マルチ・コンシューマ・キューのコンシューマの名前 |
|
メッセージの指定番号 |
|
|
|
タイムアウト指定を示します。 |
|
グループ化の通知のメッセージIDリスト |
|
グループで受信した通知 |
296.2.4 AQ$_NTFN_DESCRIPTORタイプ
このタイプは、PL/SQL通知フラグに関する汎用通知記述子を格納するためのものです。
構文
TYPE SYS.AQ$_NTFN_DESCRIPTOR IS OBJECT( ntfn_flags NUMBER)
属性
表296-3 AQ$_NTFN_DESCRIPTORの属性
属性 | 説明 |
---|---|
|
規定されたタイムアウト後に通知がすでに削除されている場合は、1に設定します。グループ化を示すには、2に設定します。デフォルトは0です。 |
296.2.5 AQ$_NTFN_MSGID_ARRAYタイプ
このタイプは、AQネームスペースに通知のグループ化データを格納するためのものです。値230はVARRAYの最大サイズです。
構文
TYPE SYS.AQ$_NTFN_MSGID_ARRAY AS VARRAY(1073741824)OF RAW(16);
296.2.6 AQ$_POST_INFOタイプ
このタイプは、メッセージの転送先となる匿名サブスクリプションを指定します。
構文
TYPE SYS.AQ$_POST_INFO IS OBJECT ( name VARCHAR2(512), namespace NUMBER, payload RAW(32767));
属性
表296-4 AQ$_POST_INFOの属性
属性 | 説明 |
---|---|
|
転送先となる匿名サブスクリプションの名前。 |
|
その他のアプリケーションから |
|
匿名サブスクリプションに転送されるペイロード。 |
296.2.7 AQ$_POST_INFO_LISTタイプ
このタイプは、メッセージの転送先となる匿名サブスクリプションのリストを識別します。
参照:
構文
TYPE SYS.AQ$_POST_INFO_LIST AS VARRAY(1024) OF SYS.AQ$_POST_INFO;
296.2.8 AQ$_PURGE_OPTIONS_Tタイプ
このタイプは、キュー表のパージで使用可能なオプションを指定します。
構文
TYPE AQ$_PURGE_OPTIONS_T is RECORD ( block BOOLEAN DEFAULT FALSE delivery_mode PLS_INTEGER DEFAULT PERSISTENT);
表296-5 AQ$_PURGE_OPTIONS_Tタイプの属性
属性 | 説明 |
---|---|
|
|
|
パージするメッセージの種類( |
296.2.9 AQ$_RECIPIENT_LIST_Tタイプ
メッセージを受信するエージェントのリストを識別します。このタイプは、キューが複数デキュー可能な場合のみに使用されます。
参照:
構文
TYPE SYS.AQ$_RECIPIENT_LIST_T IS TABLE OF SYS.AQ$_AGENT INDEX BY BINARY_INTEGER;
296.2.10 AQ$_REG_INFOタイプ
このタイプは、メッセージのプロデューサまたはコンシューマを識別します。
構文
TYPE SYS.AQ$_REG_INFO IS OBJECT ( name VARCHAR2(512), namespace NUMBER, callback VARCHAR2(4000), context RAW(2000) DEFAULT NULL, anyctx ANYDATA, ctxtype NUMBER, payloadcbk VARCHAR2(4000), timeout NUMBER, ntfn_grouping_class NUMBER, ntfn_grouping_value NUMBER DEFAULT 600, ntfn_grouping_type NUMBER, ntfn_grouping_start_time TIMESTAMP(6) WITH TIME ZONE, ntfn_grouping_repeat_count NUMBER);
属性
表296-6 AQ$_REG_INFOタイプの属性
属性 | 説明 |
---|---|
|
サブスクリプション名を指定します。単一コンシューマ・キューの登録の場合は |
|
サブスクリプションのネームスペースを指定します。Oracle Database Advanced Queuingキューから通知を受信するには、ネームスペースが |
|
メッセージ通知時に実行されるアクションを指定します。HTTP通知の場合、 |
|
コールバック関数に渡すコンテキストを指定します。 |
|
コールバック・ファンクションに渡される |
|
コンテキスト・タイプを指定します。有効な値は |
|
コールバック・ファンクションのペイロードを指定します |
|
時間を秒単位で指定します。 |
|
グループ化の基準を指定するために現在設定できるのは、次のフラグのみです。デフォルト値は0(ゼロ)です。
|
|
グループ化通知の周期を秒で指定します。 |
|
|
|
通知のグループ化の開始時間。通知のグループ化は、ユーザーが指定した時間に開始できますが、この時間はタイムゾーン付きの有効なタイムスタンプである必要があります。グループ化を使用する際に |
|
グループ化の通知が通知のグループ化の繰返し件数で指定した回数送信された後、通常の通知に戻ります。ntfn_grouping_repeat_countを指定しない場合、デフォルトで次のように設定されます。
|
使用上のノート
次の通知方法を使用できます。
-
OCIコールバック
-
電子メール・コールバック
-
PL/SQLコールバック
表296-7に、RAW表示が指定された場合に他の通知方法の非永続キューに対して実行されるアクションを示します。表296-8には、XML表示が指定された場合に実行されるアクションを示します。
表296-7 RAW表示が指定された場合の非永続キューに対するアクション
キュー・ペイロード・タイプ | OCIコールバック | 電子メール | PL/SQLコールバック |
---|---|---|---|
|
OCIコールバックは、ペイロードのRAWデータを受信します。 |
サポートされていません。 |
PL/SQLコールバックは、ペイロードのRAWデータを受信します。 |
|
サポートされていません。 |
サポートされていません。 |
サポートされていません。 |
表296-8 XML表示が指定された場合の非永続キューに対するアクション
キュー・ペイロード・タイプ | OCIコールバック | 電子メール | PL/SQLコールバック |
---|---|---|---|
|
OCIコールバックは、ペイロードのXMLデータを受信します。 |
XMLデータがSOAPメッセージとしてフォーマットされ、登録されている電子メール・アドレスに送信されます。 |
PL/SQLコールバックは、ペイロードのXMLデータを受信します。 |
|
OCIコールバックは、ペイロードのXMLデータを受信します。 |
XMLデータがSOAPメッセージとしてフォーマットされ、登録されている電子メール・アドレスに送信されます。 |
PL/SQLコールバックは、ペイロードのXMLデータを受信します。 |
296.2.11 AQ$_REG_INFO_LISTタイプ
キューに対する登録のリストを識別します。
参照:
構文
TYPE SYS.AQ$_REG_INFO_LIST AS VARRAY(1024) OF SYS.AQ$_REG_INFO;
296.2.12 AQ$_SUBSCRIBER_LIST_Tタイプ
このタイプは、キューをサブスクライブするサブスクライバのリストを識別します。
参照:
構文
TYPE SYS.AQ$_SUBSCRIBER_LIST_T IS TABLE OF SYS.AQ$_AGENT INDEX BY BINARY_INTEGER;
296.2.13 DEQUEUE_OPTIONS_Tタイプ
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);
属性
表296-9 DEQUEUE_OPTIONS_Tの属性
属性 | 説明 |
---|---|
|
コンシューマの名前。コンシューマ名が一致するメッセージのみアクセスされます。キューがマルチ・コンシューマ用に設定されていない場合、このフィールドは キューのセキュリティを確保するため、consumer_nameに有効なAQ引数名を指定し、 |
|
デキューに対応付けられたロック動作を指定します。設定可能な値は次のとおりです。
|
|
取り出されるメッセージの位置を指定します。最初に位置が判断されます。次に検索基準が適用されます。最後にメッセージが取り出されます。設定可能な値は次のとおりです。
|
|
新規メッセージを現行トランザクションの一部としてデキューするかどうかを指定します。
|
|
検索基準と一致する使用可能なメッセージが存在していない場合の待機時間を指定します。設定可能な値は次のとおりです。
|
|
デキューするメッセージのメッセージ識別子を指定します。 |
|
デキューするメッセージの相関IDを指定します。パーセント記号( |
|
メッセージ・プロパティ、メッセージ・データ・プロパティおよびPL/SQLファンクションに基づいた条件式。
メッセージ・ペイロード(オブジェクト・ペイロード)のデキュー条件を指定するには、句にオブジェクト・タイプの属性を使用します。各属性には、ペイロードを格納するキュー表の特定の列を示す識別子として、接頭辞 |
|
現在、実装されていません。 |
|
メッセージをデキューした後に適用される変換を指定します。変換のソース・タイプは、キューのタイプと一致させる必要があります。 |
|
デキュー実行者は、デキュー・オプションでデキューするメッセージの配信モードを指定します。 |
296.2.14 ENQUEUE_OPTIONS_Tタイプ
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);
属性
表296-10 ENQUEUE_OPTIONS_Tの属性
属性 | 説明 |
---|---|
|
エンキュー要求のトランザクション動作を指定します。設定可能な値は次のとおりです。
|
|
順序逸脱操作で参照されるメッセージのメッセージIDを指定します。このフィールドは、 |
|
エンキューされるメッセージが、すでにキューにある他のメッセージより前にデキューされる必要があるかどうかを指定します。設定可能な値は次のとおりです。
|
|
メッセージをエンキューする前に適用される変換を指定します。変換ファンクションの戻り型は、キューの型と一致する必要があります。 |
|
エンキュー実行者は、エンキュー・オプションにエンキューするメッセージの配信モードを指定します。 |
296.2.15 QUEUE_PROPS_Tタイプ
このタイプは、通知時にAQ PL/SQLのコールバックが受信するOracle Databaseアドバンスト・キューイングの記述子を指定します。
構文
TYPE QUEUE_PROPS_T IS RECORD ( retry_delay NUMBER DEFAULT 0, retention_time NUMBER DEFAULT 0, sort_list VARCHAR2(30) DEFAULT NULL, cache_hint BINARY_INTEGER DEFAULT AUTO, retention_type BINARY_INTEGER DEFAULT DBMS_AQ.DEQUEUE_TIME );
属性
表296-11 QUEUE_PROPS_Tの属性
属性 | 説明 |
---|---|
|
アプリケーションのロールバック後、スケジュールされたメッセージの再処理が行われるまでの時間を秒単位で指定します。 |
|
キューからデキューされた後、メッセージがキュー表内に保持される秒数を指定します。 |
|
シャード・キューは、 |
|
シャード・キューに対してメッセージをキャッシュするかどうかに関するヒントを指定します。ユーザーは次のいずれかを指定できます。
|
|
保存のタイプを指定します。
|
296.2.16 SEEK_INPUT_Tタイプ
このタイプは、シャードごとのシーク入力を指定します。
構文
TYPE SEEK_INPUT_T IS RECORD( shard binary_integer DEFAULT DBMS_AQ.ALL_SHARDS, priority binary_integer DEFAULT DBMS_AQ.ALL_PRIORITIES, seek_msgid raw(16) DEFAULT NULL, seek_time TIMESTAMP WITH TIME ZONE DEFAULT NULL );
属性
表296-12 SEEK_INPUT_Tの属性
属性 | 説明 |
---|---|
|
シーク操作を実行する必要があるシャード識別子。有効な値は、 値が |
|
シークは、シャードのすべての優先度に対して個別に実行されます。 値が |
|
|
|
|
296.2.17 SEEK_OUTPUT_Tタイプ
このタイプは、シーク・コールのシーク出力を指定します。
構文
TYPE SEEK_OUTPUT_T IS RECORD( shard binary_integer, priority binary_integer, seeked_from raw(16), seeked_to raw(16));
属性
表296-13 SEEK_OUTPUT_Tの属性
属性 | 説明 |
---|---|
|
サブスクライバに対してシーク操作が実行されるシャード識別子を指定します。 |
|
優先度キューに対してのみ適用されるシャードの優先度を指定します。優先度キュー以外の場合、値はnullです。 |
|
シーク前のデキュー位置のメッセージIDを指定します。 |
|
シーク後のデキュー位置のメッセージIDを指定します。 |
296.2.18 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);
パラメータ
表296-14 SYS.MSG_PROP_Tタイプの属性
パラメータ | 説明 |
---|---|
|
メッセージの優先度を指定します。数値が小さいほど高い優先度を示します。優先度は、負数も含めたあらゆる数値で指定できます。 |
|
エンキュー・メッセージの遅延を指定します。遅延は、メッセージがデキュー可能になるまでの秒数を表します。 次の値を設定できます。
number: メッセージの遅延秒数。 |
|
メッセージの期限切れを指定します。この時間(秒)を経過したメッセージはデキューされません。このパラメータは、メッセージのデキューが可能になった時間からオフセットされます。期限切れ処理にはキュー・モニターを起動させる必要があります。ただし、必要であれば、システムがキュー・モニターを自動的に起動します。 次の値を設定できます。
number: メッセージを |
|
エンキュー時にメッセージのプロデューサが提供したIDを戻します。 |
|
メッセージのデキューを試みた回数を戻します。このパラメータを、エンキュー時刻に設定することはできません。 |
|
メッセージが正常に処理されなかった場合のメッセージの移動先キュー名を指定します。 メッセージは自動的に例外キューへ移動されます。メッセージが自動的に例外キューへ移動されるのは、次の場合です。
デフォルトは、キュー表に関連付けられている例外キューです。指定した例外キューが移動時に存在しない場合、そのメッセージは、キュー表に関連付けられているデフォルトの例外キューに移動され、アラート・ログに警告ログが記録されます。デフォルトの例外キューが指定されると、デキュー時に |
|
メッセージがエンキューされた時刻を指定します。この値はシステムにより決定され、ユーザーはエンキュー時に設定できません。 |
|
デキュー時のメッセージの状態を指定します。このパラメータを、エンキュー時刻に設定することはできません。次の状態を設定できます。
|
|
エンキュー時にメッセージのプロデューサが指定するアプリケーション送信者の識別番号。 保護キューでは、エンキュー時に送信者名が必要です。有効なAQエージェント名を指定し、 メッセージが他のキューから伝播されている場合、デキュー時に戻されるメッセージ・プロパティの送信者IDとして送信者のアドレスが表示される場合があります。リモート・データベース[ |
|
このパラメータは、Oracle Databaseアドバンスト・キューイングでメッセージを伝播するために使用します。 |
|
|
296.2.19 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);
属性
表296-15 MESSAGE_PROPERTIES_Tの属性
属性 | 説明 |
---|---|
|
メッセージの優先度を指定します。数値が小さいほど高い優先度を示します。優先度は、負数も含めたあらゆる数値で指定できます。 |
|
エンキュー・メッセージの遅延を指定します。遅延は、メッセージがデキュー可能になるまでの秒数を表します。 次の値を設定できます。
number: メッセージの遅延秒数。 |
|
メッセージの期限切れを指定します。この時間(秒)を経過したメッセージはデキューされません。このパラメータは、メッセージのデキューが可能になった時間からオフセットされます。期限切れ処理にはキュー・モニターを起動させる必要があります。ただし、必要であれば、システムがキュー・モニターを自動的に起動します。 次の値を設定できます。
number: メッセージを |
|
エンキュー時にメッセージのプロデューサが提供したIDを戻します。 |
|
メッセージのデキューを試みた回数を戻します。このパラメータを、エンキュー時刻に設定することはできません。 |
|
このパラメータは、複数のコンシューマが可能なキューに対してのみ有効です。デフォルトの受信者はキューのサブスクライバです。このパラメータはデキュー時にコンシューマに戻されません。 タイプ定義については、「AQ$_AGENTタイプ」を参照してください。 |
|
メッセージが正常に処理されなかった場合のメッセージの移動先キュー名を指定します。 メッセージは自動的に例外キューへ移動されます。メッセージが自動的に例外キューへ移動されるのは、次の場合です。
デフォルトは、キュー表に関連付けられている例外キューです。指定した例外キューが移動時に存在しない場合、そのメッセージは、キュー表に関連付けられているデフォルトの例外キューに移動され、アラート・ログに警告ログが記録されます。デフォルトの例外キューが指定されると、デキュー時に |
|
|
|
デキュー時のメッセージの状態を指定します。このパラメータを、エンキュー時刻に設定することはできません。次の状態を設定できます。
|
|
エンキュー時にメッセージのプロデューサが指定するアプリケーション送信者の識別番号。 保護キューでは、エンキュー時に送信者名が必要です。有効なAQエージェント名を指定し、 メッセージが他のキューから伝播されている場合、デキュー時に戻されるメッセージ・プロパティの送信者IDとして送信者のアドレスが表示される場合があります。リモート・データベース[ |
|
このパラメータは、Oracle Databaseアドバンスト・キューイングでメッセージを伝播するために使用します。 |
|
現在、実装されていません。 |
|
デキューされたメッセージの |
|
このオプション属性を使用して、ペイロードの追加情報を格納できます。 |
|
このメッセージ・パブリッシャは、 |
296.2.20 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;