Oracle AQを初めてテストしました。作成したキューに2000行のテスト挿入を作成できました。
さて、それらを一掃したいと思います。私は独学で、有効期限を1か月に設定しました。そんなに待ちきれません。そして、キューテーブルから削除するだけだとは思いません。
これを行う最良の方法は何ですか?
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;
キューテーブルを削除するだけです。
気にしないで、チェックを行って それは正しくない :
Oracle Streams AQは、キュー表または関連する索引構成表(IOT)(存在する場合)でのデータ操作言語(DML)操作をサポートしていません。キューテーブルを変更するためにサポートされている唯一の方法は、提供されているAPIを使用することです。 DML操作がキューテーブルとIOTに対して実行されると、キューテーブルとIOTが不整合になり、その結果、実質的に破壊される可能性があります。
したがって、アイテムを削除するための小さなPL/SQLルーチンを作成する必要があります。
使用 dbms_aq
パッケージ。ドキュメントの例を確認してください: Dequeuing Messages 。少し下にスクロールすると、完全な例があります。