經常會遇到一個會話中存在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的邏輯、實體讀
cpu及運作時間
sql處理的行數
庫緩存的未命中數
送出及復原次數
記錄每條語句的實際執行計劃的行運算
每條sql語句的等待事件
可選參數:
session_id
辨別所要追蹤會話的sid,如果忽略講會追蹤所有會話。
serial_num
會話的順序号。
waits
是否擷取等待事件資訊
binds
是否擷取綁定變量的資訊
關閉會話追中