學習動態性能表(二)-v$sesstat&v$mystat |
[君三思] 2007-5-25 |
(1) -v$sessstat 按照OracleOnlineBook中的描述, v$sesstat 存儲 session 從login到logout的詳細 資源使用 統計 。 類似于v$sysstat,該視圖存儲下列類別的統計:
注意: 如果初始參數STATISTICS_LEVEL被設置為TYPICAL或ALL,時間統計被數據庫自動收集如果STATISTICS_LEVEL被設置為BASIC,你必須設置TIMED_STATISTICS值為TRUE以打開收集功能。 如果你已設置了DB_CACHE_ADVICE,TIMED_STATISTICS或TIMED_OS_STATISTICS,或在初始參數文件或使用ALTER_SYSTEM或ALTER SESSION,那么你所設定的值的值將覆蓋STATISTICS_LEVEL的值。 v$sysstat 和v$sesstat差別如下:
v$sesstat 可被用于找出 如下類型 session :
在V$SESSTAT中使用統計 多數v$sesstat中的統計參考是v$sysstat描述的子集,包括session logical reads, CPU used by this session, db block changes, redo size, physical writes, parse count (hard), parse count (total), sorts (memory), and sorts (disk). V$SESSTAT 常用列說明
示例1: 下列找出當前session中最高的logical和Physical I/O比率. 下列SQL語句顯示了所有連接到數據庫的session邏輯、物理讀比率(每秒)。logical和physical I/O比率是通過自登陸后的時間消耗計算得出。對于sessions連接到數據庫這種長周期操作而言也許不夠精確,不過做個示例卻足夠了。 先獲得 session 邏輯讀和物理讀統計 項的 STATISTIC# 值 : SELECT name , statistic# FROM V$STATNAME WHERE name IN ( ¨session logical reads¨ , ¨physical reads¨ ) ; NAME STATISTIC# ------------------------------ ---------- session logical reads 9 physical reads 40通過上面獲得的 STATISTIC# 值執行下列語句 : SELECT ses.sid , DECODE(ses.action,NULL,¨online¨,¨batch¨) "User" , MAX(DECODE(sta.statistic#,9,sta.value,0)) /greatest(3600*24*(sysdate-ses.logon_time),1) "Log IO/s" , MAX(DECODE(sta.statistic#,40,sta.value,0)) /greatest(3600*24*(sysdate-ses.logon_time),1) "Phy IO/s" , 60*24*(sysdate-ses.logon_time) "Minutes" FROM V$SESSION ses , V$SESSTAT sta WHERE ses.status = ¨ACTIVE¨ AND sta.sid = ses.sid AND sta.statistic# IN (9,40) GROUP BY ses.sid, ses.action, ses.logon_time ORDER BY SUM( DECODE(sta.statistic#,40,100*sta.value,sta.value) ) / greatest(3600*24*(sysdate-ses.logon_time),1) DESC; SID User Log IO/s Phy IO/s Minutes ----- ------ -------- -------- ------- 1951 batch 291 257.3 1 470 online 6,161 62.9 0 730 batch 7,568 43.2 197 2153 online 1,482 98.9 10 2386 batch 7,620 35.6 35 1815 batch 7,503 35.5 26 1965 online 4,879 42.9 19 1668 online 4,318 44.5 1 1142 online 955 69.2 35 1855 batch 573 70.5 8 1971 online 1,138 56.6 1 1323 online 3,263 32.4 5 1479 batch 2,857 35.1 3 421 online 1,322 46.8 15 2405 online 258 50.4 8示例2:又例如通過v$sesstat和v$statname連接查詢某個SID各項信息。 select a.*,b. name from v$sesstat a,v$statname b where a.sid= 10 and a.statistic#=b.statistic#;本視圖是v$sesstat的一個子集,返回當前session的統計項。當通過觸發器審計session資源使用,可以使用v$mystat來捕獲資源使用,這將比直接掃描v$sesstat的列要節省資源的多。 |