我最近開始使用oracle數據庫。一般來說,我有很多sqlplus窗口打開到不同的oracle數據庫。從一個sqlplus會話切換到另一個會話時,如何查看每個sqlplus會話的當前會話詳細信息?任何幫助是極大的讚賞!sqlplus如何查找當前連接的數據庫會話的詳細信息
回答
看看這個(c) Tanel Poder
。您可以從glogin.sql運行它(所以這些設置會在每次連接時更新,或者手動運行。注意host title
命令 - 它會更改您的sql * plus控制檯窗口標題和會話信息 - 在許多窗口打開時非常有用。同時
-- the Who am I script
def mysid="NA"
def _i_spid="NA"
def _i_cpid="NA"
def _i_opid="NA"
def _i_serial="NA"
def _i_inst="NA"
def _i_host="NA"
def _i_user="&_user"
def _i_conn="&_connect_identifier"
col i_username head USERNAME for a20
col i_sid head SID for a5 new_value mysid
col i_serial head SERIAL# for a8 new_value _i_serial
col i_cpid head CPID for a15 new_value _i_cpid
col i_spid head SPID for a15 new_value _i_spid
col i_opid head OPID for a5 new_value _i_opid
col i_host_name head HOST_NAME for a25 new_value _i_host
col i_instance_name head INST_NAME for a12 new_value _i_inst
col i_ver head VERSION for a10
col i_startup_day head STARTED for a8
col _i_user noprint new_value _i_user
col _i_conn noprint new_value _i_conn
col i_myoraver noprint new_value myoraver
select
s.username i_username,
i.instance_name i_instance_name,
i.host_name i_host_name,
to_char(s.sid) i_sid,
to_char(s.serial#) i_serial,
(select substr(banner, instr(banner, 'Release ')+8,10) from v$version where rownum = 1) i_ver,
(select substr(substr(banner, instr(banner, 'Release ')+8),
1,
instr(substr(banner, instr(banner, 'Release ')+8),'.')-1)
from v$version
where rownum = 1) i_myoraver,
to_char(startup_time, 'YYYYMMDD') i_startup_day,
p.spid i_spid,
trim(to_char(p.pid)) i_opid,
s.process i_cpid,
s.saddr saddr,
p.addr paddr,
lower(s.username) "_i_user",
upper('&_connect_identifier') "_i_conn"
from
v$session s,
v$instance i,
v$process p
where
s.paddr = p.addr
and
sid = (select sid from v$mystat where rownum = 1);
-- Windows CMD.exe specific stuff
-- host title %CP% &[email protected]&_i_conn [sid=&mysid ser#=&_i_serial spid=&_i_spid inst=&_i_inst host=&_i_host cpid=&_i_cpid opid=&_i_opid]
host title %CP% &[email protected]&_i_conn [sid=&mysid #=&_i_serial]
-- host doskey /exename=sqlplus.exe desc=set lines 80 sqlprompt ""$Tdescribe $*$Tset lines 299 sqlprompt "SQL> "
-- short xterm title
-- host echo -ne "\033]0;&[email protected]&_i_inst &mysid[&_i_spid]\007"
-- long xterm title
--host echo -ne "\033]0;host=&_i_host inst=&_i_inst sid=&mysid ser#=&_i_serial spid=&_i_spid cpid=&_i_cpid opid=&_i_opid\007"
def myopid=&_i_opid
def myspid=&_i_spid
def mycpid=&_i_cpid
-- undef _i_spid _i_inst _i_host _i_user _i_conn _i_cpid
輸出示例:
17:39:35 [email protected]> @sandbox
Connected.
18:29:02 [email protected]> @me
USERNAME INST_NAME HOST_NAME SID SERIAL# VERSION STARTED SPID OPID CPID SADDR PADDR
-------------------- ------------ ------------------------- ----- -------- ---------- -------- --------------- ----- --------------- -------- --------
SYSTEM xe OARS-SANDBOX 34 175 11.2.0.2.0 20130318 3348 30 6108:7776 6F549590 6FF51020
1 row selected.
Elapsed: 00:00:00.04
謝謝,它通過改變窗口標題做了很好的工作。現在我可以簡單地從Windows任務欄中選擇正確的sqlplus窗口。 – 2013-03-25 09:31:56
select * from v$session
where sid = to_number(substr(dbms_session.unique_session_id,1,4),'XXXX')
從v $ mystat中選擇sid,其中rownum = 1?;) – 2013-03-21 10:23:50
show user
可以連接用戶
select instance_name from v$instance
獲得實例或在sqlplus設置
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
嘗試:
select * from v$session where sid = SYS_CONTEXT('USERENV','SID');
您可能也有興趣在this AskTom post
seing您的評論後,你可以這樣做:
SELECT * FROM global_name;
感謝cade,但我認爲最好的迴應是來自「現在在這裏」,請參閱我的評論。再次感謝! – 2013-03-25 09:37:40
我知道這是一個老問題,但我也嘗試以上所有的答案,但沒有工作,在我的情況是什麼最終幫了我是
SHOW PARAMETER instance_name
這是簡單的,正確的答案。 – udog 2014-10-03 00:04:28
select sys_context('USERENV','INSTANCE_NAME') from dual;
&
select instance_name from v$instance;
會給你的實例名。 您也可以使用select * from global_name;
來查看實例的全局名稱。
'SHOW PARAMETER'方法需要對'v $ instance'的查詢訪問,但這種'SYS_CONTEXT'方法不需要。 (+) – durette 2016-06-07 16:25:07
我們可以從下面的查詢爲獲得session的詳細信息和狀態:
select ' Sid, Serial#, Aud sid : '|| s.sid||' , '||s.serial#||' , '||
s.audsid||chr(10)|| ' DB User/OS User : '||s.username||
' / '||s.osuser||chr(10)|| ' Machine - Terminal : '||
s.machine||' - '|| s.terminal||chr(10)||
' OS Process Ids : '||
s.process||' (Client) '||p.spid||' (Server)'|| chr(10)||
' Client Program Name : '||s.program "Session Info"
from v$process p,v$session s
where p.addr = s.paddr
and s.sid = nvl('&SID',s.sid)
and nvl(s.terminal,' ') = nvl('&Terminal',nvl(s.terminal,' '))
and s.process = nvl('&Process',s.process)
and p.spid = nvl('&spid',p.spid)
and s.username = nvl('&username',s.username)
and nvl(s.osuser,' ') = nvl('&OSUser',nvl(s.osuser,' '))
and nvl(s.machine,' ') = nvl('&machine',nvl(s.machine,' '))
and nvl('&SID',nvl('&TERMINAL',nvl('&PROCESS',nvl('&SPID',nvl('&USERNAME',
nvl('&OSUSER',nvl('&MACHINE','NO VALUES'))))))) <> 'NO VALUES'
/
有關詳細信息: https://ora-data.blogspot.in/2016/11/query-session-details.html
感謝,
- 1. 如何查找Oracle數據庫連接詳細信息
- 2. 如何查找連接的MQTT客戶端詳細信息
- 3. 來自數據庫的會話詳細信息的用戶名
- 4. ODBC如何提取數據庫連接詳細信息?
- 5. 保存數據庫連接的詳細信息
- 6. Chrome中的會話詳細信息
- 7. 找出現有Zendframework項目中的數據庫連接詳細信息
- 8. 將Treeview子節點連接到數據庫詳細信息
- 9. USQL的ODBC/JDBC連接詳細信息
- 10. 如何從數據庫中獲取數據的詳細信息?
- 11. 如何在數據庫中查找DBO更改的詳細信息?
- 12. 如何使用鏈接的j庫獲取當前用戶詳細信息
- 13. 查找NSError Webkit域的詳細信息
- 14. SQL - 查找列FK的詳細信息
- 15. 查找表分區的詳細信息
- 16. IE8失去會話詳細信息
- 17. 新會話登錄詳細信息
- 18. 獲得連接字符串的數據源的詳細信息
- 19. 數據庫表詳細信息
- 20. 詳細信息不存入數據庫
- 21. 當前用戶登錄詳細信息
- 22. 如何在IIS中查找mysql的連接字符串詳細信息?
- 23. 在數據庫中找不到我的註冊詳細信息
- 24. 如何在數據庫中存儲經緯度詳細信息並在ListView中查看詳細信息
- 25. BIRT:如何從JavaScript訪問當前數據庫連接/會話?
- 26. 如何在Delphi中找到Outlook數據的詳細信息?
- 27. 當客戶端連接丟失時查找服務器詳細信息
- 28. 安全MYSQL連接詳細信息
- 29. Java RMI連接池詳細信息
- 30. Python MySQLdb獲取連接詳細信息
發現使用SYS_CONTEXT函數[鏈接](它HTTP ://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#g1513460)例如:從dual中選擇sys_context('USERENV','db_name');或者更簡單地從v $ view ...從v $ database中選擇名稱;我認爲v $視圖通常僅限於DBA,因此sys_context將是最佳選擇。 – 2013-03-21 08:10:10
如果這是你想要的,那麼你可以從'global_name'選擇* – 2013-03-21 08:21:50