2010-11-23 109 views
17

Oracle AQを初めてテストしました。私は作成したキューに2000行のテストインサートを作成することができました。Oracle AQでキューをクリアする方法

ここでは、それらを明確にしたいと思います。私が自分自身を教えていたので、私は満了の時間を1ヶ月に設定しました。私はそれほど待てない。そして、私はキューテーブルからそれらを削除するだけではないと思います。

これを行うにはどうすればよいですか?

+1

このソリューションは、まさにここでの例のようになります:http://psoug.org/reference/dbms_aqadm.html


SOLUTION

は、SQLは次のようになります。 Oracleドキュメントが好きな人向けhttp://docs.oracle.com/cd/B19306_01/server.102/b14257/aq_admin.htm#BAJFEDGG例8-17および8-18「キュー表のすべてのメッセージのパージ」 – ono2012

答えて

19

手順はDBMS_aqadm.purge_queue_tableです。

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

完璧に機能しました!どうもありがとう –

2

キューテーブルで削除してください。いずれの場合

のOracle Streams AQは、キュー表または関連する索引構成表(IOT)にデータ操作言語(DML)操作をサポートしていません。気にしないで

は、単にチェックとthat's not rightをしました。キューテーブルを変更するためにサポートされている唯一の手段は、提供されているAPIです。キュー表とIOTは、DML操作が実行されると、一貫性がなくなり、結果として実質的に損なわれる可能性があります。


だから、あなたがアイテムをやってのけるために少しPL/SQLルーチンを作成する必要があります。

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

+0

私はキューテーブルから削除できないことを知っていた。キューからメッセージを削除するために使用するAPIは何ですか? –

関連する問題