【赛迪网-it技术报道】下面的这个示例是一个同步的复制环境,在同步复制中,任何一个站点down掉都将会导致数据库服务的中断。
◆1.首先停掉主体的定义站点(conner.hurray.com.cn)
[oracle@jumper oracle]$ sqlplus "/ as sysdba"
sql*plus: release 9.2.0.4.0 - production on thu feb 17 16:07:26 2005
copyright (c) 1982, 2002, oracle corporation. all rights reserved.
connected to:
oracle9i enterprise edition release 9.2.0.4.0 - production
with the partitioning option
jserver release 9.2.0.4.0 - production
sql> shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
|
◆2.登陆的主体站点(testora9.hurray.com.cn)
sql> select * from dept;
deptno dname loc
---------- -------------- -------------
10 accounting new york
20 research dallas
30 sales chicago
40 operations boston
60 oracle beijing
70 oracle beijing
6 rows selected.
|
注意:此时主体站点上对于扶植对象的任何dml操作都不能进行了。
sql> insert into dept values(80,'oracle','beijing');
insert into dept values(80,'oracle','beijing')
*
error at line 1:
ora-02068: following severe error from conner
ora-03113: end-of-file on communication channel
ora-02068: following severe error from conner
ora-03113: end-of-file on communication channel
|
◆3.然后大家可以使用复制管理员登陆主体站点
假如此时尝试删除复制对象,打破复制关系都会收到错误。
ora-23312说明这不是主体定义站点。
sql> connect repadmin/repadmin
connected.
sql> exec dbms_repcat.drop_master_repobject(sname => 'scott',oname => 'dept',type => 'table');
begin dbms_repcat.drop_master_repobject(sname => 'scott',oname => 'dept',type => 'table'); end;
*
error at line 1:
ora-23312: not the masterdef according to testora9.hurray.com.cn
ora-06512: at "sys.dbms_sys_error", line 86
ora-06512: at "sys.dbms_repcat_utl4", line 2928
ora-06512: at "sys.dbms_repcat_utl4", line 2720
ora-06512: at "sys.dbms_repcat", line 643
ora-06512: at line 1
|
◆4.此处需要使用dbms_repcat.relocate_masterdef切换主体定义站点
sql> begin
2 dbms_repcat.relocate_masterdef (
3 gname => 'rep_tt',
4 old_masterdef => 'conner.hurray.com.cn',
5 new_masterdef => 'testora9.hurray.com.cn',
6 notify_masters => true,
7 include_old_masterdef => false);
8 end;
9 /
pl/sql procedure successfully completed.
|
◆5.然后把原主体定义站点(conner.hurray.com.cn)从主体库中删除
sql> execute dbms_repcat.remove_master_databases
(gname=>'rep_tt',master_list=>'conner.hurray.com.cn');
pl/sql procedure successfully completed.
|
◆6.复制关系被打破以后,dml操作得以继续使用
sql> connect scott/tiger
connected.
sql> select * from dept;
deptno dname loc
---------- -------------- -------------
10 accounting new york
20 research dallas
30 sales chicago
40 operations boston
60 oracle beijing
70 oracle beijing
6 rows selected.
sql> insert into dept values (80,'oracle','beijing');
1 row created.
sql> commit;
commit complete.
sql>
|
◆7.假如原站点恢复正常后,大家可以再次添加至复制组中。