2013-03-21 27 views
16

Tôi gần đây đã bắt đầu làm việc trên cơ sở dữ liệu oracle. Nói chung tôi có nhiều cửa sổ sqlplus mở để cơ sở dữ liệu oracle khác nhau. Khi chuyển từ một phiên sqlplus sang phiên khác, làm cách nào tôi có thể xem chi tiết phiên hiện tại cho mỗi phiên sqlplus? Bất kỳ trợ giúp nào cũng được đánh giá rất cao!sqlplus cách tìm thông tin chi tiết về phiên cơ sở dữ liệu hiện đang kết nối

+0

tìm thấy nó sử dụng chức năng sys_context [link] (http : //docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#g1513460) ví dụ: chọn sys_context ('USERENV', 'db_name') từ kép; hoặc đơn giản hơn từ v $ view ... chọn tên từ v $ database; Tôi nghĩ rằng lượt xem $ v thường bị hạn chế đối với DBA do đó sys_context sẽ là lựa chọn tốt nhất. –

+0

Nếu đây là những gì bạn muốn, sau đó bạn có thể làm 'chọn * từ global_name' –

Trả lời

7

Hãy nhìn vào một (c) Tanel Poder này. Bạn có thể chạy nó từ glogin.sql của bạn (do đó, các cài đặt này sẽ cập nhật mỗi khi bạn kết nối, hoặc chỉ chạy nó theo cách thủ công. . đồng thời

-- 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 

mẫu đầu ra:.

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 
+0

cảm ơn, nó thực hiện một công việc tuyệt vời bằng cách thay đổi tiêu đề cửa sổ. Bây giờ tôi có thể chỉ cần chọn cửa sổ sqlplus đúng từ thanh tác vụ của cửa sổ. –

0
select * from v$session 
where sid = to_number(substr(dbms_session.unique_session_id,1,4),'XXXX') 
+0

chọn sid từ v $ mystat nơi rownum = 1?;) –

22
show user 

để có được sử dụng kết nối

select instance_name from v$instance 

để có được dụ hoặc đặt trong sqlplus

set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> " 
3

Hãy thử:

select * from v$session where sid = SYS_CONTEXT('USERENV','SID'); 

Bạn cũng có thể quan tâm đến this AskTom post

Sau seing nhận xét của bạn, bạn có thể làm:

SELECT * FROM global_name; 
+0

cảm ơn cade, nhưng tôi nghĩ rằng phản ứng tốt nhất là từ "có mặt ở đây", xem bình luận của tôi ở đó. cảm ơn một lần nữa! –

16

tôi biết đây là một câu hỏi cũ nhưng tôi đã thử tất cả các câu trả lời trên nhưng didnt làm việc trong trường hợp của tôi gì cuối cùng đã giúp tôi hiểu là

SHOW PARAMETER instance_name

+2

Đây là câu trả lời đơn giản, chính xác. – udog

7
select sys_context('USERENV','INSTANCE_NAME') from dual; 

&

select instance_name from v$instance; 

sẽ cung cấp cho bạn tên ví dụ. Bạn cũng có thể sử dụng select * from global_name; để xem tên toàn cục của cá thể.

+0

Cách tiếp cận 'SHOW PARAMETER' yêu cầu truy cập vào' v $ instance', nhưng phương pháp 'SYS_CONTEXT' này không có. (+) – durette

0

Chúng tôi có thể nhận được các chi tiết và tình trạng của session từ bên dưới truy vấn như:

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' 
/

Để biết thêm chi tiết: https://ora-data.blogspot.in/2016/11/query-session-details.html

Cảm ơn,