分類  >  資料庫 >

跟蹤sql會話 dbms_monitor

tags:    時間:2014-05-04 12:36:18
追蹤sql會話 dbms_monitor

經常會遇到一個會話中存在sql性能問題,但無法定位哪一個sql導致DB性能問題較高,這是我們需要對這個session進行監控可以通過dbms_monitor包來實現。


首先確定要監控的會話sid及serial#,可以通過v$session視圖獲得

select sid, serial#, username from v$session  where ...


確定session后,調用dbms_monitor包的session_trace_enable過程:

SQL> exec dbms_monitor.session_trace_enable(session_id=>198, serial_num=> 7, waits=>true, binds=>true);  PL/SQL procedure successfully completed.

這個例子選擇了對等待信息及綁定變數的跟蹤。

追蹤整個會話的資源成本使用很高,一般會收集如下信息:

會話中各個sql的邏輯、物理讀

cpu及運行時間

sql處理的行數

庫緩存的未命中數

提交及回滾次數

記錄每條語句的實際執行計劃的行運算

每條sql語句的等待事件


可選參數:

session_id 標識所要追蹤會話的sid,如果忽略講會追蹤所有會話。

serial_num 會話的順序號。

waits 是否獲取等待事件信息

binds 是否獲取綁定變數的信息


關閉會話追中

SQL> exec dbms_monitor.session_trace_disable(session_id=>198, serial_num=> 7);  PL/SQL procedure successfully completed.



推薦閱讀文章

Bookmark the permalink ,來源:互聯網