天天看點

追蹤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的邏輯、實體讀

cpu及運作時間

sql處理的行數

庫緩存的未命中數

送出及復原次數

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

每條sql語句的等待事件

可選參數:

session_id

辨別所要追蹤會話的sid,如果忽略講會追蹤所有會話。

serial_num

會話的順序号。

waits

是否擷取等待事件資訊

binds

是否擷取綁定變量的資訊

關閉會話追中