Oracle AQでキューをクリアする方法
質問
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を使用することです。キューテーブルとIOTは、DML操作が実行された場合、一貫性がないため、効果的に台無しになる可能性があります。
そのため、アイテムをオフにするには、小さなPL/SQLルーチンを作成する必要があります。
使用 dbms_aq
パッケージ。ドキュメントの例を確認してください。 メッセージをデケーします。少し下にスクロールすると、完全な例があります。
所属していません StackOverflow