数据复制的实现主要包括以下几个步骤:(1)创建复制站点;(2)创建组对象;(3)配置冲突解决。下面我们举个例子来说明每个步骤需要完成的具体工作。在这个例子中,我们使用多主站点复制,有两个主站点和两个共享数据表。两个主要的控制站点是:处理站点(cl.world)和解释站点(js.world);两个数据表分别是调查区域(survey)和调查线(line)。STEP1创建复制站点:(1)首先以SYSTEM登录主站点数据库cl.worldCONNECTsystem/manager@cl.world;(2)创建一个用户——复制管理员,并授权复制管理员为该用户负责复制站点的创建和管理,每个复制站点必须创建一个复制管理员如下:CREATEUSERrepadminIDENTIFIEDBYrepadmin;BEGINDBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username=>'repadmin');结束;(3)为本站指定一名传播者;传播者负责将本地***的更新数据传播到其他站点,参考内容如下:BEGIN DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username=>'repadmin');END;(4)为本站指定接收者;receivers负责接收其他站点的通讯器发送的数据,参考内容如下:BEGINDBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP( username=>'repadmin', privilege_type=>'receiver', list_of_gnames=>NULL);结尾;(五)确定清算时间;为了防止传输的交易队列过大,需要将加载成功的交易从交易队列中清除,这里设置为每小时清除一次。以下为引用内容:CONNECTrepadmin/repadmin@cl.worldBEGIN DBMS_DEFER_SYS.SCHEDULE_PURGE(next_date=>SYSDATE,interval=>'SYSDATE+1/24',delay_seconds=>0);END;站点建立后cl。在world之后,以相同的方式创建站点js.world。(6)建立各主控站点之间的调度链路。建立主控站点间的调度链接,需要先建立主控站点间的数据库链接,然后为每个数据库链接定义一个调度时间。首先,在处理现场建立与解释现场的数据库链接。这里需要建立一个公共数据库链接,供其他私有数据库链接使用。以下引用:CONNECTSYSTEM/MANAGER@cl.worldCREATEPUBLICDATABASELINKjs.worldUSING'js.world';CONNECTrepadmin/repadmin@cl.worldCREATEDATABASELINKjs.worldCONNECTTOrepadminIDENTIFIEDBYrepadmin;同样,在解释站点上建立到处理站点的数据库链接。以下是引用的内容:CONNECTSYSTEM/MANAGER@js.worldCREATEPUBLICDATABASELINKcl.worldUSING'cl.world';CONNECTrepadmin/repadmin@js.worldCREATEDATABASELINKcl.worldCONNECTTOrepadminIDENTIFIEDBYrepadmin;调度链接决定本站交易发送到其他站点的频率,下面代码每10分钟一次,引用内容如下:CONNECTrepadmin/repadmin@cl.worldBEGINDBMS_DEFER_SYS.SCHEDULE_PUSH(destination=>'js.world',interval=>'SYSDATE+(1/144)',next_date=>SYSDATE,parallelism=>1,execution_seconds=>1500,delay_seconds=>1200);END;在讲解站点上做同样的工作STEP2创建一个主控组在复制环境中,Oracle使用组来管理复制的对象。它通过将相关的复制对象放在一个组中来促进大量数据对象的管理。这里我们假设处理站点和解释站点都存在用户模式集成,并且表格测量区域(survey)和测量线(line)也已经创建。(1)创建主控组对象参考内容如下:CONNECTrepadmin/repadmin@cl.worldBEGINDBMS_REPCAT.CREATE_MASTER_REPGROUP(gname=>'inte_repg');END;(2)将数据对象添加到主控组,添加调查区域表将调查添加到组inte_repg中,如下:BEGINDBMS_REPCAT.CREATE_MASTER_REPOBJECT(gname=>'inte_repg',type=>'TABLE',oname=>'survey',sname=>'集成',use_existing_object=>TRUE,copy_rows=>FALSE);END;以同样的方式将行表行添加到组inte_repg中。(3)在主控组中添加其他参与复制的站点。数据库之间的同步方式指定如下作为引用内容:BEGINDBMS_REPCAT.ADD_MASTER_DATABASE(gname=>'inte_repg',master=>'js.world',use_existing_objects=>TRUE,copy_rows=>FALSE,propagation_mode=>'ASYNCHRONOUS');结尾;(4)如果可能会发生冲突,需要配置冲突解决。冲突解决将在后面介绍。(5)为每个对象生成复制支持,以下是引用的内容:BEGINDBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(sname=>'integration',oname=>'survey',type=>'TABLE',min_communication=>TRUE);END;折线表也是如此。(6)重启复制以下引用内容:BEGINDBMS_REPCAT.RESUME_MASTER_ACTIVITY(gname=>'inte_repg');END;以相同的方式设置解释站点。设置成功后,就宣告数据拷贝过程完成,可以拷贝库中的数据了。原文链接:http://mp.weixin.qq.com/s/R2mJcL9vki1WP4qanXzdAA
