两个oracle数据库之间的数据同步

两个oracle数据库之间的数据同步,第1张

首先在ORACLE_B上做dblink连接ORACLE_A,然后做个存储过程,大致如下:找到table_db主键,select 主键 from table_db@dblink minus select table_db from table_db找到差异数据,然后插入到oracle_b,再写个job定时执行这个存储过程

数据类型都一样的么,可以考虑用触发器实现 以oracle数据库为例 有两张表test和test01 字段有id name age sal

create or replace trigger TRIG_UPDATE_TEST

after insert or delete or update on test

for each row

declare

l_id varchar2(50);

l_name varchar2(50);

l_age number;

l_sal number;

begin

if(deleting or updating) then

delete test01

where id=:oldid;

if(deleting) then

return;

end if;

end if;

l_id:=:newid;

l_name:=:newname;

l_age:=:newage;

l_sal:=:newsal;

begin

insert into test01(id,name,age,sal) values(l_id,l_name,l_age,l_sal);

end;

end TRIG_UPDATE_TEST;

再简化点就是在触发器中不声明变量,直接用:new字段代替

哎,没分啊

oracle中一个数据库表通过另一个数据表的数据同步最新数据采用dblink的方法:

1首先创建一个dblink,可以访问远程数据库

2在本地创建一个快照,映射远程数据表,当远程数据表有变化时,会反应到快照中

3由于快照类似于视图表,所以在本地为快照创建一个触发器,当快照有变化时,会触发相应事件

4在触发器中写同步数据的代码。

以下是触发器代码:

createorreplacetriggerTRI_test_user_AFR

afterinsertorupdateordeleteonsn_test_user

foreachrow

begin

if deleting then

deletefromtest_userwhereid=:oldid;

endif;

if inserting then

insertintotest_user(id,name,age)

values(:newid,:newname,:newage);

endif;

if updating then

updatetest_usersetname=:newname,age=:newagewhereid=:oldid;

endif;

endTRI_test_user_AFR;

以上就是关于两个oracle数据库之间的数据同步全部的内容,包括:两个oracle数据库之间的数据同步、急,在线等!如何在两个oracle数据库之间的相同结构的两个表实现数据的同步更新,dblink已经建好了、oracle中一个数据库表怎么把另一个数据库表中的最新信息添加过来,用DBLINK实现求高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9393121.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存