- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用oracle快照dblink来解决数据库表同步问题
前6步必须执行,第6以后是一些辅助信息.
oracle db_link 和触发器实现不同数据库表的同步
drop public database link dblink_orc92_182;
Create public DATABASE LINK dblink_orc92_182 CONNECT TO bst114 IDENTIFIED BY password USING orc92_192.168.254.111;
例如::
create database link ciqlink connect to text identified by text using orcl247;
--dblink_orc92_182 是dblink_name
--bst114 是 username
--password 是 password
--orc92_192.168.254.111 是远程数据库名
--2、在源和目的数据库上创建要同步的表(最好有主键约束,快照才可以快速刷新)
drop table test_user;
create table test_user(id number(10) primary key,name varchar2(12),age number(3));
--3、在目的数据库上,测试dblink
select * from test_user@ciqlink; //查询的是源数据库的表
select * from test_user;
--4、在源数据库上,创建要同步表的快照日志
Create snapshot log on test_user;
--5、创建快照,在目的数据库上创建快照
Create snapshot sn_test_user1 as select * from test_user@ ciqlink;
--6、设置快照刷新时间(只能选择一种刷新方式,推荐使用快速刷新,这样才可以用触发器双向同步)
快速刷新
Alter snapshot sn_test_user1 refresh fast Start with sysdate next sysdate with primary key;
--oracle马上自动快速刷新,以后不停的刷新,只能在测试时使用.真实项目要正确权衡刷新时间.
完全刷新
Alter snapshot sn_test_user refresh complete Start with sysdate+30/24*60*60 next sysdate+30/24*60*60;
--oracle自动在30秒后进行第一次完全刷新,以后每隔30秒完全刷新一次
--7、手动刷新快照,在没有自动刷新的情况下,可以手动刷新快照.
手动刷新方式1
begin
dbms_refresh.refresh(sn_test_user);
end;
手动刷新方式2
EXEC DBMS_SNAPSHOT.REFRESH(sn_test_user,F); //第一个参数是快照名,第二个参数 F 是快速刷新 C 是完全刷新.
--8.修改会话时间格式
ALTER SESSION SET NLS_DATE_FORMAT = YYYY-MM-DD HH24:MI:SS;
--9.查看快照最后一次刷新时间
SELECT NAME,LAST_REFRESH FROM ALL_SNAPSHOT_REFRESH_TIMES;
--10.查看快照下次执行时间
select last_date,next_date,what from user_jobs order by next_date;
--11.打印调试信息
dbms_output.put_line(use ||plsql);
--12.如果你只想单向同步,那么在目的数据库创建以下触发器(当源数据库表改变时,目的数据库表跟着改变,但目的数据库表改变时,源数据库表不改变).
create or replace trigger TRI_test_user_AFR
after insert or update or delete on sn_test_user
for each row
begin
if deleting then
delete from test_user where id=:old.id;
end if;
if inserting then
insert into test_user(id,name)
values(:new.id,:new.name);
end if;
if updating then
update test_user set name=:new
您可能关注的文档
最近下载
- 2024年黑龙江省哈尔滨市中考语文试题(含官方答案).docx
- 小学五年级语文上册教学课件《古诗三首》.pptx VIP
- 滨州医学院毕业答辩简洁模板.ppt
- 成人呼吸支持治疗器械相关压力性损伤的预防——2023中华护理学会团体标准.pptx VIP
- 数学--高思课本和乐乐课堂名称对应(1).pdf
- 常暗之厢常闇の箱.pdf
- 成人呼吸支持治疗器械相关压力性损伤的预防(2023中华护理学会团体标准).pptx VIP
- 《调皮的小猫咪》-美术课件.ppt VIP
- 七年级语文上册第二单元整体教学设计-优质教案.docx
- 成人呼吸支持治疗器械相关压力性损伤的预防-2023中华护理学会团体标准.pptx VIP
文档评论(0)