我们看一个例子,来看看TM。TX琐是如何产生的,以及如何通过V$lock ,V$session_wait来查看琐的相关信息。
我们开两个sqlplus,针对表t 进行更新,第一个会话里执行update t set id=2 where id=1;第一会话,更新后,我们先不提交,
然后再在第二个会话里也执行 update t set id=3 where id=1;你会看到第二个会话,会停止不动,其实就是在等待资源,被锁住了。
先把第一个会话的当前Sid查询出来:
然后再看看v$lock这个表,你会发现如下信息:
可以看到对应sid 232有两个琐,一个是TM琐,一个是TX琐,这个正好也印证了我们在更新一条记录的时候,Oracle会在表上加上表琐,在更新的记录上加上行琐。
针对Type为TM的琐,可以通过ID1来查询对对应的琐琐在的object,
select object_name from dba_objects where object_id=76975; ----- 你会发现就是t 这个表。
232 TX上对应的block为1 代表啥意思呢,就是说它阻塞了另外一个操作(99 TX的操作),而通过99 TX里的Request 对应的值为6,
我们又能了解到,99 TX 等待的就是232 TX这个琐占用的资源,因为他的LMODE就是6.
另外一个比较有用的动态试图就是v$session_wait,通过查询该试图,可以查看以上信息,具体更详细的解释,后面我会更进一步深入一起探讨。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14766526/viewspace-1134070/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14766526/viewspace-1134070/