删除流复制

 2013-11-23
一、概述
    本例以xx库到xx的流复制为例进行清除。xx库到xx的流复制情况如下:
三组capture进行,三组propagation,三组apply进程。现在需要将这些进程及其配置都删掉。
二、操作步骤
1、源上
--以strmadmin用户登入xx库
--stop capture
exec dbms_capture_adm.stop_capture('CAPTURE_7_AS1');
exec dbms_capture_adm.stop_capture('CAPTURE_7_AS2');
exec dbms_capture_adm.stop_capture('CAPTURE_7_AS3');
--drop capture
exec dbms_capture_adm.drop_capture('CAPTURE_7_AS1');
exec dbms_capture_adm.drop_capture('CAPTURE_7_AS2');
exec dbms_capture_adm.drop_capture('CAPTURE_7_AS3');
--stop propagation
BEGIN
  DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
    propagation_name => 'PROPAGATION_7_AS1');
  DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
    propagation_name => 'PROPAGATION_7_AS2');
  DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
    propagation_name => 'PROPAGATION_7_AS3');
END;
/
--drop propagation
BEGIN
  DBMS_PROPAGATION_ADM.DROP_PROPAGATION(
    propagation_name => 'PROPAGATION_7_AS1');
  DBMS_PROPAGATION_ADM.DROP_PROPAGATION(
    propagation_name => 'PROPAGATION_7_AS2');
  DBMS_PROPAGATION_ADM.DROP_PROPAGATION(
    propagation_name => 'PROPAGATION_7_AS3');
END;
/
--上面成功了,再执行下面的操作,否则后果严重!!!
----remove capture queue
exec DBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name => 'CAPTURE_QUEUE_7_AS1',cascade => true);
exec DBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name => 'CAPTURE_QUEUE_7_AS2',cascade => true);
exec DBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name => 'CAPTURE_QUEUE_7_AS3',cascade => true);
----drop rule set
select * from dba_rule_sets where rule_set_owner='STRMADMIN' AND RULE_SET_COMMENT LIKE '%7_AS%'
--用查出来的RULESET进行替换下面DROP_RULE_SET中rule_set_name。
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_64538' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_64732' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_64960' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_65488' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_65684' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_65850' ,delete_rules =>true );
--remove stream configuration
--exec dbms_streams_adm.remove_streams_configuration();
--源上不执行移除流复制配置,其它地区需使用。
2、目标上:
--以strmadmin登入xx库
--stop apply
exec dbms_apply_adm.stop_apply('APPLY_7_AS1');
exec dbms_apply_adm.stop_apply('APPLY_7_AS2');
exec dbms_apply_adm.stop_apply('APPLY_7_AS3');
--drop apply
exec dbms_apply_adm.drop_apply('APPLY_7_AS1');
exec dbms_apply_adm.drop_apply('APPLY_7_AS2');
exec dbms_apply_adm.drop_apply('APPLY_7_AS3');
--apply无法drop时,请先使用exec dbms_apply_adm.delete_all_errors('APPLY_7_AS');
--上面成功了,再执行下面的操作,否则后果严重!!!
--remove queue
exec DBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name => 'APPLY_QUEUE_7_AS1',cascade => true);
exec DBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name => 'APPLY_QUEUE_7_AS2',cascade => true);
exec DBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name => 'APPLY_QUEUE_7_AS3',cascade => true);
--drop rule set
select * from dba_rule_sets where rule_set_owner='STRMADMIN' AND  RULE_SET_COMMENT LIKE '%APPLY_7_AS%'
--查出来的RULESET进行替换下面DROP_RULE_SET中rule_set_name
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_2720' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_2914' ,delete_rules =>true );
exec  DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name =>'RULESET$_3426' ,delete_rules =>true );
--remove stream configuration
--可以不删,下次配置时用。
--exec dbms_streams_adm.remove_streams_configuration();
--删除历史LCRS
--truncate table HISTORY_ROW_LCRS;

注意:如果在drop capture之前删除了RULE_SET,则CAPTURE进程的QUEUE无法删除,传递进程也无法删除,报如下错误:
ORA-04063: STRMADMIN.CAPTURE_QUEUE_7_AS1 有错误(以AS1这组为例)
解决方案:
--sys用户下执行
exec dbms_aqadm_syscalls.kwqa_3gl_validatequeue('STRMADMIN','CAPTURE_QUEUE_7_AS1');
--strmadmin用户下执行
exec  DBMS_PROPAGATION_ADM.alter_propagation(propagation_name => 'PROPAGATION_7_AS1',remove_rule_set => TRUE);
执行后可正常停止并删除传递进程。
但传递进程删除后CAPTURE进程的QUEUE(CAPTURE_QUEUE_7_AS1)及规则集(CAPTURE_QUEUE_7_AS_N和CAPTURE_QUEUE_7_AS_R)仍然存在,需要执行如下命令:
exec DBMS_AQADM.DROP_QUEUE_TABLE (queue_table => 'CAPTURE_QUEUE_T_7_AS', force => true);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值