服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

如何在高级的复制中切换主体定义站点

【赛迪网-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.假如原站点恢复正常后,大家可以再次添加至复制组中。

扫描关注微信公众号