oracle-一些查看效能相關的視圖

來源:互聯網
上載者:User
 

timed_statistics參數:用於決定是否收集相關的時間參數,true為收集。如果該參數設為false,則等待事件相關視圖也就無法收集到資料。
SQL> SHOW PARAMETER timed_statistics;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
timed_statistics                     boolean     TRUE

如果statistics_level設定為TYPICAL或ALL,那麼timed_statistics該參數為true;如果statistics_level設定為BASIC,那麼timed_statistics該參數為false。
SQL> SHOW PARAMETER statistics_level
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL

一、v$system_event視圖介紹
1.欄位說明
DESC v$system_event
Name              Type         
----------------- ------------
EVENT             VARCHAR2(64)  --等待的事件                      
TOTAL_WAITS       NUMBER        --總等待次數                          
TOTAL_TIMEOUTS    NUMBER        --等待逾時次數                        
TIME_WAITED       NUMBER        --總等待時間(時間毫秒,1/100秒)                        
AVERAGE_WAIT      NUMBER        --平均等待時間(總等待時間/總等待次數)                        
TIME_WAITED_MICRO NUMBER        --總等待時間(時間微秒,1/1000000秒)                           
EVENT_ID          NUMBER        --標識等待事件id                        
WAIT_CLASS_ID     NUMBER        --標識等待事件類型id                       
WAIT_CLASS#       NUMBER        --該等待類型的數量                       
WAIT_CLASS        VARCHAR2(64)  --等待類型名稱                

2.等待事件類型(WAIT_CLASS)
SELECT DISTINCT wait_class FROM v$system_event;--或直接查看v$system_wait_class視圖
WAIT_CLASS
-------------
Concurrency --等待用於鎖定的資料庫資源,如閂
System I/O  --後台進程I/O的等待,包括db file parallel write事件的資料庫寫程式後台進程(DBWR)等待。還包括與歸檔有關的等待和重做日誌讀和寫等待
User I/O    --包括db file sequential read和db file scattered read事件
Configuration --如checkpoint completed等待事件
Other         --雜項等待
Application  --由應用代碼導致的等待
Idle      --空閑等待事件表示在會話不活動時發生的等待,如 “SQL*Net message from client”等待事件
Commit    --由單個等待事件log file sync組成,它是一個由資料庫中的提交導致的等待
Network   --網路傳遞訊息過程中的發生等待

log file sync(記錄檔同步): log file sync 等待時間和事務中指(提交或復原)相關;
                             當進程在log file sync事件上花費大量時間時,這通常表明過多的提交或短事務。
                             
SELECT event, time_waited, average_wait,total_waits,f.WAIT_CLASS_ID,f.WAIT_CLASS#,f.WAIT_CLASS
  FROM v$system_event f
WHERE wait_class NOT IN ('Idle')
 ORDER BY time_waited DESC;

二、v$system_wait_class視圖
1.視圖欄位說明
SQL> DESC v$system_wait_class  --10g新增
Name          Type         
------------- ------------
WAIT_CLASS_ID NUMBER        --等待類型id                       
WAIT_CLASS#   NUMBER        --該等待類型的數量                        
WAIT_CLASS    VARCHAR2(64)  --等待類型名稱                        
TOTAL_WAITS   NUMBER        --該等待類型事件發生時所等待的時間                       
TIME_WAITED   NUMBER        --所有會話用於等待的時間

2.v$system_wait_class視圖和v$system_event視圖比較
v$system_wait_class視圖是10g新增的,該視圖是對類型等待時間的統計。v$system_event視圖可以與v$system_wait_class視圖結合查看。
v$system_wait_class視圖和v$system_event視圖的來源不同,可用v$fixed_view_definition視圖查看視圖的具體定義,如下所示:
SELECT * FROM v$fixed_view_definition   WHERE view_name='V$SYSTEM_EVENT';
SELECT * FROM v$fixed_view_definition   WHERE view_name='GV$SYSTEM_EVENT';
SELECT * FROM v$fixed_view_definition   WHERE view_name='V$SYSTEM_WAIT_CLASS';
SELECT * FROM v$fixed_view_definition   WHERE view_name='GV$SYSTEM_WAIT_CLASS';

