在高级复制环境下,有时候由于一些故障,可能导致复制组删除时出现错误。
这表明此时,在deftran中还有记录,而可能在deftrandest中已经没有需要push的事务
正常情况下可以通过dbms_defer_sys.purge过程去清除队列。
在异常情况下,我们可以选择直接截断(truncate),强制删除复制组:
此时可以进行其他操作,如恢复复制组等。
-The End-
$ sqlplus repadmin/repadmin
SQL*Plus: Release 10.1.0.2.0 - Production on Tue Sep 19 10:34:30 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> set linesize 120
SQL> col sname for a10
SQL> col gname for a10
SQL> col schema_comment for a1
SQL> col fname for a10
SQL> col owner for a10
SQL> select * from dba_repgroup;
SNAME M STATUS S GNAME FNAME R OWNER
---------- - --------- - ---------- ---------- - ----------
REP_TEST Y NORMAL REP_TEST N PUBLIC
SQL> exec dbms_repcat.drop_master_repgroup(gname=>'rep_test',all_sites => true);
BEGIN dbms_repcat.drop_master_repgroup(gname=>'rep_test',all_sites => true); END;
*
ERROR at line 1:
ORA-23353: deferred RPC queue has entries for object group "PUBLIC"."REP_TEST"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 1190
ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2666
ORA-06512: at "SYS.DBMS_REPCAT", line 635
ORA-06512: at line 1
这表明此时,在deftran中还有记录,而可能在deftrandest中已经没有需要push的事务
SQL> select count(*) from deftran;
COUNT(*)
----------
3
SQL> select count(*) from deftrandest;
COUNT(*)
----------
0
正常情况下可以通过dbms_defer_sys.purge过程去清除队列。
在异常情况下,我们可以选择直接截断(truncate),强制删除复制组:
SQL> truncate table system.def$_aqcall;
Table truncated.
SQL> exec dbms_repcat.drop_master_repgroup(gname=>'rep_test',all_sites => true);
PL/SQL procedure successfully completed.
此时可以进行其他操作,如恢复复制组等。
-The End-
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




