ORA-23616: Failure in executing block 3 for script 删除queue的方法

ERROR at line 1:

ORA-23616: Failure in executing block 3 for script

E45713597D0EFA08E04010AC280A05F2

ORA-06512: at "SYS.DBMS_RECOVERABLE_SCRIPT", line 593

ORA-06512: at "SYS.DBMS_RECOVERABLE_SCRIPT", line 616

ORA-06512: at "SYS.DBMS_STREAMS_MT", line 2279

ORA-06512: at "SYS.DBMS_STREAMS_MT", line 7581

ORA-06512: at "SYS.DBMS_STREAMS_ADM", line 2606

ORA-06512: at line 6

----------------对问题继续追踪.

1 查询错误

 select * from dba_recoverable_script_errors; 

SELECT * FROM DBA_RECOVERABLE_SCRIPT_BLOCKS WHERE BLOCK_NUM=177

2  查询错误信息

  select invoking_package_owner as owner,

  invoking_package as package,

  invoking_procedure as procedure,

  status,

  total_blocks,

  done_block_num

  from dba_recoverable_script

  where script_id=' ';

3 逻辑上步骤 查询第几步的错误信息

  select forward_block,forward_block_dblink

  from dba_recoverable_script_blocks

  where script_id=''  and block_num= ;

4 查询 13步骤的错误具体是什么

  select error_number,error_message

  from dba_recoverable_script_errors

  where script_id='E46B691F109E39F5E04010AC280A0B83' and block_num=13;

ERROR_NUMBER

------------

ERROR_MESSAGE

--------------------------------------------------------------------------------

      -39001

ORA-39001: invalid argument value

5  强制清楚脚本.

begin

 dbms_streams_adm.recover_operation(

   script_id => 'E46B691F109E39F5E04010AC280A0B83',

   operation_mode => 'PURGE');

end;

/

关于ORA-01422: exact fetch returns more than requested number of rows的问题

 

原因是游标查询返回多条记录,而实际通过select 列明 into 变量 FROM 表A where ···

插入变量的信息是单个变量,不是多条记录,故产生了如下的错误

ORA-01422: exact fetch returns more than requested number of rows

-------------------

以strmadmin用户登录:

一、    抓取进程

SQL> select capture_name,status from dba_capture;

CAPTURE_NAME
       STATUS

------------------------------ --------

CAPTURE_BOOK
       ENABLED

col status for a10

col QUEUE_NAME for a15

col RULE_SET_NAME for a15

col NEGATIVE_RULE_SET_NAME for a15


SELECT  capture_name,queue_name,RULE_SET_NAME,NEGATIVE_RULE_SET_NAME,status from dba_capture;


SELECT CAPTURE_NAME,QUEUE_NAME,STATUS,CAPTURED_SCN,APPLIED_SCN FROM DBA_CAPTURE;

SELECT apply_name,apply_captured,status FROM dba_apply;

停止

SQL> exec dbms_capture_adm.stop_capture('CAPTURE_BOOK');

PL/SQL procedure successfully completed.

清除

SQL> exec dbms_capture_adm.drop_capture('CAPTURE_BOOK');

PL/SQL procedure successfully completed.

查询

SQL> select capture_name,status from dba_capture;

no rows selected

二、    传播进程

SQL> select propagation_name,status from dba_propagation;

PROPAGATION_NAME
       STATUS

------------------------------ --------

BOOK_TO_CISCOSYS
       ENABLED

查询

SQL> exec dbms_propagation_adm.stop_propagation('BOOK_TO_CISCOSYS');

PL/SQL procedure successfully completed.

删除

SQL> exec dbms_propagation_adm.drop_propagation('BOOK_TO_CISCOSYS');

PL/SQL procedure successfully completed.

查询

SQL> select propagation_name,status from dba_propagation;

no rows selected

三、    应用进程

SQL> select apply_name,status from dba_apply;

APPLY_NAME
       STATUS

------------------------------ --------

APPLY_BOOK
       ENABLED

APPLY_BOOK2
       ENABLED

APPLY$_CISCOSYS_21
       DISABLED

停止

SQL> exec dbms_apply_adm.stop_apply('APPLY_BOOK');

