利用oracle快照dblink来解决数据库表同步问题.doc

利用oracle快照dblink来解决数据库表同步问题.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档