Oracle と互換性のある PolarDB データベースは、Oracle が提供していない ALTER QUEUE SQL コマンドの構文を提供します。 このコマンドは、DBMS_AQADM パッケージで使用できます。

説明

aq_administrator_role 特権がある場合は、ALTER QUEUE コマンドを使用してキューを変更できます。 このコマンドには、関数に基づく次の 4 つのタイプの構文があります。

キューの名前の変更

最初のタイプの構文を使用して、キューの名前を変更できます。 構文は次のとおりです。

ALTER QUEUE queue_name RENAME TO new_name
表 1. パラメーター
パラメーター 説明
queue_name キューの名前です。 名前はスキーマで修飾できます。
RENAME TO キューの名前を変更するために使用される RENAME TO 句です。 句の後には、キューの新しい名前が続きます。
new_name キューの新しい名前です。

キューのパラメーターの変更

2 番目のタイプの構文を使用して、キューのパラメーターを変更できます。

ALTER QUEUE queue_name SET [ ( { option_name option_value  } [,SET option_name
表 2. パラメーター
パラメーター 説明
queue_name キューの名前です。 名前はスキーマで修飾できます。

変更するパラメーターを指定するには、SET 句と option_name/option_value のペアを含める必要があります。

option_name option_value

新しいキューに関連付けられている 1 つ以上のオプションの名前と値です。 重複するオプション名を指定すると、サーバーはエラーを返します。

  • option_name パラメータの値が retries の場合、デキューの試行回数を示す整数を指定する必要があります。
  • option_name パラメータの値が retrydelay の場合、遅延を秒単位で示す倍精度値を指定する必要があります。
  • option_name パラメータの値が retention の場合、保持期間を秒単位で示す倍精度値を指定する必要があります。

エンキューとデキューの有効化および無効化

3 番目のタイプの構文を使用して、キューのエンキューおよびデキューを有効または無効にできます。

ALTER QUEUE queue_name ACCESS { START | STOP } [ FOR { enqueue | dequeue } ] [ NOWAIT ]
表 3. パラメーター
パラメーター 説明
queue_name キューの名前です。 名前はスキーマで修飾できます。
ACCESS キューのエンキューおよびデキューを有効または無効にするには、ACCESS 句を含める必要があります。
START | STOP 必要とされるキューの状態です。
FOR enqueue|dequeue キューのエンキューまたはデキュー機能を有効にするかどうかを指定します。
NOWAIT サーバーがキューの状態を変更する前に未解決のトランザクションの完了を待たないことを指定します。 NOWAIT キーワードは、ACCESS 句で STOP を指定した場合にのみ使用できます。 ACCESS 句で START を指定すると、サーバーはエラーを返します。

キューのコールバックの詳細の追加または削除

4 番目のタイプの構文を使用して、指定したキューのコールバックの詳細を追加または削除できます。

ALTER QUEUE queue_name { ADD | DROP } CALL TO location_name [ WITH callback_option ]
パラメーター 説明
queue_name キューの名前です。 名前はスキーマで修飾できます。
ADD | DROP キューのコールバック詳細を追加するか削除するかを指定します。
location_name コールバックストアドプロシージャの名前です。
callback_option lback_option パラメーターの有効な値は context です。 callback_option パラメーターを含める場合は、RAW 値を指定する必要があります。

次の例では、キューの名前が work_queue_east から work_order に変更されています。

ALTER QUEUE work_queue_east RENAME TO work_order;

次の例は、work_order という名前のキューを変更する方法を示しています。 再試行の回数は 100 に設定され、再試行の間隔は 2 秒に設定され、デキューされたメッセージの保存期間は 10 秒に設定されます。

ALTER QUEUE work_order SET (retries 100, retrydelay 2, retention 10);

次の例は、work_order という名前のキューのエンキューとデキューを有効にする方法を示しています。

ALTER QUEUE work_order ACCESS START;
ALTER QUEUE work_order ACCESS START FOR enqueue;
ALTER QUEUE work_order ACCESS START FOR dequeue;

次の例は、work_order という名前のキューのエンキューとデキューを無効にする方法を示しています。

ALTER QUEUE work_order ACCESS STOP NOWAIT;
ALTER QUEUE work_order ACCESS STOP FOR enqueue;
ALTER QUEUE work_order ACCESS STOP FOR dequeue;