DBMS_AQADM.DROP_QUEUE_TABLE では Oracle キュー テーブルを削除できません

StackOverflow https://stackoverflow.com/questions/2819906

  •  26-09-2019
  •  | 
  •  

質問

間違った (SYS など) スキーマに誤ってインストールされた LOG4PLSQL をクリーンアップしようとしています。というキューテーブルがあります。 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.

私の何が間違っているのでしょうか?

役に立ちましたか?

解決

あなたが失敗したことをキュー表をドロップで任意の以前の試みがありましたか?孤立したキュー表のこのような状況は、通常、AQ API呼び出しを使用したときにスローされる例外が発生したいくつかの問題の結果である。

これが導入されたとき、私は知らないが、少なくとも11gは、今のドロップテーブルプロセスの一部として、キューを停止し、ドロップしDROP_QUEUE_TABLEコールにFORCEパラメータを持っています。あなたのケースでは、それは遅すぎるそのための仕事におそらくだが、それは価値がある試みることがあります。

DROP TABLEに続いての9i / 10グラムの日には

、 "ALTERセッションセットイベント '10851トレース名コンテキスト永遠に、レベル2'"、のTNAME の、時にはのために使用されます仕事 - 。それはまだかどうかわからない。

他のヒント

オラクル11g r2を使用しています。以下は私にとってはうまくいきます。すべてのバージョンが以下をサポートしているかどうかはわかりません。

EXEC dbms_aqadm.drop_queue_table ( queue_table => '<OWNER>.<QUEUETABLE>',force=>true);

上記のコマンドは、関連するキューを自動的に停止して削除し、その後キュー テーブルを削除します。

すべての手順を自分で(すべて手動で)実行したい場合は、以下の順序で実行してください。

  1. 関連付けられたキューを停止します。
  2. 関連付けられたキューを削除します。
  3. キューテーブルを削除します。

dbms_aqadm pkg 関数を実行する権限があることを前提としています。そうでない場合、これらの pkg 関数を呼び出すとエラーが発生します。これが理にかなっているといいのですが。

アルターセッションセットイベント「10851トレース名コンテキスト永遠に、レベル2

SOLN 10.2.0.3のための作品の罰金を与えられた - 私たちは、ドロップが試行されたスキーマ所有者のUSER_TABLESに記載されているキュー表をドロップすることができました:それは永遠に「ALTERセッションセットイベント」10851トレース名コンテキストの上使用した後に[OK]を働きました" ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top