DBMS_AQADMパッケージのストアドプロシージャを使用して、メッセージキューとキューテーブルを作成および管理できます。
DBMS_AQADMパッケージのストアドプロシージャを使用してメッセージキューとキューテーブルを作成および管理するには、スーパーユーザー権限が必要です。 この機能を使用する必要がある場合は、お問い合わせください。
表 1. DBMS_AQADM関数とストアドプロシージャ
関数またはストアドプロシージャ | 戻り値タイプ | 説明 |
ALTER_QUEUE | 非該当 | 既存のキューを変更します。 |
ALTER_QUEUE_TABLE | 非該当 | 既存のキューテーブルを変更します。 |
CREATE_QUEUE | 非該当 | キューを作成します。 |
CREATE_QUEUE_TABLE | 非該当 | キューテーブルを作成します。 |
DROP_QUEUE | 非該当 | 既存のキューを削除します。 |
DROP_QUEUE_TABLE | 非該当 | 既存のキューテーブルを削除します。 |
PURGE_QUEUE_TABLE | 非該当 | キューテーブルから 1 つ以上のメッセージを削除します。 |
START_QUEUE | 非該当 | キューをエンキュープロシージャでおよびデキュープロシージャで使用できるようにします。 |
STOP_QUEUE | 非該当 | キューをエンキュープロシージャでおよびデキュープロシージャで使用できないようにします。 |
次の表に、PolarDB for Oracleでサポートされる定数を示します。
定数 | 説明 | 適用パラメータ |
DBMS_AQADM.TRANSACTIONAL(1) | この定数は現在使用されていません。 この定数を使用すると、エラーメッセージが返されます。 | message_grouping |
DBMS_AQADM.NONE(0) | キューテーブルのメッセージのグループ化を指定します。 | message_grouping |
DBMS_AQADM.NORMAL_QUEUE(0) | create_queueと共に使用して、queue_typeを指定します。 | queue_type |
DBMS_AQADM.NORMAL_QUEUE(0) | create_queueと共に使用して、queue_typeを指定します。 | queue_type |
DBMS_AQADM.INFINITE(-1) | create_queueと共に使用して、retention_timeを指定します。 | retention_time |
DBMS_AQADM.PERSISTENT (0) | メッセージはテーブルに保存する必要があります。 | enqueue_options_t.delivery_mode |
DBMS_AQADM.BUFFERED (1) | この定数は現在使用されていません。 この定数を使用すると、エラーメッセージが返されます。 | enqueue_options_t.delivery_mode |
DBMS_AQADM.PERSISTENT_OR_BUFFERED (2) | この定数は現在使用されていません。 この定数を使用すると、エラーメッセージが返されます。 | enqueue_options_t.delivery_mode |
ALTER_QUEUE
ALTER_QUEUEストアドプロシージャを使用して、既存のキューを変更できます。 構文:
ALTER_QUEUE(
max_retries IN NUMBER DEFAULT NULL,
retry_delay IN NUMBER DEFAULT 0
retention_time IN NUMBER DEFAULT 0,
auto_commit IN BOOLEAN DEFAULT TRUE)
comment IN VARCHAR2 DEFAULT NULL,Parameters
パラメーター | 説明 |
queue_name | 新しいキューの名前です。 |
max_retries |
max_retriesの値は、 |
retry_delay |
|
retention_time | メッセージのデキューと保存の間に経過した秒数です。 単位は秒です。 説明
|
comment | キューに関連付けられたコメントです。 |
例
次のコードブロックは、retry_delayという名前のキューを変更し、retry_delayパラメーターを5秒に設定します。
EXEC DBMS_AQADM.ALTER_QUEUE(queue_name => 'work_order', retry_delay => 5);ALTER_QUEUE_TABLE
ALTER_QUEUE_TABLEストアドプロシージャを使用して、既存のキューテーブルを変更できます。 構文:
ALTER_QUEUE_TABLE (
queue_table IN VARCHAR2,
comment IN VARCHAR2 DEFAULT NULL,
primary_instance IN BINARY_INTEGER DEFAULT 0,
secondary_instance IN BINARY_INTEGER DEFAULT 0,Parameters
パラメーター | 説明 |
queue_table | キューテーブルの名前。 |
comment | キューテーブルに関するコメントです。 |
primary_instance | このパラメーターは互換性のために使用され、無視できます。 |
secondary_instance | このパラメーターは互換性のために使用され、無視できます。 |
例
次のコードブロックは、work_order_tableという名前のキューテーブルを変更します。
EXEC DBMS_AQADM.ALTER_QUEUE_TABLE
(queue_table => 'work_order_table', comment => 'This queue table contains work orders for the shipping department.');CREATE_QUEUE
CREATE_QUEUEストアドプロシージャを使用して、既存のキューテーブルにキューを作成できます。 構文:
CREATE_QUEUE(
queue_name IN VARCHAR2
queue_table IN VARCHAR2,
queue_type IN BINARY_INTEGER DEFAULT NORMAL_QUEUE,
max_retries IN NUMBER DEFAULT 5,
retry_delay IN NUMBER DEFAULT 0
retention_time IN NUMBER DEFAULT 0,
dependency_tracking IN BOOLEAN DEFAULT FALSE,
comment IN VARCHAR2 DEFAULT NULL,
auto_commit IN BOOLEAN DEFAULT TRUE)Parameters
パラメーター | 説明 |
queue_name | 新しいキューの名前です。 |
queue_table | 新しいキューが配置されているテーブルの名前です。 |
queue_type | 新しいキューの型。 有効な値:
|
max_retries |
|
retry_delay |
|
retention_time | メッセージのデキューと保存の間に経過した秒数です。 単位は秒です。 説明
|
dependency_tracking | このパラメーターは互換性のために使用され、無視できます。 |
comment | キューに関連付けられたコメントです。 |
auto_commit | このパラメーターは互換性のために使用され、無視できます。 |
例
次の匿名ブロックは、work_order_tableテーブルにwork_orderという名前のキューを作成します。
BEGIN
DBMS_AQADM.CREATE_QUEUE ( queue_name => 'work_order', queue_table => 'work_order_table', comment => 'This queue contains pending work orders.');
END;CREATE_QUEUE_TABLE
CREATE_QUEUE_TABLEストアドプロシージャを使用して、キューテーブルを作成できます。 プロシージャには次の署名があります。構文:
CREATE_QUEUE_TABLE (
queue_table IN VARCHAR2,
queue_payload_type IN VARCHAR2,
storage_clause IN VARCHAR2 DEFAULT NULL,
sort_list IN VARCHAR2 DEFAULT NULL,
multiple_consumers IN BOOLEAN DEFAULT FALSE,
message_grouping IN BINARY_INTEGER DEFAULT NONE,
comment IN VARCHAR2 DEFAULT NULL,
auto_commit IN BOOLEAN DEFAULT TRUE,
primary_instance IN BINARY_INTEGER DEFAULT 0,
secondary_instance IN BINARY_INTEGER DEFAULT 0,
compatible IN VARCHAR2 DEFAULT NULL,
secure IN BOOLEAN DEFAULT FALSE)Parameters
パラメーター | 説明 |
queue_table | キューテーブルの名前。 |
queue_payload_type | キューテーブルに格納されるデータのユーザー定義タイプです。 説明 RAW f データ型を指定するには、RAW 型を識別するユーザー定義型を作成する必要があります。 |
storage_clause | キューテーブルの属性を指定します。
|
sort_list | このパラメーターは、キューのデキュー順序を制御し、キューを昇順でソートするために使用される列の名前を指定します。 有効な値:
|
multiple_consumers | このパラメーターは、必要に応じて FALSE に設定する必要があります。 |
message_grouping | このパラメーターは、必要に応じて NONE に設定する必要があります。 |
comment | キューテーブルに関するコメントです。 |
auto_commit | このパラメーターは互換性のために使用され、無視できます。 |
primary_instance | このパラメーターは互換性のために使用され、無視できます。 |
secondary_instance | このパラメーターは互換性のために使用され、無視できます。 |
compatible | このパラメーターは互換性のために使用され、無視できます。 |
secure | このパラメーターは互換性のために使用され、無視できます。 |
例
次の匿名ブロックは、VARCHAR2名とプロジェクトの説明を保持する属性を持つwork_order型を作成します。 ブロックはこの型を使用してキューテーブルを作成します。
BEGIN
CREATE TYPE work_order AS (name VARCHAR2, project TEXT, completed BOOLEAN);
EXEC DBMS_AQADM.CREATE_QUEUE_TABLE
(queue_table => 'work_order_table',
queue_payload_type => 'work_order',
comment => 'Work order message queue table');
END;キューテーブルの名前はwork_order_tableで、work_order型のペイロードが含まれます。 これが作業順序メッセージキューテーブルであることを示すコメントが追加されます。
DROP_QUEUE
DROP_QUEUEストアドプロシージャを使用して、キューを削除できます。 構文:
DROP_QUEUE(
queue_name IN VARCHAR2,
auto_commit IN BOOLEAN DEFAULT TRUE)Parameters
パラメーター | 説明 |
queue_name | 削除するキューの名前です。 |
auto_commit | このパラメーターは互換性のために使用され、無視できます。 |
例
次の匿名ブロックは、work_orderという名前のキューを削除します。
BEGIN
DBMS_AQADM.DROP_QUEUE(queue_name => 'work_order');
END;DROP_QUEUE_TABLE
DROP_QUEUE_TABLEストアドプロシージャを使用して、キューテーブルを削除できます。 構文:
DROP_QUEUE_TABLE(
queue_table IN VARCHAR2,
force IN BOOLEAN default FALSE,
auto_commit IN BOOLEAN default TRUE)Parameters
パラメーター | 説明 |
queue_table | キューテーブルの名前。 |
force | コマンドを使用してエントリを含むテーブルを削除する場合の
|
auto_commit | このパラメーターは互換性のために使用され、無視できます。 |
例
次の匿名ブロックは、work_order_tableという名前のテーブルを削除します。
BEGIN
DBMS_AQADM.DROP_QUEUE_TABLE ('work_order_table', force => TRUE);
END;PURGE_QUEUE_TABLE
PURGE_QUEUE_TABLEストアドプロシージャを使用して、キューテーブルからメッセージを削除できます。 構文:
PURGE_QUEUE_TABLE(
queue_table IN VARCHAR2,
purge_condition IN VARCHAR2,
purge_options IN aq$_purge_options_t)Parameters
パラメーター | 説明 |
queue_table | メッセージを削除するキューテーブルの名前です。 |
purge_condition | サーバーが削除するメッセージを決定するときにサーバーが評価する条件として指定します。 条件は SQL WHERE 句で指定されます。 |
purge_options |
|
表 2. aq$_purge_options_t
属性 | タイプ | 説明 |
ブロック | Boolean | テーブル内のすべてのキューで排他ロックを保持するかどうかを指定します。 デフォルト値は FALSE です。 有効な値:
|
delivery_mode | INTEGER | 削除するオブジェクトの名前です。 値は |
例
次の匿名ブロックは、completedという名前の列の値がYESの場合、work_order_tableからメッセージを削除します。
DECLARE
purge_options dbms_aqadm.aq$_purge_options_t;
BEGIN
dbms_aqadm.purge_queue_table('work_order_table', 'completed = YES', purge_options);
END;START_QUEUE
START_QUEUEストアドプロシージャを使用して、指定したキューのエンキューまたはデキューを有効にできます。 構文:
START_QUEUE(
queue_name IN VARCHAR2,
enqueue IN BOOLEAN DEFAULT TRUE,
dequeue IN BOOLEAN DEFAULT TRUE)Parameters
パラメーター | 説明 |
queue_name | キューの名前。 |
enqueue | キューイングを有効にするかどうかを指定します。 デフォルト値は TRUE です。 有効な値:
|
dequeue | デキューを有効にするかどうかを指定します。 デフォルト値は TRUE です。 有効な値:
|
例
次の匿名ブロックは、work_orderという名前のキューをエンキューに使用できるようにします。
BEGIN
DBMS_AQADM.START_QUEUE
(queue_name => 'work_order);
END;STOP_QUEUE
STOP_QUEUEストアドプロシージャを使用して、指定したキューのエンキューまたはデキューを無効にできます。 構文:
STOP_QUEUE(
queue_name IN VARCHAR2,
enqueue IN BOOLEAN DEFAULT TRUE,
dequeue IN BOOLEAN DEFAULT TRUE,
wait IN BOOLEAN DEFAULT TRUE)Parameters
パラメーター | 説明 |
queue_name | キューの名前。 |
enqueue | キューイングを無効にするかどうかを指定します。 デフォルト値は TRUE です。 有効な値:
|
dequeue | デキューを無効にするかどうかを指定します。 デフォルト値は TRUE です。 有効な値:
|
wait | サーバーが指定された変更を適用する前に、未完了のトランザクションが完了するのを待つかどうかを指定します。 有効な値:
|
例
次の匿名ブロックは、work_orderという名前のキューのエンキューとデキューを無効にします。
BEGIN
DBMS_AQADM.STOP_QUEUE(queue_name =>'work_order', enqueue=>TRUE, dequeue=>TRUE, wait=>TRUE);
END;すべての保留中のトランザクションが完了すると、エンキューとデキューは無効になります。