學習動態效能表第13篇--V$OPEN_CURSOR
當診斷系統資源佔用時,它常被用於聯接v$sqlarea和v$sql查詢出特定SQL(高邏輯或物理I/O)。然後,下一步就是找出源頭。在應用環境,基本都是同一類使用者登陸到資料庫(在V$SQLAREA中擁有相同的PARSING_USER_ID),而透過這個就可以找出它們的不同。V$SQLAREA中的統計項在語句完全執行後被更新(並且從V$SESSION.SQL_HASH_VALUE中消失)。因此,你不能直接找到session除非語句被再次執行。不過如果session的cursor仍然開啟著,你可以透過v$open_cursor找出執行這個語句的session。
V$OPEN_CURSOR中的連線列
Column View Joined Column(s)
----------------------------- ---------------------------------------- -----------------------------
HASH_VALUE, ADDRESS V$SQLAREA, V$SQL, V$SQLTEXT HASH_VALUE, ADDRESS
SID V$SESSION SID
示例:
1.找出執行某語句的session:
SELECT hash_value, buffer_gets, disk_reads
FROM V$SQLAREA
WHERE disk_reads > 1000000
ORDER BY buffer_gets DESC;
HASH_VALUE BUFFER_GETS DISK_READS
---------- ----------- ----------
1514306888 177649108 3897402
478652562 63168944 2532721
360282550 14158750 2482065
3 rows selected.
SQL> SELECT sid FROM V$SESSION WHERE sql_hash_value = 1514306888 ;
no rows selected
--直接透過hash_value查詢v$session,沒有記錄
SQL> SELECT sid FROM V$OPEN_CURSOR WHERE hash_Value = 1514306888 ;
SID
-----
1125
233
935
1693
531
5 rows selected.
--透過hash_value在v$open_cursor中查詢sid(只有在session的cursor仍然開啟的情況下才有可能找到)
2.列出擁有超過400個cursor的sessionID
SQL> SELECT sid, count(0) ct FROM v$open_cursor
GROUP BY sid HAVING COUNT(0) > 400 ORDER BY ct desc;
事實上,v$open_cursor是一個相當常用的檢視,特別是web開發應用的時候。僅透過它一個檢視你就能分析出當前的連線情況,主要執行語句等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/751371/viewspace-561518/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學習動態效能表(13)--V$OPEN_CURSOR
- (轉):學習Oracle動態效能表-(16)-V$OPEN_CURSOROracle
- 學習動態效能表第14篇--V$PARAMETER&V$SYSTEM_PARAMETER
- 學習oracle動態效能表--v$transactionOracle
- 學習動態效能表(19)--V$UNDOSTAT
- 學習動態效能表(16)--V$ROWCACHE
- 學習動態效能表(15)--V$ROLLSTAT
- 學習動態效能表(九)--V$FILESTAT
- 學習動態效能表(七)--V$PROCESS
- 學習動態效能表(二)--v$sesstat
- 學習動態效能表(一)--v$sysstat
- 學習動態效能表(五)-v$sessionSession
- 學習動態效能表(五)--V$SESSIONSession
- 學習動態效能表(20)--V$WAITSTATAI
- 學習動態效能表(八)-(1)-v$lock
- 學習動態效能表(三)-(1)-v$sqlSQL
- 學習動態效能表(四)-(2)-V$SQLAREASQL
- 學習動態效能表(四)-(1)-v$sqltextSQL
- 學習動態效能表(八)-(2)-v$lock
- 學習動態效能表(11)--v$latch$v$latch_children
- (轉):學習Oracle動態效能表-(7)-V$SQLTEXT,V$SQLAREAOracleSQL
- [轉]學習Oracle動態效能表-(6)-V$SQLTEXT,V$SQLAREAOracleSQL
- 學習動態效能表(18)--V$SYSTEM_EVENT
- (轉):學習Oracle動態效能表-(12)-V$PROCESSOracle
- (轉):學習Oracle動態效能表-(10)-V$FILESTATOracle
- (轉):學習Oracle動態效能表-(8)-V$SESSIONOracleSession
- (轉):學習Oracle動態效能表-(5)-V$SESSTATOracle
- (轉)學習Oracle動態效能表-(4)-V$SYSSTATOracle
- (轉):學習Oracle動態效能表-(2)-V$SQLTEXTOracleSQL
- (轉):學習Oracle動態效能表-(1)-V$SQLAREAOracleSQL
- (轉):學習Oracle動態效能表-(21)-V$UNDOSTATOracle
- (轉):學習Oracle動態效能表-(19)-v$rowcacheOracle
- (轉):學習Oracle動態效能表-(18)-V$ROLLSTATOracle
- 學習動態效能表
- 學習動態效能表(17)--v$segstat&v$segment_statistics
- 學習動態效能表(14)--V$PARAMETER&V$SYSTEM_PARAMETER
- 學習動態效能表(12)--V$DB_OBJECT_CACHEObject
- 學習動態效能表(十)--V$SESSION_LONGOPSSessionGo