三、v$session_event視圖
1.欄位說明
SQL> DESC v$session_event
Name              Type         
----------------- ------------
SID               NUMBER        --會話id                           
EVENT             VARCHAR2(64)  --等待事件                        
TOTAL_WAITS       NUMBER        --該會話等待次數                        
TOTAL_TIMEOUTS    NUMBER        --該會話等待逾時次數                        
TIME_WAITED       NUMBER        --該會話總等待時間(時間毫秒,1/100秒)                           
AVERAGE_WAIT      NUMBER        --該會話平均等待時間(總等待時間/總等待次數)                        
MAX_WAIT          NUMBER        --該會話等待時間最大值                     
TIME_WAITED_MICRO NUMBER        --該會話總等待時間(時間微秒,1/1000000秒)                         
EVENT_ID          NUMBER        --事件ID                        
WAIT_CLASS_ID     NUMBER        --等待類型ID                        
WAIT_CLASS#       NUMBER        --該等待類型的數量                        
WAIT_CLASS        VARCHAR2(64)  --等待類型名稱  

2.v$session_event視圖與v$system_event視圖比較
v$session_event視圖:會話級的統計
v$system_event視圖:系統級的統計

四、v$session_wait_class視圖
與v$system_wait_class相比多了sid和serial#欄位,v$session_wait_class視圖表示某一會話的等待時間。

五、v$session_wait視圖
1.欄位說明
SQL> DESC v$session_wait;
Name            Type        
--------------- ------------
SID             NUMBER         --會話id                       
SEQ#            NUMBER         --標識當前或最新的等待序號                       
EVENT           VARCHAR2(64)   --當前等待事件或最後一次等待事件                      
P1TEXT          VARCHAR2(64)   --第一個等待參數的描述                       
P1              NUMBER         --第一個等待參數(十進位)                       
P1RAW           RAW(4)         --第一個等待參數(十六進位)                       
P2TEXT          VARCHAR2(64)   --第二個等待參數的描述                        
P2              NUMBER         --第二個等待參數(十進位)                       
P2RAW           RAW(4)         --第二個等待參數(十六進位)                       
P3TEXT          VARCHAR2(64)   --第三個等待參數的描述                       
P3              NUMBER         --第三個等待參數(十進位)                       
P3RAW           RAW(4)         --第三個等待參數(十六進位)                        
WAIT_CLASS_ID   NUMBER         --等待事件類型ID                       
WAIT_CLASS#     NUMBER         --該等待事件數目量                       
WAIT_CLASS      VARCHAR2(64)   --等待事件名稱                      
WAIT_TIME       NUMBER         該欄位已廢棄,可通過SECONDS_IN_WAIT和STATE欄位替代 (具體含義,0代表正在等待;>0表示最後一次等待的時間,單位為百分之一秒;-1表示等待時間小於百分之一秒;-2表示參數TIMED_STATISTICS被設定為false)                      
SECONDS_IN_WAIT NUMBER         --如果該會話處於等待狀態,則表示當前等待的總時間;如果非等待狀態,則表示自最後一次等待以來的總時間                       
STATE           VARCHAR2(19)   --其值可為 WAITING,WAITED UNKNOWN TIME,WAITED SHORT TIME ,WAITED KNOWN TIME
state值的具體含義:WAITING表示會話正在等待;
                  WAITED UNKNOWN TIME表示最後一次等待時間不知,即TIMED_STATISTICS被設定為false;
                  WAITED SHORT TIME表示最後一次等待時間少於百分之一秒;
                  WAITED KNOWN TIME表示最新一次等待時間,可通過wait_time列查看。即該等待時間正好由等待狀態得到資源轉為執行狀態。
