ITPub博客

首页 > 数据库 > Oracle > Oracle高级复制学习(实践)

Oracle高级复制学习(实践)

原创 Oracle 作者:outdo 时间:2006-11-07 09:10:06 0 删除 编辑

--------------多主体复制站点复制实施一例
本例涉及两个站点.
主体定义站点:LAB.US.ORACLE.COM
主体站点:XXP.US.ORACLE.COM
注:主体定义站点指配置复制工作的站点

本例涉及的用户.
复制管理员:repadmin
应用用户:SCOTT
本例复制的对象:EMP 数据表

[@more@]

--------------多主体复制站点复制实施一例
本例涉及两个站点.
主体定义站点:LAB.US.ORACLE.COM
主体站点:XXP.US.ORACLE.COM
注:主体定义站点指配置复制工作的站点

本例涉及的用户.
复制管理员:repadmin
应用用户:SCOTT
本例复制的对象:EMP 数据表

1。检查安装好的数据库是否支持高级复制:
SQL> select value from v$option where parameter='Advanced replication';
VALUE
----------------------------------------------------------------
TRUE
确保返回的结果是TRUE,如果是FALSE 则表示需要重新安装oracle 的高级复制部件。
2。确保数据库的初始化参数中global_name=true,同时因为高级复制依靠于JOB 来实现,所以必须保证
job_queue_processes=10 参数大于0,我们可以设置为10。
open_links = 4
job_queue_processes = 10

1,首先创建用户repadmin 并将相应权限给他,

SQL> create user repadmin identified by repadmin default tablespace users temporary
2 tablespace temp;

用户已创建

SQL> execute dbms_defer_sys.register_propagator('repadmin');

PL/SQL 过程已成功完成。

SQL> grant execute any procedure to repadmin;

授权成功。

SQL> execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');

PL/SQL 过程已成功完成。

SQL> execute dbms_repcat_admin.grant_admin_any_schema(username => '"REPADMIN"');

PL/SQL 过程已成功完成。

SQL> grant comment any table to repadmin;

授权成功。

SQL> grant lock any table to repadmin;

授权成功。

SQL> grant select any dictionary to repadmin;

授权成功。

2,在主体站点XXP上重复以上操作。
3,在两站点上 建立数据库连接
SQL> create database link "xxp" connect to repadmin identified by repadmin using 'house';

数据库链接已创建。

SQL> create public database link xxp using 'house';

数据库链接已创建。

SQL> create database link lab connect to repadmin identified by repadmin using 'lab';

数据库链接已创建。

SQL> create database link lab using 'lab';

数据库链接已创建

4,在主体定义站点上创建复制组
SQL> execute dbms_repcat.create_master_repgroup('rep_test');

PL/SQL 过程已成功完成。

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

GNAME M STATUS
------------------------------ - ---------
REP_TEST Y QUIESCED

5,在复制组里添加复制对象 并对复制对象产生复制支持

SQL> execute dbms_repcat.create_master_repobject(sname=>'scott',oname=>'emp', type=>'table',use_existing_object=>true,gname=>'rep_test',copy_rows=>false);

PL/SQL 过程已成功完成。

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

SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
SCOTT EMP VALID REP_TEST

SQL> execute dbms_repcat.generate_replication_support('SCOTT','EMP','TABLE');

PL/SQL 过程已成功完成。

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

SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
SCOTT EMP VALID REP_TEST
SCOTT EMP$RP VALID REP_TEST
SCOTT EMP$RP VALID REP_TEST

6,添加主体复制节点
SQL> execute dbms_repcat.add_master_database(gname=>'rep_test',master=>'xxp',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'synchronous');

PL/SQL 过程已成功完成。

SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_TEST';

GNAME DBLINK MASTERDEF MASTER
------------ ------------------------- ---------- ----------
REP_TEST LAB.US.ORACLE.COM Y Y
REP_TEST XXP.US.ORACLE.COM N Y

7,登陆主体站点XXP查看复制情况
SQL> conn repadmin/repadmin@house
已连接。
SQL> select * from global_name;

GLOBAL_NAME
------------------------------------------------------------------------------------------------------------------------
XXP.US.ORACLE.COM

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

SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------
SCOTT EMP VALID REP_TEST
SCOTT EMP$RP VALID REP_TEST
SCOTT EMP$RP

8,在主体定义站点启动复制:
SQL> conn repadmin/repadmin@LAB
已连接。
SQL> select * from global_name;

GLOBAL_NAME
------------------------------------------------------------------------------------------------------------------------
LAB.US.ORACLE.COM

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

PL/SQL 过程已成功完成。

9,在主体定义站点进行数据测试:在测试前,两个站点的复制对象数据应该完全一样。否则会抱错。但执行truncate操作不抱错。
SQL> conn scott/tiger@lab
已连接。

SQL> delete from emp where rownum<9;
delete from emp where rownum<9
*
ERROR 位于第 1 行:
ORA-01403: 未找到数据

SQL> truncate table emp;

表已截掉。

SQL> conn scott/tiger@house
已连接。

SQL> truncate table emp;

表已截掉。

SQL> insert into emp values('8000','outdo','ANALYST','',sysdate,'5000','','');

已创建 1 行。

SQL> commit;

提交完成。

SQL> conn scott/tiger@lab
已连接。
SQL> select * from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
8000 outdo ANALYST 13-7月 -06 5000

SQL> update emp set sal='6000' where empno='8000';

已更新 1 行。

SQL> commit;

提交完成。

SQL> select * from scott.emp@house;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
8000 outdo ANALYST 13-7月 -06 6000


10,至此,同步复制配置完毕。

FROM OUTDO

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/167606/viewspace-876289/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-10

  • 博文量
    30
  • 访问量
    775682