Oracle動態效能表 4 V SESSTAT

2021-06-25 19:34:31 字數 3651 閱讀 8983

按照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 將煉表頭定義為全域性變數,...