0

誤って LOG4PLSQL を間違った (SYS などの) スキーマにインストールしてしまった問題を解決しようとしています。削除する必要があるというキュー テーブルがありますQTAB_LOG。関連するキューを正常に停止してドロップしました。

call DBMS_AQADM.STOP_QUEUE('LOG_QUEUE');
call DBMS_AQADM.DROP_QUEUE('LOG_QUEUE');

ただし、キュー テーブル自体の削除は失敗します。

call DBMS_AQADM.DROP_QUEUE_TABLE('QTAB_LOG');

このエラーで:

SQL Error: ORA-00942: table or view does not exist
ORA-06512: at "SYS.DBMS_AQADM", line 240
ORA-06512: at line 1
00942. 00000 -  "table or view does not exist"

もちろん、通常の方法でテーブルを削除します。

drop table QTAB_LOG;

は許可されていません:

SQL Error: ORA-24005: Inappropriate utilities used to perform DDL on AQ table LOG4PLSQL.QTAB_LOG
24005. 00000 -  "must use DBMS_AQADM.DROP_QUEUE_TABLE to drop queue tables" 
*Cause:    An attempt was made to use the SQL command DROP TABLE for queue
           tables, but DROP TABLE is not supported for queue tables.
*Action:   Use the DBMS_AQADM.DROP_QUEUE_TABLE procedure instead of the
           DROP TABLE command.

私は何を間違っていますか?

4

4 に答える 4

3

以前に失敗したキュー テーブルの削除の試みはありましたか? 孤立したキュー テーブルのこの状況は、通常、AQ API 呼び出しの使用時に例外がスローされる原因となった何らかの問題の結果です。

これがいつ導入されたのかはわかりませんが、少なくとも 11g には、ドロップ テーブル プロセスの一部としてキューを停止してドロップする drop_queue_table 呼び出しへの FORCE パラメータがあります。あなたの場合、おそらくそれが機能するには遅すぎますが、試してみる価値があるかもしれません.

9i/10g の時代には、"alter session set events '10851 trace name context forever, level 2'" の後に DROP TABLE tname が続く場合がありましたが、これが機能するかどうかはわかりません。

于 2010-05-12T16:05:40.150 に答える
0

セッション セット イベント '10851 トレース名コンテキストを永久に変更、レベル 2

于 2010-12-01T10:28:35.030 に答える
0

指定された Soln は 10.2.0.3 で正常に動作します - 削除が試行されたスキーマ所有者の user_tables にリストされているキュー テーブルを削除することができました。

于 2013-02-07T10:12:39.367 に答える