Oracle中使用dblink查询时的Exclusive锁

一次在Oracle 10g中建立了一个dblink用于访问其它数据库,对要访问的数据表在本地数据库创建了一个同义词(Synonyms),然后开始使用select语句测试该同义词是否能正常使用。测试结果显示,select语句成功查询到数据,但无意中发现本地数据中出现了一个Exclusive锁,使用commit语句提交后,该锁就消失了。后来进一步发现,在要访问的数据库中,也会出现一个Exclusive锁,该锁同样在提交后消失。

由于数据库系统刚安装完成,本地数据库也是刚建立的,还没有用户或应用程序使用该数据库,除了刚才的查询操作外,也没有进行其它更新等操作。怀疑是刚才select查询造成的,于是反复进行了几次验证,确认是select查询造成的。

从网上查询后得知,这是Oracle的分布式事务特性引发的。Oracle在执行分布式SQL语句时,无论是查询语句还是DML语句,都被认为是一项事务,为了支持两段式(two-phase)提交处理而使用了回滚段空间。因此,在事务上加了分布式事务锁(DX),只有提交或回滚本次事务后才能解除此锁。如果不提交或回滚本次事务,该事务占用的回滚段空间就不会释放,这样可能造成回滚段空间的不断扩容,从而达到最大限制,甚至耗尽回滚段表空间内的所有可用空间。

切记,在使用分布式SQL语句时,一定要及时提交,查询操作也不例外。即使具有AUMautomatic undo management,自动撤销管理)功能,也不能忽略提交。

 

参考文章:http://www.jlcomp.demon.co.uk/faq/dblink_commit.html

 

         欢迎访问数据库吧http://www.database8.com/?fromuid=13875

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值