高级复制中如何应对主体站点故障
在同步复制
中,一旦任何一个主站点出现故障,数据库就会出现问题。
SQL > select * from Scott . dept;DEPTNO DNAME LOC---10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 33 ORACLE Beijing 35 ORACLE Beijing 6行选择SQL >
此时,无法执行DML操作。
SQL >插入scott.dept值(36,@#Oracle@#,@ # Beijing @ #);insert into scott.dept values (36,@#Oracle@#,@#Beijing@#) ORA-02068:出现TESTORA9ORA的严重错误后-03113:通信通道上的文件尾ORA-02068:出现TESTORA9ORA的严重错误后-03113:通信通道上的文件尾SQL> select gname,dblink,masterdef from dba _ repsitesCONNER.HURRAY.COM.CN代表TT和TESTORA9.HURRAY.COM.CN代表TT
是的,我们可以删除有问题的主站点。
SQL > exec DBMS _ rep cat . remove _ master _ databases(gname = > @ # rep _ TT @ #,master_list => @#TESTORA9 .HURRAY . com . cn @ #);PL/SQL过程已成功完成
此后,DML操作可以继续:
SQL >插入scott.dept值(36,@#Oracle@#,@ # Beijing @ #);1行insertedSQL > COMMITCommit completeSQL> select gname,dblink,masterdef from dba _ repsitesCONNER.HURRAY.COM.CN TT代表
如果需要在故障站点修复后重新加入复制组,可以先删除故障站点上的复制组:
SQL > exec DBMS _ rep cat . drop _ master _ rep group(gname = > @ # rep _ TT @ #,drop_contents => false,all_sites => false)PL/SQL过程已成功完成
然后在主体定义站点重新加入主体站点:
SQL > exec DBMS _ rep cat . suspend _ master _ activity(gname = > @ # rep _ TT @ #)PL/SQL过程成功完成SQL > execute DBMS _ rep cat . add _ master _ database(gname = > @ # rep _ TT @ #,master=>@#TESTORA9 .HURRAY.COM.CN@#,use_existing_objects=>true,copy_rows=>false,propagation _ mode = > @ # synchronous @ #);PL/SQL过程已成功完成SQL > execute DBMS _ rep cat . resume _ master _ activity(@ # rep _ TT @ #,true);PL/SQL过程成功完成SQL >
此时,复制恢复正常。
接下来,你需要解决数据冲突。请参考:使用dbms_rectifier_diff解决高级复制中的数据冲突问题。
0条评论