日期:2014-05-17  浏览次数:20855 次

能否将Database Link保持住?
问题是这样的:在2台机器上各有1个数据库实例A和B,我要将保存到A上面的数据推到B上面去,目前采用的方式是建A到B的dblink,当有保存到A上面的数据时就利用触发器同时将数据通过Dblink推到B实例上去。但是连接B实例所在的机器比较特殊,要经过一步认证才能从A机器连接到B机器,这个认证的过程比较费时,大概1分钟左右,不过连接建立之后数据库操作就很快了,就想问问这个A到B的dblink连接能否保持住,保持住的话这样保存的速度就会比较快了?
哪位大侠或者有其他的推数据的方法,也可以指点小弟一下?
------解决方案--------------------
貌似没有保持住的办法,不过你可以变通一下

在A数据库上 建立一个临时表, 触发器先网这个临时表中插入数据,当积累到一定量的时候 再一次写入到B库上去
保证一次连接 写多条,能提高些速度

或者
在认证的机器上对 A数据库服务器做特殊处理,给A机器一个高级授权来。

------解决方案--------------------
还有人回不?自己顶,呼唤大侠
------解决方案--------------------
首先是没遇到过这样的问题,其实,楼主提到的认证是个什么东东啊
------解决方案--------------------
引用:
问题是这样的:在2台机器上各有1个数据库实例A和B,我要将保存到A上面的数据推到B上面去,目前采用的方式是建A到B的dblink,当有保存到A上面的数据时就利用触发器同时将数据通过Dblink推到B实例上去。但是连接B实例所在的机器比较特殊,要经过一步认证才能从A机器连接到B机器,这个认证的过程比较费时,大概1分钟左右,不过连接建立之后数据库操作就很快了,就想问问这个A到B的dblink连接能否保……


oracle本身貌似没有这个功能,不过应该可以变通解决。

忘记dblink丢失时的错误码了。不过LZ你自己可以模拟出来。
(1)建立dblink联接后
(2)断开网线
(3)尝试向dblink查点东东,这时oracle将报告一个错误代码 假定为A
  貌似这个:ORA-01012: not logged on
(4)在应用中判断为该错误代码,则自动重新联接。

如果LZ的程序存在一个统一错误处理的入口点,则可以把错误代码检测以及重新联接放在那里处理。

------解决方案--------------------
貌似是错误代码 2068
02068, 00000, "following severe error from %s%s"
// *Cause: A severe error (disconnect, fatal Oracle error) received from
//         the indicated database link.  See following error text.
// *Action: Contact the remote system administrator.

------解决方案--------------------
引用:
首先是没遇到过这样的问题,其实,楼主提到的认证是个什么东东啊

这个认证可以理解为一个数据加密解密的过程,对于A和B之间的连接可以说是透明的,但是目前看会影响到连接速度
------解决方案--------------------
引用:
貌似是错误代码 2068
02068, 00000, "following severe error from %s%s"
// *Cause: A severe error (disconnect, fatal Oracle error) received from
//         the indicated database link.  See following error ……

这个不报错的,只是连接上的时间比较长
------解决方案--------------------
你的问题是卡在认证这里,为什么认证会让DBLINK断开?
DBLINK只是个链路,一旦这个链路建立了,就不需要再次认证了

环境如何的?
DBLINK建立的时候是否有使用密码建立连接?
------解决方案--------------------
当本地的SESSION关闭时,其打开的DBLINK也会关闭,因此你需要保持本地连接不断开。
------解决方案--------------------
引用:
当本地的SESSION关闭时,其打开的DBLINK也会关闭,因此你需要保持本地连接不断开。

哦,是这样啊,那我增大数据库连接池的最小连接数能不能实现?
------解决方案--------------------
设置数据库连接池的最小数和最大数相同,可以减少重新连接的机会。
建议先将要同步的数据存放在本地表,再由一个后台进程长连数据库,定期将数据通过DBLINK同步。
引用:
引用:

哦,是这样啊,那我增大数据库连接池的最小连接数能不能实现?

------解决方案--------------------
不懂。。。学习。。。
------解决方案--------------------