按照oracleonlinebook中的描述,v$sesstat儲存session從login到logout的詳細資源使用統計。
類似於v$sysstat,該檢視儲存下列類別的統計:
l 事件發生次數的統計,如使用者提交數。
l 資料產生,訪問或者操作的total列(如:redo size)
l 執行操作所花費的時間累積,例如session cpu占用(如果timed_statistics值為true)
注意:如果初始引數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差別如下:
n v$sesstat只儲存session資料,而v$sysstat則儲存所有sessions的累積值。
n v$sesstat只是暫存資料,session退出後資料即清空。v$sysstat則是累積的,只有當例項被shutdown才會清空。
n v$sesstat不包括統計項名稱,如果要獲得統計項名稱則必須與v$sysstat或v$statname連線查詢獲得。
v$sesstat可被用於找出如下型別session:
n 高資源占用
n 高平均資源占用比(登陸後資源使用率)
n 預設資源占用比(兩快照之間)
在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常用列說明
n sid:session唯一id
n statistic#:資源唯一id
n value:資源使用
示例1:下列找出當前session中最高的logical和physical i/o比率.
下列sql語句顯示了所有連線到資料庫的session邏輯、物理讀比率(每秒)。logical和physical i/o比率是通過自登陸後的時間消耗計算得出。對於sessions連線到資料庫這種長週期操作而言也許不夠精確,不過做個示例卻足夠了。
先獲得session邏輯讀和物理讀統計項的statistic#值:
selectname, statistic#
from v$statname
wherenamein ('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=10and a.statistic#=b.statistic#;
(2)-v$mystat
本檢視是v$sesstat的乙個子集,返回當前session的統計項。當通過觸發器審計session資源使用,可以使用v$mystat來捕獲資源使用,這將比直接掃瞄v$sesstat的列要節省資源的多。
**於:
Oracle動態效能表 2 V SQLTEXT
本檢視包括shared pool中sql語句的完整文字,一條sql語句可能分成多個塊被儲存於多個記錄內。v sqltext中的常用列 hash value sql語句的hash值 address sql語句在sga中的位址 sql text sql文字。piece sql語句塊的序號 v sqlte...
oracle動態交叉表
有一張表 id name quarter quantity 1 開發部 春天 10000 2 開發部 夏天 50000 3 開發部 秋天 30000 4 開發部 冬天 20000 5 銷售部 春天 10000 6 銷售部 夏天 4000 7 銷售部 秋天 30000 8 銷售部 冬天 20000 想...
動態鍊錶體驗4
檔名稱 lb 1 4.cpp 完成日期 2015年 3 月 13 日 版本號 v1.0 問題描述 編寫函式delete node int x 刪除結點值為x的結點。include using namespace std struct node node head null 將煉表頭定義為全域性變數,...