2.注意事項
1)oracle11g,在該視圖中新增了WAIT_TIME_MICRO,TIME_REMAINING_MICRO,TIME_SINCE_LAST_WAIT_MICRO欄位。而SECONDS_IN_WAIT已廢棄,用
WAIT_TIME_MICRO and TIME_SINCE_LAST_WAIT_MICRO替代。
TIME_REMAINING_MICRO欄位含義:為0表示當前等待逾時;>0表示當前等待還需等待的時間;-1表示當前等待將無限制地等待;null表示該會話當前無等待
2)p1,p2,p3參數代表的含義可以通過v$event_name視圖的PARAMETER1,PARAMETER2,PARAMETER3尋找。不過v$session_wait視圖本身中的P1TEXT,
P2TEXT,P3TEXT已經對p1,p2,p3進行了說明,及P1TEXT,P2TEXT,P3TEXT欄位值與PARAMETER1,PARAMETER2,PARAMETER3一樣。

六、v$session視圖
該視圖包含了v$session_wait視圖的所有欄位。該視圖記錄了每個會話的具體資訊。
擷取不同使用者會話所面臨的等待類型及他們所執行的sql語句文本,如下指令碼:
SELECT s.username, t.sql_text, s.event
  FROM v$session s, v$sqltext t
 WHERE s.sql_hash_value = t.hash_value
   AND s.sql_address = t.address
   AND s.type <> 'BACKGROUND'
 ORDER BY s.sid, t.hash_value, t.piece;

七、v$sysmetric視圖
這是一個顯示最近時間間隔的系統度量值,時間間隔為60秒。通過這個視圖也可以查看在一個短期間隔內的
Buffer Cache Hit Ratio,Memory Sorts Ratio,Redo Allocation Hit Ratio。

v$waitclassmetric:顯示最近60秒時間間隔中等待類的度量值。此視圖最多儲存一個小時的資訊。

SELECT * FROM v$waitstat

v$session_wait_history
該視圖儲存每個活動會話的最後10個等待事件的有關資訊。如v$session和v$session_wait視圖只顯示最近一次等待的資訊。
SELECT seq#, event, wait_time, p1, p2, p3
  FROM v$session_wait_history WHERE sid = 140
 ORDER BY seq#;
 
v$active_session_history:當前的活動會話曆史
--查詢導致最多等待的對象及這些對象在最後15分鐘內等待的事件類型
SELECT o.object_name,
       o.object_type,
       a.event,
       SUM(a.wait_time + a.time_waited) total_wait_time
  FROM v$active_session_history a, dba_objects o
 WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
   AND a.current_obj# = o.object_id
 GROUP BY o.object_name, o.object_type, a.event
 ORDER BY total_wait_time;

--列出資料庫中最後15分鐘內最重要的等待事件

SELECT a.event,
       SUM(a.wait_time + a.time_waited) total_wait_time
  FROM v$active_session_history a
 WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
 GROUP BY a.event
 ORDER BY total_wait_time DESC;

--等待最多的使用者
SELECT s.sid,
       s.username,
       SUM(a.wait_time + a.time_waited) total_wait_time
  FROM v$active_session_history a,v$session s
 WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
   AND a.session_id = s.sid
 GROUP BY s.sid,s.username
 ORDER BY total_wait_time DESC;

--確定等待最多的sql
SELECT a.user_id,
       s.sql_text,
       d.username,
       SUM(a.wait_time + a.time_waited) total_wait_time
  FROM v$active_session_history a, v$sqlarea s, dba_users d
 WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
   AND a.sql_id = s.sql_id
   AND a.user_id = d.user_id
 GROUP BY a.user_id, s.sql_text, d.username;

dba_hist_active_sess_history:每60分鐘,MMON後台進程都要重新整理過濾了得ASH資料到磁碟,使其成為按小時的AWR快照的一部分。若ASH緩衝區已滿,
則MMML後台進程進行資料的重新整理。ASH資料被重新整理到磁碟後,就不能在v$active_session_history視圖中看到它了。此時要查看曆史資料,就必須通過
dba_hist_active_sess_history視圖。

段級動態效能檢視:使用它們可以找出哪些表和索引正在使用大量資源或具有大量的等待。
v$segstat_name
v$segstat
v$segment_statistics

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.