高级复制下如何强制删除复制组
在高级复制环境下,有时候由于一些故障,可能导致复制组删除时出现错误。
$ sqlplus repadmin/repadminSQL*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 optionsSQL> 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 PUBLICSQL> 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(*)
----------
3SQL> 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-
- 2019-09-19 Oracle 20c 新特性:SQL 宏支持(SQL Macro)Scalar 和 Table 模式
- 2014-09-19 Larry Ellison卸任Oracle公司CEO 一个时代的终结
- 2013-09-19 甲骨文全球大会2013旧金山-一路飞来揽日月
- 2012-09-19 Oracle Kernel : Function kglic & Library Cache Latch
- 2010-09-19 ACOUG 第六次地面活动 小记
- 2009-09-19 如何手工创建(Create)一个Oracle 10g数据库
- 2007-09-19 《深入浅出Oracle》印刷万册纪念
- 2005-09-19 Red Hat Magazine, Issue #11 发布
- 2004-09-19 Undo Internal的研究