代码之家  ›  专栏  ›  技术社区  ›  nw.

无法删除dbms_aqadm.drop_queue_表的Oracle队列表

  •  0
  • nw.  · 技术社区  · 16 年前

    我正在尝试将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 回复  |  直到 9 年前
        1
  •  3
  •   dpbradley    16 年前

    您以前是否尝试删除失败的队列表?孤立队列表的这种情况通常是某些问题的结果,这些问题导致在使用AQAPI调用时引发异常。

    我不知道这是什么时候引入的,但是至少11g现在有一个drop_queue_table调用的force参数,作为drop table过程的一部分,该参数停止并删除队列。在你的情况下,这可能是太迟了工作,但它可能值得尝试。

    在9i/10g天中,“alter session set events'10851 trace name context forever,level 2'”,后跟一个drop table TNEX 用于 有时 工作-不知道是否还能。

        2
  •  1
  •   Pankaj    9 年前

    我使用Oracle 11g R2。下面对我来说很好。不确定所有版本是否支持下面的内容。

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

    上面的命令自动停止并删除相关联的队列,然后删除队列表。

    如果您想自己完成所有步骤(手动完成所有操作),请按以下顺序执行:

    1. 停止关联的队列。
    2. 删除关联的队列。
    3. 删除队列表。

    我假设您有权执行dbms_aqadm pkg函数,否则调用这些pkg会导致错误。 我希望这是有道理的。

        3
  •  0
  •   Konrad Viltersten    13 年前

    永久更改会话集事件的10851跟踪名称上下文,级别2

        4
  •  0
  •   sudheergodgeri    13 年前

    soln-given在10.2.0.3下工作正常——我们可以删除在尝试删除的架构所有者的用户表中列出的队列表:在使用上述“alter session set events”10851 trace name context forever后,它工作正常。 .