原因是:数据量多的话,oracle应该不知道断点续传功能的,如果对方数据库出问题(undo表空间不足、临时表空间不足、其他错误等)、网络处问题的话,无断点续传需要重新同步数据,牵扯到一个效率的问题。
如果只是复制一点数据,用dblink没什么大问题。 但是如果涉及到有ddl一类的,整个用户级的,或者什么规则的,这个时候就要自定义大量的触发器来实现。效率和准确性都要花大量时间去验证。得不偿失,不如直接用现成的方案去同步。
能不能不用dblink,我现在用dblink都怕了。用dblink会同步两个数据库的scn值,万一有一台出问题。另外一台也会出问题的。你这样又是程序,又是trigger,很容易出事的,另外,如果你的Oracle是101及以下版
本,建议尽快升级
,这个版本的dblink有问题的。
ora-02068是由链接超时导致,重点问题在ora-03135,也就是你的DBlink上,先保证你的DBlink账号是通的,如果你的DBlink账号,在PLSQL客户端可以正常查询远程Oracle,接下来就检查你的程序中账号是否是dblink账号,权限以及防火墙是否正确。
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;
以上就是关于数据库同步为什么不建议使用dblink方式全部的内容,包括:数据库同步为什么不建议使用dblink方式、如何解决dblink过多的问题、oracle中一个数据库表怎么把另一个数据库表中的最新信息添加过来,用DBLINK实现求高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)