STATUS
ACTIVE - Session currently executing SQL
INACTIVE
KILLED - Session marked to be killed
CACHED - Session temporarily cached for use by Oracle*XA
SNIPED - Session inactive, waiting on the client
(1)active 處于此狀態的會話,表示正在執行,處于活動狀態。
官方文檔說明:
Any session that is connected to the database and is waiting for an event that does not belong to the Idle wait class is considered as an active session.
(2)killed處于此狀態的會話,被標注為刪除,表示出現了錯誤,正在回滾。
當然,也是占用系統資源的。還有一點就是,killed的狀態一般會持續較長時間,而且用windows下的工具pl/sql developer來kill掉,是不管用的,要用命令:alter system kill session 'sid,serial#' ;
(3)inactive 處于此狀態的會話表示不是正在執行的
該狀態處于等待操作(即等待需要執行的SQL語句),通常當DML語句已經完成。 但連接沒有釋放,這個可能是程序中沒有釋放,如果是使用中間件來連接的話,也可能是中間件的配置或者是bug 導致。
inactive對數據庫本身沒有什么影響,但是如果程序沒有及時commit,那么就會造成占用過多會話。容易是DB 的session 達到極限值。
解決方法:
1 SQLNET.EXPIRE_TIME (適當設置大?。?br/>2 alter profile default limit idle_time 5;
根據下列SQL,再根據應用服務器主機名,可判斷應用的連接數情況:
SELECT b.MACHINE, b.PROGRAM, COUNT (*)
FROM v$process a, v$session b
WHERE a.ADDR = b.PADDR AND b.USERNAME IS NOT NULL
ADN A.TYPE !='BACKGROUND'
and a.status in ('ACTIVE','INACTIVE')
GROUP BY b.MACHINE, b.PROGRAM
ORDER BY COUNT (*) DESC;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。