--测试目的:学习v$session之last_call_et及row打头相关列的用法
SQL> select sid,serial#,status,
row_wait_obj#, --会话对应sql所等待对象(表索引等)的object_id,可与dba_objects的object_id匹配
row_wait_file#,--会话对应sql所等待对象对应的数据文件id,可与v$datafile的file#匹配
row_wait_block#,--会话对应sql所等待对象所在的block编号
row_wait_row#,--注意:只有row_wait_obj#不为-1且当前会话对应的sql要等待另一个会话事务提交,才有效
last_call_et --根据会话不同状态(active及inactive),处于此状态有多少秒了,可结合logon_time有针对性处理一些持锁或等待锁会话了
from v$session
where username='PD';
SID SERIAL# STATUS ROW_WAIT_OBJ# ROW_WAIT_FILE# ROW_WAIT_BLOCK# ROW_WAIT_ROW# LAST_CALL_ET
----- ---------- -------- ------------- -------------- --------------- ------------- ------------
968 75 INACTIVE 54227 6 12106 0 60303
976 416 ACTIVE 56527 6 11261 0 2776 --等待锁的会话
988 154 INACTIVE -1 0 0 0 2782 --持锁会话(这个row_wait_obj#为-1,不用看它了)
--根据以上信息在dba_objects查看等待锁会话到底在等待的对象是什么呢
SQL> col object_name for a10
SQL> r
1 select owner,object_name,object_id,object_type,status from dba_objects where object_id in(select row_wait_obj# from
2* v$session where username='PD' and status='ACTIVE')
OWNER OBJECT_NAM OBJECT_ID OBJECT_TYPE STATUS
------------------------------ ---------- ---------- ------------------- -------
PD T1 56527 TABLE VALID --一查看,原来等待锁的会话在等待一个表t1啊,哈哈
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-669831/
,如需转载,请注明出处,否则将追究法律责任。