Oracle會話學習

2021-08-31 15:26:18 字數 1123 閱讀 1698

1.檢視當前會話和程序

select count(1) from v$session;

select count(1) from v$process;

檢視當前總會話數和程序數,這兩個檢視就是跟會話及程序有關的重要檢視啦,資訊都是從這裡面取的。

2.查詢應用連線數多少,訪問的機器和應用程式

select b.machine,b.program,count(1)

from v$process a ,v$session b

where a.addr=b.paddr and b.username is not null

group by b.machine ,b.program

order by count(1) desc;

3.查詢是否有死鎖現象

select * from v$lock_object;

如果查詢結果為no rows selected,說明資料庫中沒有死鎖。否則說明資料庫中存在死鎖。

接下來說明一下會話的狀態:

1.active 處於此狀態的會話,表示正在執行,處於活動狀態。

2.killed 處於此狀態的會話,表示出現了錯誤,正在回滾,當然,也是占用系統資源的。還有一點就是,killed的狀態一般會持續較長時間,而且用windows下的工具pl/sql developer來kill掉,是不管用的,要用命令:alter system kill session 'sid,serial#' ;

3.inactive 處於此狀態的會話表示不是正在執行的,比如select語句已經完成。我一開始以為,只要是inactive狀態的會話,就是該殺,為什麼不釋放呢。其實,inactive對資料庫本身沒有什麼影響,但是如果程式沒有及時commit,那麼就會造成占用過多會話。解決inactive的方法最好的就是在oracle中直接設定超時時間,也是有兩種方法,區別暫時還不清楚:

1.修改sqlnet.ora檔案,新增expire_time=x(單位是分鐘)

我的sqlnet.ora位置在d:/oracle/ora92/network/admin

2.通過alter profile default limit idle_time 10; 命令修改,記得重啟下oracle。

oracle 當前會話

查詢oracle正在執行的sql語句及執行該語句的使用者 select b.sid oracleid,b.username 登入oracle使用者名稱 b.serial spid 作業系統id paddr,sql text 正在執行的sql b.machine 計算機名 from v process...

Oracle會話管理

查詢oracle正在執行的sql語句及執行該語句的使用者 select b.sid oracleid,b.username 登入oracle使用者名稱,b.serial spid 作業系統id,paddr,sql text 正在執行的sql,b.machine 計算機名 from v process...

Oracle會話查詢等

如何檢視oracle當前連線數,會話數 收藏 檢視session select from v session where username is not null select username,count username from v session where username is not ...