v$session之小測試(三)_與dba_objects

wisdomone1發表於2010-07-30
--測試目的:學習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部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-669831/,如需轉載,請註明出處,否則將追究法律責任。

相關文章