すべてのプロダクト
Search
ドキュメントセンター

PolarDB:DBMS_AQADM

最終更新日:Sep 29, 2024

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

DEQUEUEステートメントでメッセージが削除されるまでに許可された試行失敗の最大数。

max_retriesの値は、ROLLBACKステートメントが実行されるたびにインクリメントされます。 失敗した試行の数がmax_retriesで指定された値に達すると、メッセージは例外キューに移動されます。 0 の値は、再試行が許可されないことを意味します。

retry_delay

ロールバックとメッセージの再処理のスケジューリングの間に経過した秒数。 デフォルト値0は、メッセージを直ちに再処理しなければならないことを意味します。

retention_time

メッセージのデキューと保存の間に経過した秒数です。 単位は秒です。

説明
  • デフォルト値の0は、デキュー後にメッセージを保持できないことを意味します。

  • INFINITEの値は、メッセージが永久に保持されることを意味します。

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

新しいキューの型。 有効な値:

  • DBMS_AQADM.NORMAL_QUEUE: 通常のキュー。 デフォルト値です。

  • DBMS_AQADM.EXCEPTION_QUEUE: 例外キュー。 例外キューは、デキュー操作のみをサポートしています。

max_retries

DEQUEUEステートメントでメッセージが削除されるまでに許可された試行失敗の最大数。 dequeueの値は、ROLLBACK文の数が増えるにつれて増加します。 失敗した試行の数がmax_retriesで指定された値に達すると、メッセージは例外キューに移動されます。 システムテーブルのデフォルト値は 0 です。 ユーザー定義テーブルのデフォルト値は 5 です。

retry_delay

ロールバックとメッセージの再処理のスケジューリングの間に経過した秒数。 デフォルト値として0を指定した場合、メッセージはすぐに再試行されます。

retention_time

メッセージのデキューと保存の間に経過した秒数です。 単位は秒です。

説明
  • デフォルト値の0は、デキュー後にメッセージを保持できないことを意味します。

  • INFINITEの値は、メッセージが永久に保持されることを意味します。

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

キューテーブルの属性を指定します。

  • storage_句は、次の1つ以上のオプションに設定できます。

    • TABLESPACE tablespace_name

    • PCTFREE整数

    • PCTUSED整数

    • INITRANS整数

    • MAXTRANS整数

    • STORAGE storage_option

  • storage_optionには、次のいずれかのオプションを設定できます。

    • MINEXTENTS整数

    • MAXEXTENTS整数

    • PCTINCREASE整数

    • INITIAL size_clause

    • 次へ

    • FREELISTS整数

    • OPTIMAL size_clause

    • BUFFER_POOL {KEEP | リサイクル | デフォルト}

sort_list

このパラメーターは、キューのデキュー順序を制御し、キューを昇順でソートするために使用される列の名前を指定します。 有効な値:

  • enq_time, priority

  • priority, enq_time

  • priority

  • enq_time

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

コマンドを使用してエントリを含むテーブルを削除する場合のDROP_QUEUE_TABLEコマンドの動作を指定します。

  • テーブルにエントリが含まれ、forceがFALSEに設定されている場合、コマンドは失敗し、エラーメッセージが返されます。

  • テーブルにエントリが含まれ、forceがTRUEに設定されている場合、コマンドはテーブルとすべての依存オブジェクトを削除します。

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

aq$_purge_options_t型のオブジェクト。 aq$_purge_options_tオブジェクトには特定の属性が含まれています。 詳細については、「aq$_purge_options_t」をご参照ください。

表 2. aq$_purge_options_t

属性

タイプ

説明

ブロック

Boolean

テーブル内のすべてのキューで排他ロックを保持するかどうかを指定します。 デフォルト値は FALSE です。 有効な値:

  • TRUE

  • FALSE

delivery_mode

INTEGER

削除するオブジェクトの名前です。 値はDBMS_AQ.PERSISTENTである必要があります。

次の匿名ブロックは、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 です。 有効な値:

  • TRUE: キューイングを有効にします。

  • FALSE: 現在の設定を保持します。

dequeue

デキューを有効にするかどうかを指定します。 デフォルト値は TRUE です。 有効な値:

  • TRUE: デキューを有効にします。

  • FALSE: 現在の設定を保持します。

次の匿名ブロックは、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 です。 有効な値:

  • TRUE: キューイングを無効にします。

  • FALSE: 現在の設定を保持します。

dequeue

デキューを無効にするかどうかを指定します。 デフォルト値は TRUE です。 有効な値:

  • TRUE: デキューを無効にします。

  • FALSE: 現在の設定を保持します。

wait

サーバーが指定された変更を適用する前に、未完了のトランザクションが完了するのを待つかどうかを指定します。 有効な値:

  • TRUE: サーバーは待機します。 サーバーがキューの無効化を待機している場合、指定されたキューにトランザクションをエンキューまたはデキューすることはできません。

  • FALSE: キューのエンキューまたはデキューを直ちに無効にします。

次の匿名ブロックは、work_orderという名前のキューのエンキューとデキューを無効にします。

BEGIN
DBMS_AQADM.STOP_QUEUE(queue_name =>'work_order', enqueue=>TRUE, dequeue=>TRUE, wait=>TRUE);
END;

すべての保留中のトランザクションが完了すると、エンキューとデキューは無効になります。