
首先在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实现求高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)