ERROR at line 1:

                     ORA-26663: error queue for
apply process APPLY_RACDB_QH must be empty

exec DBMS_APPLY_ADM.DELETE_ALL_ERRORS(apply_name=>'TARGET_APPLY_STREAM')

再次执行可以
 exec dbms_apply_adm.drop_apply('TARGET_APPLY_STREAM');

PL/SQL procedure successfully completed.

删除

SQL> exec dbms_apply_adm.drop_apply('APPLY$_CISCOSYS_21');

PL/SQL procedure successfully completed.

SQL> select apply_name,status from dba_apply;

no rows selected

四、    删除源环境

SQL> exec dbms_streams_adm.remove_streams_configuration;

总之这个清除过程相当复杂,所以类似的操作应当选择在数据库空闲时段来完成,以避免对数据库产生性能冲击,切记切记!

五、   上面只是删除了抓取进程 传播进程 应用进程的名字而已。 

         对于数据库参数、数据库连接、流复制用户、表空间、测试用户、授予的权限都没有删除 

         优点 这个是备用的。以前不懂这些,我直接DBCA干掉库之后重新建,这样就很麻烦。倒是,如果练手的

         还可以,以后对于练手的活,重新装就是了,熟练之后就好了。

一、

         删除抓取进程 传播进程 应用进程的名字而已。 

二、

         对于1数据库参数、2数据库连接、3流复制用户、4表空间、5测试用户、6授予的权限都没有删除

三、   

         用户下的表  级联删除

四、   

         文件的物理路径  /arch/scott.tmp 数据文件表空间物理路径 

五、  已经存在的队列

SQL> col owner for a10

SQL> col name for a24

SQL> col queue_table for a20

                        
      可以用查询dba_queues,dba_queue_tables来检查:

SQL>  select owner,queue_table,name from dba_queues where owner='STRMADMIN';

OWNER               QUEUE_TABLE              NAME

----------------- ------------------------- ------------------

STRMADMIN          SOURCES_QUEUE_TABLE        SOURCES_QUEUE

STRMADMIN          SOURCES_QUEUE_TABLE        AQ$_SOURCES_QUEUE_TABLE_E

 

SQL>select owner,queue_table,object_type from dba_queue_tables where owner='STRMADMIN';

OWNER            QUEUE_TABLE           OBJECT_TYPE

-------------- --------------------- ------------------

STRMADMIN       SOURCES_QUEUE_TABLE     SYS.ANYDATA

删除 QUEUE_TABLE 的方法

ORA-24005:必须使用DBMS_AQADM.DROP_QUEUE_TABLE删除队列表 的解决方法

 

 SOURCES_QUEUE_TABLE

exec DBMS_AQADM.DROP_QUEUE_TABLE('QHMES_QUEUE_TABLE');

删除queue的方法

exec dbms_aqadm.stop_queue('source_queue');

exec dbms_aqadm.drop_queue('source_queue');



我创建queue和删除queue的方法,如下

SQL code

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

--创建queue语法

begin

    dbms_streams_adm.set_up_queue(

        queue_table=>'source_queue_table',

        queue_name =>'source_queue'

    );

end;

/

--删除queue语法

--首先stop queue, 报错:

SQL> exec dbms_aqadm.stop_queue('source_queue');

BEGIN dbms_aqadm.stop_queue('source_queue'); END;

 

*

ERROR at line 1:

ORA-04063: U_DL_STREAM.SOURCE_QUEUE has errors

ORA-06512: at "SYS.DBMS_AQADM_SYS", line 4913

ORA-06512: at "SYS.DBMS_AQADM", line 240

ORA-06512: at line 1

做与此队列相关的操作都会报上面的错误

查询dba_objects发现,此queue的状态为 INVALID

可以通过:

dba_apply

v$streams_apply_reader

v$streams_apply_coordinator

v$streams_apply_server

查看状态

时间: 2024-11-02 21:37:49

ORA-23616: Failure in executing block 3 for script 删除queue的方法的相关文章

js style.display=block显示布局错乱问题的解决方法_javascript技巧

