本篇文章为大家展示了Oracle系统数据的复制技术,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
成都创新互联-专业网站定制、快速模板网站建设、高性价比市中网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式市中网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖市中地区。费用合理售后完善,10余年实体公司更值得信赖。
数据复制的实现
下面我们举一个例子来说明各步具体需要完成的工作。在这个例子中我们采用多主控站点复制方式,设有两个主控站点和两个共享数据表。两个主控站点分别为:处理站点(cl.world)和解释站点(js.wo rld);两个数据表为测区 (survey) 和测线 ( line)。
STEP1 创建复制站点:
(1)首先以 SYSTEM 身份登陆主站点数据库 cl.worldCONNECT system/manager@cl.world;
(2)创建用户—复制管理员,并为该用户授权复制管理员负责复制站点的创建和管理,每个复制站点都必须创建复制管理员以下为引用的内容:
CREATE USER repadmin IDENTIFIED BY repadmin; BEGIN DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’); END;
(3)为本站点指定传播者;
传播者负责将本地***更新的数据传播到其他站点上,以下为引用的内容:
BEGIN DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’); END;
(4)为本站点指定接收者;
接收者负责接收其他站点上的传播者传送过来的数据,以下为引用的内容:
BEGIN DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username => ’repadmin’, privilege_type => ’receiver’, list_of_gnames => NULL); END;
(5)确定清除时间;
为了使传送过来事务队列不致过大,需要将成功加载的事务从事物队列里清除掉,这里设定每小时清除一次。 以下为引用的内容:
CONNECT repadmin/repadmin@cl.world BEGIN DBMS_DEFER_SYS.SCHEDULE_PURGE ( next_date => SYSDATE, interval => ’SYSDATE + 1/24’, delay_seconds => 0); END;
在建立好站点 cl.world 后,以同样的方法创建站点 js. world。
(6)创建各主控站点之间的调度链接。
创建各主控站点之间的调度链接需要先在各主控站点间建立数据库链接,之后为每个数据库链接定义调度时间。
首先,在处理站点上建立与解释站点的数据库链接,这里需要先建立一个公用数据库链接,供其他私有数据库链接来使用。以下为引用的内容:
CONNECT SYSTEM/MANAGER@cl.world CREATE PUBLIC DATABASE LINK js.world USING ’js.world’; CONNECT repadmin/repadmin@cl.world CREATE DATABASE LINK js.world CONNECT TO repadmin IDENTIFIED BY repadmin;
同样,在解释站点上建立与处理站点的数据库链接。以下为引用的内容:
CONNECT SYSTEM/MANAGER@js.world CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’; CONNECT repadmin/repadmin@js.world CREATE DATABASE LINK cl.world CONNECT TO repadmin IDENTIFIED BY repadmin;
调度链接确定本站点上的事务向其他站点发送的频度,下面的代码为 10 分钟一次,以下为引用的内容:
CONNECT repadmin/repadmin@cl.world BEGIN DBMS_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 用组来管理复制对象。通过将相关的复制对象放在一个组里,从而方便对大量数据对象的管理。
这里我们假设用户模式 integr ation 在处理站点和解释站点都已存在,而且表测区 (survey) 和测线 (line) 也已经创建。
(1)创建主控组对象 以下为引用的内容:
CONNECT repadmin/repadmin@cl.world BEGIN DBMS_REPCAT.CREATE_MASTER_REPGROUP ( gname => ’inte_repg’); END;
(2)向主控组中添加数据对象,将测区表 survey 加入到组 inte_repg 中以下为引用的内容:
BEGIN DBMS_REPCAT.CREATE_MASTER_REPOBJECT ( gname => ’inte_repg’, type => ’TABLE’, oname => ’survey’, sname => ’integration’, use_existing_object => TRUE, copy_rows => FALSE); END;
以同样的方法将测线表 line 加入到组 inte_repg 中。
(3)在主控组中添加其他参与复制的站点,数据库之间的同步方式在此指定以下为引用的内容:
BEGIN DBMS_REPCAT.ADD_MASTER_DATABASE ( gname => ’inte_repg’, master => ’js.world’, use_existing_objects => TRUE, copy_rows => FALSE, propagation_mode => ’ASYNCHRONOUS’); END;
(4)如果可能出现冲突,则需要配置冲突解决方案。冲突解决方案将在后面介绍。
(5)为每个对象生成复制支持, 以下为引用的内容:
BEGIN DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT ( sname => ’integration’, oname => ’survey’, type => ’TABLE’, min_communication => TRUE); END;
测线表 line 也一样。
(6)重新开始复制以下为引用的内容:
BEGIN DBMS_REPCAT.RESUME_MASTER_ACTIVITY ( gname => ’inte_repg’); END;
以同样的方式设置解释站点。设置成功后,数据复制过程就宣告完毕,库中的数据就可进行复制。
上述内容就是Oracle系统数据的复制技术,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。