可不可以将Database Link保持住

能否将Database Link保持住?问题是这样的:在2台机器上各有1个数据库实例A和B,我要将保存到A上面的数据推到

能否将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同步。
引用:
引用:

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

[解决办法]
不懂。。。学习。。。
------解决方案--------------------


同志们,怎么我1楼的回答被忽略了,擦的,拿着金碗要饭吃。。。。。

引用:
貌似没有保持住的办法,不过你可以变通一下

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

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

[解决办法]
引用:
同志们,怎么我1楼的回答被忽略了,擦的,拿着金碗要饭吃。。。。。

引用:

貌似没有保持住的办法,不过你可以变通一下

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

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

这个真不是故意的,没有授权,只是个连接认证
[解决办法]
不知道 MATERIALIZED VIEW 能不能实现。
[解决办法]
查询时不是通过  @db_line 这样吗?

倒是 对那个 认证  挺感兴趣。

需要大概1分钟左右,到底是怎么个认证法?



[解决办法]
要想不断开的话。

是不是 一直通过 dblink 来查询,就不会断开?


[解决办法]
引用:
查询时不是通过  @db_line 这样吗?

倒是 对那个 认证  挺感兴趣。

需要大概1分钟左右,到底是怎么个认证法?

做过2个不同网络之间的数据交换的可能知道这个认证,金融或者政府行业的
[解决办法]
引用:
要想不断开的话。

是不是 一直通过 dblink 来查询,就不会断开?

我用job 5秒查一次,发现还是断开的
[解决办法]
要想不断开的话。

是不是 一直通过 dblink 来查询,就不会断开?

[解决办法]
还有没有人回啊?