Oracle高级同步复制(2)

本文详细介绍如何在 Oracle 数据库中配置数据复制,包括创建复制主题组、添加复制对象、生成复制支持等步骤,并提供了如何添加新表及进行相关操作的具体命令。

5. .复制实施进程:(特别注意以下在master数据库上操作)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

5.1   conn repadmin/repadmin

创建复制主题组

SQL> execute dbms_repcat.create_master_repgroup('REP_MYTEST');

PL/SQL procedure successfully completed.

察看复制主体组相关信息:

SQL> select gname,master,status from dba_repgroup where gname='REP_MYTEST';

GNAME                          MASTER                         STATUS

--------------------------- ----------------------------   ------------------------

REP_MYTEST                   Y                              QUIESCED

为主体组添加复制对象:

SQL> execute dbms_repcat.create_master_repobject (sname=>'wj',oname=>'test', type=>'TABLE',   use_existing_object=>true,gname=>'REP_MYTEST',copy_rows=>true);

PL/SQL procedure successfully completed.

察看复制主体组中复制对象的相关信息:

SQL>select sname,oname,status,gname from dba_repobject where gname='REP_MYTEST';

SNAME                           ONAME                             STATUS     GNAME

----------------------------- ------------------------------ ------------- ------------------------------

WJ                        TEST                           VALID          REP_MYTEST

为复制对象生成复制支持:

SQL> execute dbms_repcat.generate_replication_support('wj','test','TABLE');

PL/SQL procedure successfully completed.

再次察看复制主体组和对应的复制对象的相关信息:

SQL> select gname,master,status from dba_repgroup where gname='REP_MYTEST';

GNAME                          MASTER                         STATUS

--------------------------- ----------------------------   ------------------------

REP_MYTEST                   Y                              QUIESCED

SQL> select sname,oname,status,gname from dba_repobject where gname='REP_MYTEST';

SNAME                           ONAME                             STATUS     GNAME

----------------------------- ------------------------------ ------------- ------------------------------

WJ                          TEST                         VALID          REP_MYTEST

WJ                          TEST$RP                      VALID          REP_MYTEST

WJ                          TEST$RP                      VALID          REP_MYTEST

为复制主体组添加数据库主站点:

SQL>execute dbms_repcat.add_master_database(gname=>'REP_MYTEST',master=>'repsite.com.cn',use_existing_objects=>true,copy_rows=>true,   propagation_mode => 'synchronous');

PL/SQL procedure successfully completed.

察看复制站点信息:

SQL> select gname,dblink,masterdef,master from dba_repsites where gname='REP_MYTEST';

GNAME         DBLINK                             MASTERDEF      MASTER

------------ --------------------------------   ------------------ --------------

REP_MYTEST         repsite.com.cn       Y                      Y

REP_MYTEST         master.comc.n       N                     Y

启动复制进程:

SQL> execute dbms_repcat.resume_master_activity('REP_MYTEST',true);

PL/SQL procedure successfully completed.

再次察看复制主体组相关信息:

SQL> select gname,master,status from dba_repgroup where gname='REP_MYTEST';

GNAME              MASTER                         STATUS

--------------------------- ----------------------------   ------------------------

REP_MYTEST         Y                               NORMAL

注意:复制主体组的状态由QUIESCED变为NORMAL。

至此,这个复制过程实施完毕。可以进行相关的数据操作进行测试。

7、配置好后。如果需要添加表。

执行下命令:

7.1.execute dbms_repcat.suspend_master_activity('rep_mytest'); 取消抑制。

7.2增加新表

execute dbms_repcat.create_master_repobject(sname=>'reptest',oname=>'test1',type=>'TABLE',use_existing_object=>true,gname=>'REP_MYTEST',copy_rows=>true);

7.3增加支持。

execute dbms_repcat.generate_replication_support('reptest','test1','TABLE')

7.4启动进程

execute dbms_repcat.resume_master_activity('REP_MYTEST',true);

好了。你可以去测试你新加的表了.

一些删除命令

用select * from dba_repgroup;检查站点状态 状态为NORMAL时表示该站点正常。

相关视图

" DBA_REPSITES       ----复制站点情况

" DBA_REPGROUP       -----复制组情况

" DBA_REPOBJECT      ----复制对象情况

" DBA_REPCATLOG      ---同步情况日志

######################################

如果想删除其中的一个同步表,如下执行;

SQL> execute dbms_repcat.suspend_master_activity('rep_anymusic'); 停止主体组

SQL> EXECUTE Dbms_Repcat.Drop_Master_Repobject('wcms','test','table'); 删除同步表

SQL> EXECUTE Dbms_Repcat.Remove_Master_Databases('rep_anymusic', 'master.anymusic.com');删除主站点上面的组

SQL> execute dbms_repcat.resume_master_activity('REP_anymusic',true); 启动复制组

######################################

删除私有数据链路

用repadmin 登陆数据库

EXECUTE Dbms_Repcat.Drop_Master_Repgroup('主体组名');删除主体组

DROP DATABASE LINK master.anymusic.com; 删除db link名

删除jobs

select job,what from user_jobs;    查询job numbers

EXECUTE Dbms_Job.Remove(2);        括号内填写刚查询到的job numbers

######################################

删除REPADMIN用户,注意:必须先删除站点下隶属于该repadmin用户的jobs和组mygrp 才能删除用户

用sys登陆

EXECUTE Dbms_Defer_Sys.Unregister_Propagator(username=>'REPADMIN');

EXECUTE Dbms_Repcat_Admin.Revoke_Admin_Any_Schema(username=>'REPADMIN');

DROP USER repadmin CASCADE;

######################################

--删除公用的数据链路

用sys登陆

DROP PUBLIC DATABASE LINK master.anymusic.com;

######################################

备注:每次运行完repcat 包以后都应该执行一次commit,因为某些rep 的存储过程是不会

自动commit 的,同时这也是一个troubleshooting,一般的rep 脚本都会较快的返回结果,

如果一条命令之后长时间没有结果返回,那么很可能是上面的命令没有commit,取消掉当

前的命令,然后作一次commit,再重新执行,一般都能够解决问题。

#######################################

强制删除复制组

Sql>Truncate table system.def$_aqcall;

Sql>Exec dbms_repcat.drop_master_repgroup(gname=>'mygrp',all_sites=>true);

########################################

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值