ORA-24010: QUEUE SMS_MT_QUEUE不存在

本文详细记录了在Oracle Advanced Queuing (AQ) 中遇到ORA-24010错误以及如何删除AQ相关对象的过程。首先尝试停止并删除队列'sms_mt_queue'失败,接着展示了删除AQ队列表'ss_mt_tab'及其相关依赖的步骤,包括清理视图、序列和表。最后,重新创建队列和启动队列,并设置传播延迟。
摘要由CSDN通过智能技术生成

来源:http://orax.i.sohu.com/blog/view/261900272.htm

AQ:Oracle Advanced Queuing是一个功能强大并且使用起来相对简单的产品。它提供的java包使我们不用编写太多的java代码就可以实现enqueuedequeue操作。


 

方法一:

先建aq,然后再Imp导入表结构和数据,这样是最保险的做法。


方法二:

先导入表结构和数据,再导入AQ,这样需要手动删除AQ的所有对象包括字典表中的对象,需小心操作!

涉及视图:

obj$
system.aq$_queues
system.aq$_queue_tables
aq$_queue_table_affinities

删除AQ对象操作:

Host01% sqlplus /nolog

SQL*Plus: Release 9.2.0.6.0 - Production on 星期二 4月 23 08:59:35 2013

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn wyzc/wyzc
已连接。
SQL> select count(*) from user_objects;

  COUNT(*)
----------
       381

SQL> set  line 132
SQL> exec dbms_aqadm.stop_queue('sms_mt_queue'); 
BEGIN dbms_aqadm.stop_queue('sms_mt_queue'); END;


ERROR 位于第 1 行:
ORA-24010: QUEUE WYZC.SMS_MT_QUEUE不存在
ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 3684
ORA-06512: 在"SYS.DBMS_AQADM", line 240
ORA-06512: 在line 1


SQL> exec dbms_aqadm.drop_queue('sms_mt_queue'); 
BEGIN dbms_aqadm.drop_queue('sms_mt_queue'); END;

*
ERROR 位于第 1 行:
ORA-24010: QUEUE WYZC.SMS_MT_QUEUE不存在
ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 2747
ORA-06512: 在"SYS.DBMS_AQADM", line 167
ORA-06512: 在line 1


SQL> exec dbms_aqadm.drop_queue_table('ss_mt_tab');
BEGIN dbms_aqadm.drop_queue_table('ss_mt_tab'); END;

*
ERROR 位于第 1 行:
ORA-24002: QUEUE_TABLE WYZC.SS_MT_TAB 不存在
ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 2973
ORA-06512: 在"SYS.DBMS_AQADM", line 197
ORA-06512: 在line 1


SQL> select object_name,owner from dba_objects where object_name='SS_MT_TAB';

OBJECT_NAME
------------------------------
OWNER
------------------------------
SS_MT_TAB
FWBZ

SS_MT_TAB
WYZC


SQL> exec dbms_aqadm.drop_queue_table('SS_MT_TAB');
BEGIN dbms_aqadm.drop_queue_table('SS_MT_TAB'); END;

*
ERROR 位于第 1 行:
ORA-24002: QUEUE_TABLE WYZC.SS_MT_TAB 不存在
ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 2973
ORA-06512: 在"SYS.DBMS_AQADM", line 197
ORA-06512: 在line 1


SQL> begin dbms_aqadm.create_queue_table(queue_table=>'ss_mt_tab', queue_payload_type=>'SYS.AQ$_JMS_TEXT_MESSAGE',multiple_consumers => true); end;
  2  /
begin dbms_aqadm.create_queue_table(queue_table=>'ss_mt_tab', queue_payload_type=>'SYS.AQ$_JMS_TEXT_MESSAGE',multiple_consumers => true); end;
*
ERROR 位于第 1 行:
ORA-24001: 无法创建 QUEUE_TABLE,WYZC.SS_MT_TAB已经存在
ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 2224
ORA-06512: 在"SYS.DBMS_AQADM", line 58
ORA-06512: 在line 1

SQL> col object_name for a20
SQL> col object_name for a30
SQL> l1
  1* select object_type,object_name from user_objects where object_name like '%MT_TAB%'
SQL> r
  1* select object_type,object_name from user_objects where object_name like '%MT_TAB%'

OBJECT_TYPE        OBJECT_NAME
------------------ ------------------------------
VIEW               AQ$SS_MT_TAB
VIEW               AQ$SS_MT_TAB_R
VIEW               AQ$SS_MT_TAB_S
QUEUE              AQ$_SS_MT_TAB_E
VIEW               AQ$_SS_MT_TAB_F
TABLE              AQ$_SS_MT_TAB_G
TABLE              AQ$_SS_MT_TAB_H
TABLE              AQ$_SS_MT_TAB_I
SEQUENCE           AQ$_SS_MT_TAB_N
TABLE              AQ$_SS_MT_TAB_S
TABLE              AQ$_SS_MT_TAB_T

OBJECT_TYPE        OBJECT_NAME
------------------ ------------------------------
EVALUATION CONTEXT AQ$_SS_MT_TAB_V
TABLE              SS_MT_TAB

已选择13行。

SQL> alter   session   set   events'10851   trace   name   context   forever,level   1';

会话已更改。

 

SQL>select  *   from  dba_queue_tables;

SQL> exec dbms_aqadm.drop_queue_table('SS_MT_TAB');
BEGIN dbms_aqadm.drop_queue_table('SS_MT_TAB'); END;

*
ERROR 位于第 1 行:
ORA-24002: QUEUE_TABLE WYZC.SS_MT_TAB 不存在
ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 2973
ORA-06512: 在"SYS.DBMS_AQADM", line 197
ORA-06512: 在line 1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值