oracle跨实例数据同步

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 快照及dblink使用(两台服务器数据同步)跨ORACLE实例数据同步(物化视图应用)

名词说明:源——被同步的数据库

-- 目的——要同步到的数据库

/*一、创建dblink:*/

--1、在目的数据库上,创建dblin

drop public database link dblink_anson;

Create public

database link dblink_anson

Connect to lg identified by lg using 'SDLGDB';

--源数据库的用户名、密码、服务器名k

/*二、创建快照:*/

--1、在源和目的数据库上同时执行一下语句,创建要被同步的表

drop table tb_anson;

create table tb_anson(c1 varchar2(12));

alter table tb_anson add constraint pk_anson primary key (C1);

--2、在目的数据库上,测试dblink

select * from tb_anson@dblink_anson;

select * from tb_anson;

--3、在目的数据库上,创建要同步表的快照日志

Create snapshot log on tb_anson;

--4、创建快照,快照(被同步(源)数据库服务必须启动) Create snapshot sn_anson as select * from

tb_anson@dblink_anson;

--5、设置快照刷新时间

Alter snapshot anson refresh fast Start with sysdate+1/24*60 next sysdate+10/24*60;

--oracle自动在1分钟后进行第一次快速刷新,以后每隔10分钟快速刷新一次

Alter snapshot anson refresh complete Start with

sysdate+30/24*60*60 next sysdate+1;

--oracle自动在30钞后进行第一次完全刷新,以后每隔1天完全刷新一次

--6、手动刷新快照

begin

dbms_refresh.refresh('"CS"."SN_ANSON"');

end;

eg:

drop public database link dblink_e3nfjj;

Create public

database link dblink_e3nfjj

Connect to e3nfjj identified by e3nfjj using

'ORCL10_192.168.20.26';

create table template as

select * from template@dblink_e3nfjj;

两台oracle数据库之间数据同步

在两台oracle数据库之间测试成功,下面就总结一下吧:

需求:

现有两台oracle数据库服务器A和B(A,B可以是在同一内网,也可以是在互联网上的两台独立机器)。A 和B里有都有testable表,结构一样,现需要当A库中的testable表变化时,B库里的testable也相应变化数据

我的解决方案:

在A中建立到B库的链接,然后对要同步的表做一个同义synonym,最后建一个触发器,就可以完成了。当然,你所用的当前的用户要有相应的权限去执行这些操作。

当从A向B同步数据时,应该在A上做所有的设置:

1为保证连接到另一台远程服务器的数据库

你需要建立一个DB Link,但是,这里要注意语法格式,using +"connect string",这个connect string 应该是存在于oracle服务器的TNSNAMES.ORA文件里,监听程序将从这里获取远方服务器

的ip地址等信息,我定义了一个'251'的connect string如下:

251 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.251)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = mychoice)

)

)

把它存到你的TNSNAMES.ORA文件里。

2然后就可以定义DB Link了:

create public database link

connect to 用户名

identified by "密码"

using '251';

2.1建立synonym(同义)

create or replace synonym TEST01

for MYCHOICE.TESTABLE@;

建立完了以后,你可以通过:

select * from test01

上面的语句相当于在B服务器上执行:

select * from testable

2.2封建触发器:

当A中的testable表变化时(这里只考虑插入操作),就会触发向远程的B库的testable也插入相应的数据:

create or replace trigger rtest

after insert on testable

for each row

begin

insert into test01 (something) values (:new.something);

end;

ok,现在我们可以测试一下,你在A库中往testable表中插入一条记录,看看B库中是不是也相应的增加了

相关文档
最新文档