数据库同步为什么不建议使用dblink方式

数据库同步为什么不建议使用dblink方式,第1张

原因是:数据量多的话,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实现求高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9756922.html

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

发表评论

登录后才能评论

评论列表(0条)

保存