日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

oracle会话状态,oracle中会话的状态

發布時間:2025/4/16 89 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle会话状态,oracle中会话的状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們可以通過oracle視圖v$session來查看當前數據庫中的所有會話信息,其中該視圖有一列為status標志會話狀態,oracle官方文檔對這一列定義如下

STATUS

VARCHAR2(8)

Status of the session:

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

通過我們遇到的都是ACTIVE,INACTIVE,KILLED三種狀態

1、active 會話處于活動狀態,當前session正在執行sql語句

2、inactive會話處于不活動狀態,sql語句已經執行完畢,但是由于某種原因,會話和后臺進程沒有釋放,通過我們在sqlplus中退出和類似plsql developer工具log out或者直接退出,都是直接關閉會話,而不是將會話置于inactive狀態,下面以sqlplus命令為例

[oracle@oracle11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu May 23 23:09:30 2013

Copyright (c) 1982, 2009, Oracle.? All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select count(*) from v$process;

COUNT(*)

----------

30

SQL>

開啟另一會話窗口,查詢會話數量

SQL>select count(*) from v$session;

查詢結果是27個會話

我們退出之前的會話

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@oracle11g ~]$

再次查詢會話數量,結果是26。說明會話已經釋放。而通常情況下inactive會話比較多的情況下是我們采用jboss,weblogic之類的中間件,建立連接池,而連接使用完畢之后并未釋放連接,仍然將連接放回到連接池的情況。

我本機上采用weblogic連接池,連接到oracle,設置初始連接數量是5,我們通過查詢

SQL> set linesize 150

SQL> select s.SID,s.SERIAL#,s.OSUSER,s.USERNAME,s.STATUS,s.PROGRAM from v$session s where s.STATUS='INACTIVE' and s.USERNAME='TEST';

SID??? SERIAL# OSUSER???????????????????????? USERNAME?????????????????????? STATUS?? PROGRAM

---------- ---------- ------------------------------ ------------------------------ -------- ------------------------------------------------

16???????? 64 Administrator????????????????? TEST?????????????????????????? INACTIVE JDBC Connect Client

21???????? 28 Administrator????????????????? TEST?????????????????????????? INACTIVE JDBC Connect Client

141??????? 164 Administrator????????????????? TEST?????????????????????????? INACTIVE JDBC Connect Client

142???????? 93 Administrator????????????????? TEST?????????????????????????? INACTIVE JDBC Connect Client

145???????? 30 Administrator????????????????? TEST?????????????????????????? INACTIVE JDBC Connect Client

由于會話的創建和釋放都需要耗費一定的資源,應用端往往會通過連接池來緩存會話。如果inactive會話過多,不建議直接kill session,畢竟應用的穩定性是第一位的,可以考慮調整應用連接池的數量,或者考慮增加processes的數量。

3、killed處于此狀態的會話,被標注為刪除,表示出現了錯誤,正在回滾

當然,也是占用系統資源的。還有一點就是,killed的狀態一般會持續較長時間,而且用windows下的工具pl/sql developer來kill掉,是不管用的,要用命令:alter system kill session 'sid,serial#' ; 可以通過此方式來解除死鎖

總結

以上是生活随笔為你收集整理的oracle会话状态,oracle中会话的状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。