Oracle查詢當前會話的sid
檢視當前會話的session ID 有如下三種方法:
1. v$mystat檢視
SQL> select sid from v$mystat where rownum=1;
SID
----------
1152
2. 使用userenv(‘sid’) 直接獲取
這種方法只能在oracle 10g以後可以使用。
SQL> select userenv('sid') from dual;
USERENV('SID')
--------------
1152
3. 結合 userenv('sessionid') 與 v$session 檢視
userenv('sessionid') 返回的是session audit id.其對應v$session 的audsid欄位。
在session 連線到資料庫的時候,會從SYS.AUDSES$序列中獲取一個audid 分配給session。
SQL> select sid from v$session where audsid=userenv('sessionid');
SID
----------
773
1152
--這裡返回了2個值,我們直接檢視userenv('sessionid') 值:
SQL> select userenv('sessionid') from dual;
USERENV('SESSIONID')
--------------------
4294967295
對於internal使用者(’/as sysoper’ 和 ‘/as sysdba’)和後臺程式,其對應的AUDID 為0.
在Oracle 10g中,如果AUDID的值為0,表明是internal 使用者,如果AUDID 值是4294967295,那麼就表明是用SYS 使用者直接連線的。
我們這裡返回三個結果是把所有SYS 使用者的session都返回了,所以這種方法有時的準確性並不高。
有關SYS.AUDSES$的說明可以參照http://blog.csdn.net/tianlesoftware/article/details/7239890
1. v$mystat檢視
SQL> select sid from v$mystat where rownum=1;
SID
----------
1152
2. 使用userenv(‘sid’) 直接獲取
這種方法只能在oracle 10g以後可以使用。
SQL> select userenv('sid') from dual;
USERENV('SID')
--------------
1152
3. 結合 userenv('sessionid') 與 v$session 檢視
userenv('sessionid') 返回的是session audit id.其對應v$session 的audsid欄位。
在session 連線到資料庫的時候,會從SYS.AUDSES$序列中獲取一個audid 分配給session。
SQL> select sid from v$session where audsid=userenv('sessionid');
SID
----------
773
1152
--這裡返回了2個值,我們直接檢視userenv('sessionid') 值:
SQL> select userenv('sessionid') from dual;
USERENV('SESSIONID')
--------------------
4294967295
對於internal使用者(’/as sysoper’ 和 ‘/as sysdba’)和後臺程式,其對應的AUDID 為0.
在Oracle 10g中,如果AUDID的值為0,表明是internal 使用者,如果AUDID 值是4294967295,那麼就表明是用SYS 使用者直接連線的。
我們這裡返回三個結果是把所有SYS 使用者的session都返回了,所以這種方法有時的準確性並不高。
有關SYS.AUDSES$的說明可以參照http://blog.csdn.net/tianlesoftware/article/details/7239890
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1658090/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle阻塞會話查詢Oracle會話
- pid,sid相互查詢,根據PID查詢sqlSQL
- 查詢當前ubuntu版本號的命令Ubuntu
- [oracle] 查詢歷史會話、歷史執行計劃Oracle會話
- Oracle查詢前100萬條資料Oracle
- 檢視當前pg會話連線數會話
- 查詢時間從前7天到當前時間
- Oracle 查詢佔用臨時表空間大的歷史會話和SQLOracle會話SQL
- Oracle 查詢Oracle
- mysql中取系統當前時間,當前日期方便查詢判定的程式碼MySql
- python 當中的模糊查詢Python
- 查詢當前資料庫存在某個字串的儲存過程資料庫字串儲存過程
- Laravel查詢 日期比當前時間早一個月的資料Laravel
- Oracle psu查詢Oracle
- oracle 基本查詢Oracle
- oracle常用查詢Oracle
- oracle 精確查詢和模糊查詢Oracle
- 殺會話之查詢鎖表的物件及相關操作會話物件
- [20211014]如何取消使用者的查詢在另外的會話.txt會話
- Oracle 檢查當前資料庫CPU和PSU補丁資訊Oracle資料庫
- oracle的會話如何自殺?Oracle會話
- 如何查詢Linux當機的原因?Linux
- ?ORACLE會話超時Oracle會話
- Oracle-多表查詢Oracle
- oracle 連線查詢Oracle
- Oracle 查詢轉換Oracle
- oracle樹形查詢Oracle
- Oracle in 查詢優化Oracle優化
- 查詢前90%的資料值
- 如何查詢當前SAP使用者所屬的組織單元(organization unit)
- 「Oracle」Oracle高階查詢介紹Oracle
- Postgresqlddl在事務中可以回滾,truncate時relfilenode在當前會話會改變SQL會話
- Mybatis中Oracle的拼接模糊查詢MyBatisOracle
- 關於oracle的空間查詢Oracle
- oracle表查詢的並行度Oracle並行
- 1.4.2. 檢查當前版本號
- int 被當作模糊查詢
- oracle update left join查詢Oracle
- oracle最新補丁查詢Oracle