Oracle中使用dblink查询时的Exclusive锁
来源:互联网 发布:数控循环程序怎么编程 编辑:程序博客网 时间:2024/06/07 13:06
一次在Oracle 10g中建立了一个dblink用于访问其它数据库,对要访问的数据表在本地数据库创建了一个同义词(Synonyms),然后开始使用select语句测试该同义词是否能正常使用。测试结果显示,select语句成功查询到数据,但无意中发现本地数据中出现了一个Exclusive锁,使用commit语句提交后,该锁就消失了。后来进一步发现,在要访问的数据库中,也会出现一个Exclusive锁,该锁同样在提交后消失。
由于数据库系统刚安装完成,本地数据库也是刚建立的,还没有用户或应用程序使用该数据库,除了刚才的查询操作外,也没有进行其它更新等操作。怀疑是刚才select查询造成的,于是反复进行了几次验证,确认是select查询造成的。
从网上查询后得知,这是Oracle的分布式事务特性引发的。Oracle在执行分布式SQL语句时,无论是查询语句还是DML语句,都被认为是一项事务,为了支持两段式(two-phase)提交处理而使用了回滚段空间。因此,在事务上加了分布式事务锁(DX),只有提交或回滚本次事务后才能解除此锁。如果不提交或回滚本次事务,该事务占用的回滚段空间就不会释放,这样可能造成回滚段空间的不断扩容,从而达到最大限制,甚至耗尽回滚段表空间内的所有可用空间。
切记,在使用分布式SQL语句时,一定要及时提交,查询操作也不例外。即使具有AUM(automatic undo management,自动撤销管理)功能,也不能忽略提交。
参考文章:http://www.jlcomp.demon.co.uk/faq/dblink_commit.html
欢迎访问数据库吧http://www.database8.com/?fromuid=13875
- Oracle中使用dblink查询时的Exclusive锁
- oracle中DBlink的使用
- oracle中dblink的使用简介
- Oracle DBLink的使用
- Oracle DBLINk的使用
- Oracle DBLINk的使用
- oracle DBlink的使用
- oracle DBLink的使用
- oracle dblink的使用(可以用于查询远程数据库)
- oracle使用dblink跨库查询的例子
- Oracle中如何使用DBLink
- Oracle使用DBLINK实现跨库查询
- oracle中dblink的创建
- Oracle之dblink的使用
- XA中使用dblink发现的一个oracle bug
- oracle跨库查询dblink的用法
- 大量使用dblink查询的后果
- oracle 中 dblink 的创建方法
- ARM硬件重点
- 关于数据库破坏面向对象方法的思考和讨论 2010-9-8
- Visual Studio 2008“选项”对话框 ->“项目和解决方案”->“生成并运行”
- 关于存储图片,oracle.sql.blob在jndi连接池环境下转化异常的解决方案
- 很多年不写程序了,现在准备从头再来
- Oracle中使用dblink查询时的Exclusive锁
- 学习NodeJS第二天:漫谈NodeJS
- 随便写点
- JDBC连接MySQL
- 表单验证中常用的正则表达式以及表单详细代码
- 一个人的快三秒
- C#函数中无参数修饰符、out修饰符、params修饰符、ref修饰符的区别
- magento -- 为Magento提速再做一点小努力之用工具压缩网页上的图片
- RAS 在 x86 上的应用及 Linux 实现