it-swarm.com.de

sqlplus, um Details der aktuell verbundenen Datenbanksitzung zu finden

Ich habe vor kurzem begonnen, an Oracle-Datenbanken zu arbeiten. Im Allgemeinen habe ich viele sqlplus-Fenster, die für verschiedene Oracle-Datenbanken geöffnet sind. Wie kann ich beim Wechsel von einer sqlplus-Sitzung zu einer anderen die aktuellen Sitzungsdetails für jede sqlplus-Sitzung anzeigen? Jede Hilfe wird sehr geschätzt!

17

Schauen Sie sich diesen an (c) Tanel Poder . Sie können es entweder über Ihre glogin.sql ausführen (diese Einstellungen werden bei jeder Verbindung aktualisiert, oder Sie führen es einfach manuell aus. Beachten Sie den Befehl Host title - er ändert den Titel Ihres SQL * plus-Konsolenfensters mit Sitzungsinformationen - extrem nützlich bei vielen gleichzeitig geöffneten Fenstern.

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

Beispielausgabe:

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
7
be here now
show user

benutzer verbunden zu werden

 select instance_name from v$instance

um eine Instanz zu erhalten oder in sqlplus zu setzen

set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
24
igr

Ich weiß, dass dies eine alte Frage ist, aber ich habe alle oben genannten Antworten ausprobiert, aber in meinem Fall nicht funktioniert. Was mir letztendlich geholfen hat, ist

SHOW PARAMETER instance_name

17
rajesh
select sys_context('USERENV','INSTANCE_NAME') from dual;

&

select instance_name from v$instance;

gibt Ihnen den Instanznamen. Sie können auch select * from global_name;, um den globalen Namen der Instanz anzuzeigen.

7
Saurabh Tyagi

Versuchen:

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

Das könnte Sie auch interessieren dieser AskTom-Beitrag

Nachdem Sie Ihren Kommentar gesehen haben, können Sie Folgendes tun:

SELECT * FROM global_name;
3
A.B.Cade
select * from v$session
where sid = to_number(substr(dbms_session.unique_session_id,1,4),'XXXX')
0

Wir können die Details und den Status von Sitzung von unten abfragen als:

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

Für weitere Informationen: https://ora-data.blogspot.in/2016/11/query-session-details.html

Vielen Dank,

0
Sapna