web-dev-qa-db-ja.com

Oracle AQでキューをクリアする方法

Oracle AQを初めてテストしました。作成したキューに2000行のテスト挿入を作成できました。

さて、それらを一掃したいと思います。私は独学で、有効期限を1か月に設定しました。そんなに待ちきれません。そして、キューテーブルから削除するだけだとは思いません。

これを行う最良の方法は何ですか?

20
jeph perro

DBMS_aqadm.purge_queue_tableプロシージャ。


[〜#〜]ソリューション[〜#〜]

SQLは次のようになります。

-- purge queue
DECLARE
 po_t dbms_aqadm.aq$_purge_options_t;
BEGIN
  dbms_aqadm.purge_queue_table('MY_QUEUE_TABLE', NULL, po_t);
END;
25
erbsock

キューテーブルを削除するだけです。

気にしないで、チェックを行って それは正しくない

Oracle Streams AQは、キュー表または関連する索引構成表(IOT)(存在する場合)でのデータ操作言語(DML)操作をサポートしていません。キューテーブルを変更するためにサポートされている唯一の方法は、提供されているAPIを使用することです。 DML操作がキューテーブルとIOTに対して実行されると、キューテーブルとIOTが不整合になり、その結果、実質的に破壊される可能性があります。


したがって、アイテムを削除するための小さなPL/SQLルーチンを作成する必要があります。

使用 dbms_aq パッケージ。ドキュメントの例を確認してください: Dequeuing Messages 。少し下にスクロールすると、完全な例があります。

2
JOTN