请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 527|回复: 0

Oracle系统数据复制技术?这里为你详解一下~

[复制链接]

2775

主题

3174

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
11260
发表于 2021-1-28 16:15:52 | 显示全部楼层 |阅读模式
本帖最后由 chaomeili 于 2021-1-28 16:17 编辑

       Oracle系统数据复制技术?这里为你详解一下~
  数据复制的实现主要包括以下几步:
  (1)创建复制站点;
  (2)创建组对象;
  (3)配置冲突解决方案。
  下面我们举一个例子来说明各步具体需要完成的工作。在这个例子中我们采用多主控站点复制方式,设有两个主控站点和两个共享数据表。两个主控站点分别为:处理站点(cl.world)和解释站点(js.wo rld);两个数据表为测区 (survey) 和测线 ( line)。
  STEP1 创建复制站点:
  (1)首先以 SYSTEM 身份登陆主站点数据库 cl.worldCONNECT system/manager@cl.world;
  (2)创建用户—复制管理员,并为该用户授权复制管理员负责复制站点的创建和管理,每个复制站点都必须创建复制管理员以下为引用的内容:
  1. <font size="3">CREATE USER repadmin IDENTIFIED BY repadmin;   
  2.   BEGIN   
  3.   DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’);   
  4.   END; </font>
复制代码
 (3)为本站点指定传播者;
  传播者负责将本地最新更新的数据传播到其他站点上,以下为引用的内容:
  1. <font size="3"> BEGIN   
  2.     DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’);   
  3.   END; </font>
复制代码
 (4)为本站点指定接收者;
  接收者负责接收其他站点上的传播者传送过来的数据,以下为引用的内容:
  1. <font size="3">BEGIN   
  2.   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (   
  3.     username => ’repadmin’,   
  4.     privilege_type => ’receiver’,   
  5.     list_of_gnames => NULL);   
  6.   END; </font>
复制代码
(5)确定清除时间;
  为了使传送过来事务队列不致过大,需要将成功加载的事务从事物队列里清除掉,这里设定每小时清除一次。 以下为引用的内容:
  1. <font size="3">CONNECT repadmin/repadmin@cl.world   
  2.   BEGIN   
  3.     DBMS_DEFER_SYS.SCHEDULE_PURGE (   
  4.   next_date => SYSDATE,   
  5.   interval => ’SYSDATE + 1/24’,   
  6.   delay_seconds => 0);   
  7.   END;</font>
复制代码
在建立好站点 cl.world 后,以同样的方法创建站点 js. world。
  (6)创建各主控站点之间的调度链接。
  创建各主控站点之间的调度链接需要先在各主控站点间建立数据库链接,之后为每个数据库链接定义调度时间。
  首先,在处理站点上建立与解释站点的数据库链接,这里需要先建立一个公用数据库链接,供其他私有数据库链接来使用。以下为引用的内容:
  1. <font size="3">CONNECT SYSTEM/MANAGER@cl.world   
  2.   CREATE PUBLIC DATABASE LINK js.world USING ’js.world’;   
  3.   CONNECT repadmin/repadmin@cl.world   
  4.   CREATE DATABASE LINK js.world CONNECT TO repadmin   
  5.   IDENTIFIED BY repadmin;  </font>
复制代码
同样,在解释站点上建立与处理站点的数据库链接。以下为引用的内容:
  1. <font size="3">CONNECT SYSTEM/MANAGER@js.world   
  2.   CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’;   
  3.   CONNECT repadmin/repadmin@js.world   
  4.   CREATE DATABASE LINK cl.world CONNECT TO repadmin   
  5.   IDENTIFIED BY repadmin; </font>
复制代码
调度链接确定本站点上的事务向其他站点发送的频度,下面的代码为 10 分钟一次,以下为引用的内容:
  1. <font size="3">CONNECT repadmin/repadmin@cl.world   
  2.   BEGIN   
  3.   DBMS_DEFER_SYS.SCHEDULE_PUSH (   
  4.   destination => ’js.world’,   
  5.   interval => ’SYSDATE + (1/144)’,   
  6.   next_date => SYSDATE,   
  7.   parallelism => 1,   
  8.   execution_seconds => 1500,   
  9.   delay_seconds => 1200);   
  10.   END; </font>
复制代码
在解释站点上做相同的工作 STEP2 创建主控组在复制环境中,Oracle 用组来管理复制对象。通过将相关的复制对象放在一个组里,从而方便对大量数据对象的管理。
  这里我们假设用户模式 integr ation 在处理站点和解释站点都已存在,而且表测区 (survey) 和测线 (line) 也已经创建。
  (1)创建主控组对象 以下为引用的内容:
  1. <font size="3">CONNECT repadmin/repadmin@cl.world   
  2.   BEGIN   
  3.   DBMS_REPCAT.CREATE_MASTER_REPGROUP (   
  4.   gname => ’inte_repg’);   
  5.   END; </font>
复制代码
      (2)向主控组中添加数据对象,将测区表 survey 加入到组 inte_repg 中以下为引用的内容:
  1. <font size="3">BEGIN   
  2.   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (   
  3.   gname => ’inte_repg’,  
  4.   type => ’TABLE’,   
  5.   oname => ’survey’,   
  6.   sname => ’integration’,   
  7.   use_existing_object => TRUE,   
  8.   copy_rows => FALSE);   
  9.   END; </font>
复制代码
以同样的方法将测线表 line 加入到组 inte_repg 中。
  (3)在主控组中添加其他参与复制的站点,数据库之间的同步方式在此指定以下为引用的内容:
  1. <font size="3"> BEGIN   
  2.   DBMS_REPCAT.ADD_MASTER_DATABASE (   
  3.   gname => ’inte_repg’,   
  4.   master => ’js.world’,   
  5.   use_existing_objects => TRUE,   
  6.   copy_rows => FALSE,   
  7.   propagation_mode => ’ASYNCHRONOUS’);   
  8.   END; </font>
复制代码
     (4)如果可能出现冲突,则需要配置冲突解决方案。冲突解决方案将在后面介绍。
   (5)为每个对象生成复制支持, 以下为引用的内容:
  1. <font size="3">BEGIN   
  2.   DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (   
  3.   sname => ’integration’,   
  4.   oname => ’survey’,   
  5.   type => ’TABLE’,   
  6.   min_communication => TRUE);   
  7.   END;</font>
复制代码
测线表 line 也一样。
  (6)重新开始复制以下为引用的内容:
  1. <font size="3">BEGIN   
  2.   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (   
  3.   gname => ’inte_repg’);   
  4.   END; </font>
复制代码
以同样的方式设置解释站点。设置成功后,数据复制过程就宣告完毕,库中的数据就可进行复制。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-6-29 15:24 , Processed in 0.044608 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表