1.当表格为多列的情况下,属性为"display:block"行的内容宽度仅与第一列宽度相同,也就是说无论你使colspan的属性值为多少,剩余列的空间都不进行解析. 2.同一行反复的在"display:none;"与"display:block;"两个状态间切换时,表格的底部会持续的产生多余的空白空间以至于造成页面布局的扭曲. 解决方法: 1.用display:table-row属性来调试,发现者FireFox下正常了,但IE是不支持改属性的,

Enterprise Library 2.0 -- Data Access Application Block(补充)

前几天一位热心的朋友询问如何在DataAccess Application Block中将参数单独写成一个方法,以方便频繁调用一些存储过程,也可以将这些参数装入缓存以提高程序执行效率,下面将实现该功能的代码贴出来,希望对正在研究这方面知识的朋友有所帮助. /**//// <summary> /// 该方法用于返回一个存储过程的参数数组 /// 从而方便了我们在程序中反复调用 /// 而且我们可以将返回的参数数组装入缓存,提高程序执行效率 /// </summary> /// <

“约定优于配置”与Magento改造尝试四之block、helper和model加载

暂定本章为这个系列最后一章,还是继续沿用模块的别名(alias)概念 <modules> <Mage_Wishlist> <version>1.6.0.0</version> <alias>wishlist</alias> </Mage_Wishlist> </modules> 看下Magento一般是怎么定义block.helper和model的别名的 <blocks> <wishlist&

ruby Block, Proc and Lambda介绍

1.Block: Ruby中的块就是由多行代码组成的一个代码块,通常可以把它认为是一个匿名方法,常用来迭代一个数组或范围(如each, times方法):语法格式如下:  代码如下 复制代码   {                    //code }            OR do                  //code end         块变量:当创建一个块时,在两个竖线之间(如: | i |)被称作块变量,作用和一个正常方法的参数一样:如:5.each{| x |  pu

iOS开发中Block深入使用探索

Block在ios 4.0之后加入,并大量使用在新的ios api中.block是一个匿名的代码块,可以作为传递给其他对象的参数,并得到返回值.从本质上讲,block同其他普通的变量类似,只是其储存的数据是一个函数体.Block不只是针对Objective-C的专利,而是一种可以应用于C.C++和OBjective-C的语言层面的新特性.通过使用block,开发者可以将一段代码段像某一个数值一样当做参数传递给函数.同时,blocks也是Objective-C的一种对象,可以像其他对象一样添加到N

深入理解Ruby中的代码块block特性_ruby专题

block是什么? 在Ruby中,block并不罕见.官方对block的定义是"一段被包裹着的代码".当然,我觉得这样的解释不会让你变的更明白. 对block的一种更简单的描述是"一个block就是一段存储在一个变量中的代码,它和其他的对象一样,可以被随时的运行" 然后,咱们通过看一些代码,之后再把这些代码重构成Ruby中的block形式.通过代码来实际的感受,更加直观. 比如,对两个数做加法? puts 5 + 6 # => 11 嗯,这样写是可以的.但是,

Ruby学习笔记-Block, Proc and Lambda

1.Block: Ruby中的块就是由多行代码组成的一个代码块,通常可以把它认为是一个匿名方法,常用来迭代一个数组或范围(如each, times方法):语法格式如下: {                     //code }             OR do                   //code end          块变量:当创建一个块时,在两个竖线之间(如: | i |)被称作块变量,作用和一个正常方法的参数一样:如:5.each{| x |  puts x }   

[翻译] FMDB

FMDB https://github.com/ccgus/fmdb This is an Objective-C wrapper around SQLite: http://sqlite.org/ 这是对 SQLite 的封装:http://sqlite.org/ Read the SQLite FAQ: http://www.sqlite.org/faq.html Since FMDB is built on top of SQLite, you're going to want to re

ORACLE SQL*PLUS 命令大全

来源:http://www.cnblogs.com/kerrycode/archive/2011/06/09/2076248.html ---1: HELP INDEXHELP 命令查询相关命令的信息. 你可以从下面看到大概有54个SQL*PLUS命令.每个命令都有大量的参数选项,你不可能清楚的记得每个命令 以及它相关的参数细节,所以当你遗忘时,就可以用HELP命令来查看相关命令的命令信息 SQL> HELP INDEX Enter Help [topic] for help.  @