数据库复制

      前几天,老大让我玩玩数据库,俺就没有认真玩过这个东西.老大说别担心,有我.结果第二天消失了……根据十分可靠的消息说:陪同某美工同志去广东出差了.好吧,我承认在这一刻,我幼小的心灵受到了沉重的打击.好在javaeye中有牛人,根据他的步骤我完成了一个简单的数据库同步复制.这样,我就整理下下.

      我使用的oracle版本是10g,使用了pl/sql developer作为数据库的管理开发工具.

      当然,首先必须确定数据库具备高级复制功能.通常的方法是使用sys以sysdba登陆数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能,否则不支持.

      这时,我们新建两个数据库IBM和ORA.同时我们假设IBM数据库的IP为10.85.131.50,ORA数据库的IP为10.85.131.57.主站点为IBM,在这里,主站点是主要配置复制工作的站点.

      依据大众考虑,用sys或者system登陆IBM数据库,创建一个复制管理员repadmin(网上都取这个狗血名字,我也就不免这个俗了)

      另外创建一个用户,这里就叫huawei,称之为应用用户.

      创建一个表空间,叫HUAWEI.

      上述是我们高复制同步数据的先决条件.

     

      接下来,我们开始——复制开始~!

 

      创建用户语句

      CREATE USER HUAWEI IDENTIFIED BY HUAWEI DEFAULT TABLESPACE HUAWEI TEMPORARY

      TABLESPACE TEMP;
      GRANT DBA TO HUAWEI;

 

      创建数据库管理员用户repadmin(这里再次吐槽一下这个名字)
      CREATE USER REPADMIN IDENTIFIED BY REPADMIN; 
      ALTER USER REPADMIN DEFAULT TABLESPACE USERS;

      ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;

      GRANT connect,resource TO REPADMIN;
     

      授予repadmin用户权限可以管理当前站点中任何主体组 
      EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');

 

      授予repadmin用户权限可以为任何表创建snapshot logs

      GRANT comment any table TO REPADMIN; 
      GRANT lock any table TO REPADMIN;
     

      指定repadmin用户为propagator,并授予执行任何procedure的权限

      EXECUTE dbms_defer_sys.register_propagator('REPADMIN'); 
      GRANT execute any procedure TO REPADMIN;

 

      更改IBM数据库的全局名称

      alter database rename global_name to IBM.COM.CN;

 

      更改ORA数据库的全局名称

      alter database rename global_name to ORA.COM.CN; 

 

      在ORA数据库的tnsnames.ora中添加

      IBM=
           (DESCRIPTION =
                 (ADDRESS_LIST =
                       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.85.131.50)(PORT = 1521)))
                       (CONNECT_DATA =
                         (SERVICE_NAME = IBM)
                 )
            ) 

 

      在IBM数据库的tnsnames.ora中添加

      ORA=
           (DESCRIPTION =
                 (ADDRESS_LIST =
                       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.85.131.57)(PORT = 1521)))
                       (CONNECT_DATA =
                         (SERVICE_NAME = ORA)
                 )
            ) 

 

     在IBM数据库中建立连接

     create public database link ora.com.cn connect to REPADMIN identified by REPADMIN             

     using 'ORA';  

     在ORA数据库中建立连接

     create public database link ibm.com.cn connect to REPADMIN identified by REPADMIN             

     using 'IBM';  

 

     在两个数据库的应用用户huawei下创建表.注意:这里是分别是两个数据库的huawei用户

     CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);

     ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));

    

     以REPADMIN登录数据库IBM

     execute dbms_repcat.create_master_repgroup('rep_ibm');

     execute dbms_repcat.create_master_repgroup('repg');
    

     在复制组里加入复制对象

     execute dbms_repcat.create_master_repobject 

     (sname=>'huawei',oname=>'test',type=>'table',use_existing_object=>true,gname=>'repg',copy_rows=>false);

    

     对复制对象产生复制支持 

     execute dbms_repcat.generate_replication_support('huawei','test','table');

   

     添加主体复制节点

     execute dbms_repcat.add_master_database

     (gname=>'repg',master=>'ora.com.cn',use_existing_objects=>true,copy_rows=>false,

     propagation_mode => 'synchronous');

   

     在主体定义站点启动复制

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

    

     在ora数据中运行

     execute dbms_repcat.create_master_repgroup('rep_ibm');

    

     配置至此完成,向数据库中添加数据,修改数据,删除数据即可以同步.

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值