基于ORACLE10g版本的高级复制配置介绍

本文详细介绍Oracle高级复制的配置步骤,包括参数检查与调整、数据库链接创建、复制组及对象建立等,通过具体实例验证配置的有效性。

在学习ORACLE的高级复制知识时,自己进行了配置,基于10.2.0.1版本进行的配置

1.高级复制配置方式-主对主的单向配置,基于触发器的单向高级复制配置方法如下:

  1.1 准备工作


      1)检查主库的job_queue_processes参数值是否大于0(默认应该是大于0的,由于高级复制需要使用job来传输数据)


SQL> show parameter job

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes                  integer     10

如果为0,则执行如下命令更改该参数: 
alter system set job_queue_processes=10 scope=both;


      2)检查主库的global_names参数值是否为true:

SQL> show parameter global_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     TRUE
   如是不为true,则执行如下命令进行修改:
   alter system set global_names=true;


       3)检查主数据库的global_name:

   SQL> select * from global_name;

   GLOBAL_NAME
   --------------------------------------------------------------------------------
DSOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM
     如果没有类似.com的域名,则需要执行如下命令更改,因为高级复制中需要全局数据库名中带域名来创建db link:
alter database rename global_name to DSOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM;


     4)检查目标数据库的global_name:


   SQL> select * from global_name;

   GLOBAL_NAME
   --------------------------------------------------------------------------------
DTARGET.REGRESS.RDBMS.DEV.US.ORACLE.COM
     如果没有类似.com的域名,则需要执行如下命令更改,因为高级复制中需要全局数据库名中带域名来创建db link:
alter database rename global_name to DTARGET.REGRESS.RDBMS.DEV.US.ORACLE.COM;


     5)两个数据库都创建一个用于高级复制管理的用户,用于管理高级复制,用户名为apadmin,并授予dba角色(其实只授予connect,resource这两个就可以,这里为了方便):


create user apadmin identified by apadmin;
grant dba to apadmin;
    

     6)授予apadmin用户其它相关权限:

exec dbms_repcat_admin.grant_admin_any_schema('APADMIN');

exec dbms_defer_sys.register_propagator('APADMIN');
如下系统权限如果授予DBA角色后,该用户已经具有,不必不授予:
grant comment any table to apadmin;
grant lock any table to apadmin;
grant execute any procedure to apadmin;


      7)两个数据库都再创建一个业务测试用户,用户名为ap,用于数据复制
   

create user ap identified by ap;

grant dba to ap;

      8)两个数据库都使用业务测试用户ap登录,创建一个测试表t,带有主键:

conn ap/ap
create table t(x int primary key);


       9)在主库上使用apadmin管理复制用户连接数据库,创建到目标数据库的dblink:


   conn apadmin/apadmin
   create database link DTARGET.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to apadmin identified by apadmin using 'DTARGET';
测试db link是否创建成功,已经可以显示目标数据库名:
SQL> select name from v$database@DTARGET.REGRESS.RDBMS.DEV.US.ORACLE.COM;

NAME
---------
DTARGET

SQL> select name from v$database;

NAME
---------
DSOURCE


     10)在目标库上使用apadmin管理复制用户连接数据库,创建到主数据库的dblink:
   

   conn apadmin/apadmin
   create database link DSOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to apadmin identified by apadmin using 'DSOURCE';
测试db link是否创建成功,已经可以显示主数据库名:
SQL> select name from v$database@DSOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM;

NAME
---------
DSOURCE

SQL> select name from v$database;

NAME
---------
DTARGET

  1.2 开始配置,如下操作都是在主库上操作,并且使用apadmin复制管理用户

     1)创建复制组,名称为rep,复制组就是把相关的复制节点拉到该组中,整个这些节点构成了一个复制关系:
conn apadmin/apadmin
exec dbms_repcat.create_master_repgroup('repp');
查看复制组的相关信息,查询dba_repgroup视图:
select gname,master,status from dba_repgroup where gname='REPP';
 

    2)向复制组中加入复制对象,即要对哪些对象进行复制等信息:
   exec dbms_repcat.create_master_repobject(sname=>'ap',oname=>'t',type=>'table',use_existing_object=>true,gname=>'repp',copy_rows=>false);
        查看复制对象的相关信息:
   select sname,oname,status,gname from dba_repobject where gname='REPP';
 

    3)对复制对象启动复制支持,它会产生所需的基表、存储过程和触发器:
   exec dbms_repcat.generate_replication_support('ap','t','table');
        再次查看复制对象的相关信息,会发现多了一些对象(一般会多两个存储过程):
    select sname,oname,status,gname from dba_repobject where gname='REPP';
      

    4)添加远程的目标复制节点,把远程目标节点也拉到rep复制组中,此时目标端也会产生相关信息:
    exec dbms_repcat.add_master_database(gname=>'repp',master=>'DTARGET.REGRESS.RDBMS.DEV.US.ORACLE.COM',use_existing_objects=>true,copy_rows=>false,propagation_mode=>'synchronous');
        说明:master这个参数可以理解为刚才创建的对远程数据库的数据库链路,也可以理解为就是远程数据库的global name
         propagation_mode(传输模式)设置的同步synchronous,也可以设置为异步
查看添加的远程目标节点信息:
col masterdef format a10
col master format a10
col dblink format a25
col gname format a12
select gname,dblink,masterdef,master from sys.dba_repsites where gname='REPP';
 

    5)启动复制,启动完毕后,高级复制开始工作:
   exec dbms_repcat.resume_master_activity('repp',true);
 
  1.3 进行测试,如下操作使用ap业务用户
    

      1)在源端对t表插入数据:
    conn ap/ap
    insert into t values(1);
    commit;
     

    2)去目标端查看t表,如果有数据表明配置成功:
        conn ap/ap
        select * from t;
      注:还可以插入多个数据进行测试,注意DDL语句是不能复制的,例如truncate table t后,目标端是还有数据。
 
  1.4 附加的一些知识
     如果创建时失败,可以用如下方法进行清理:
    

    1)清理用户:
     drop user apadmin cascade;
     startup restrict
     drop user apadmin cascade;
     

    2)删除复制对象:
      exec dbms_repcat.drop_master_repobject(sname=>'ap',oname=>'t',type=>'table');
   

    3)删除复制组:
      exec dbms_repcat.drop_master_repgroup(gname=>'repp',all_sites=>true);

    4)检查错误的管理请求:
      select * from dba_repcatlog where status='ERROR';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值