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

Posted ITPUB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 系统数据复制技术?这里为你详解一下~相关的知识,希望对你有一定的参考价值。

点击蓝色字关注 "ITPUB" 一起玩耍哦~

转载自 | 尚观 oracle

原文链接 | http://mp.weixin.qq.com/s/R2mJcL9vki1WP4qanXzdAA


数据复制的实现主要包括以下几步:

(1)创建复制站点;

(2)创建组对象;

(3)配置冲突解决方案。

下面我们举一个例子来说明各步具体需要完成的工作。在这个例子中我们采用多主控站点复制方式,设有两个主控站点和两个共享数据表。两个主控站点分别为:处理站点(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 系统数据复制技术?这里为你详解一下~

数领先机 智赢未来

DTCC2018

中国数据库技术大会(简称 DTCC)是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会,每年一届。自 2010 年以来,迄今已成功举办了八届,累计参与人次达到 20000+。DTCC 每年都将邀请百余位行业专家,就热点技术话题进行分享,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供最具价值的交流平台。


2018 年 5 月 10-12 日,第九届中国数据库技术大会(DTCC2018)将如约而至。本届大会以 “数领先机 • 智赢未来” 为主题,设定 2 大主会场及 20 个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨 Oracle、MySQL、NoSQL、大数据、机器学习、区块链、数据可视化等领域的前瞻性热点话题与技术。


点击左下阅读原文,立享购票8.8折优惠

以上是关于Oracle 系统数据复制技术?这里为你详解一下~的主要内容,如果未能解决你的问题,请参考以下文章

oracle12c 为啥会卡在创建并启动oracle实例?进度88%。

详解BIOS升级与修复

Oracle发展前景怎么样?Oracle暨大详细为你解答!

oracle怎么复制表以及表中数据

oracle dataguard详解和环境搭建

oracle+mysql数据源配置+系统数据源方式配置