通过PLSQL Developer进行数据操作
1,select * from table1 检索正常
2,select * from table1 for update 表直接死锁,无数据被检索出来请问这是为什么,有何原因为造成这样的情况,
在执行步骤2前,查询sessions并未发现有锁表现象.
1,select * from table1 检索正常
2,select * from table1 for update 表直接死锁,无数据被检索出来请问这是为什么,有何原因为造成这样的情况,
在执行步骤2前,查询sessions并未发现有锁表现象.
select a.oracle_username,b.object_name,a.PROCESS,c.TYPE
from v$locked_object a,all_objects b,v$session c
where a.object_id=b.object_id
and a.session_id=c.sid
and b.object_type='TABLE'查看一下
基本上是记录被锁了。你这里说的 在执行步骤2前,查询sessions并未发现有锁表现象.你这里的是怎么查的,发生你这里的情况,应该有至少一个TM锁和TX锁
用语句查select a.oracle_username,b.object_name,a.PROCESS,c.TYPE,c.SERIAL#,c.LOGON_TIME,c.PROGRAM,c.CLIENT_INFO,c.ACTION
from v$locked_object a,all_objects b,v$session c
where a.object_id=b.object_id
and a.session_id=c.sid
and b.object_type='TABLE'
session的locks里是对象锁。你这里有dml的语句,应该有一个TM的记录在那个session里的哟。
不过导致你的sql被挂住的不是这个TM锁,而是你的记录的锁是TX锁,在v$lock表里可以查到的。不过通过相关的lock视图是查不出被hang的记录的,关于lock的具体参考http://www.inthirties.com/thread-216-1-1.html