Niedawno zacząłem pracować nad bazami danych Oracle. Generalnie mam wiele okien sqlplus otwartych dla różnych baz danych oracle. Czy podczas przełączania z jednej sesji sqlplus na drugą można wyświetlić szczegóły bieżącej sesji dla każdej sesji sqlplus? Każda pomoc jest bardzo cenna!sqlplus, jak znaleźć szczegóły aktualnie połączonej sesji bazy danych
Odpowiedz
Spójrz na ten jeden (c) Tanel Poder
. Możesz uruchomić go z glogin.sql (więc te ustawienia będą aktualizowane za każdym razem, gdy się połączysz, lub po prostu uruchom je ręcznie) Uwaga: Polecenie host title
- zmienia twoje sql * oraz tytuł okna konsoli z informacjami o sesji - niezwykle przydatne przy otwartych wielu oknach . jednocześnie
-- 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
Przykładowe wyjście.
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
dzięki, robi doskonałą robotę, zmieniając tytuły okien. Teraz mogę po prostu wybrać odpowiednie okno sqlplus z paska zadań Windows. –
select * from v$session
where sid = to_number(substr(dbms_session.unique_session_id,1,4),'XXXX')
wybierz sid z v $ mystat gdzie rownum = 1?;) –
show user
dostać podłączony użytkownik
select instance_name from v$instance
uzyskać instancję lub ustawić w sqlplus
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
Spróbuj:
select * from v$session where sid = SYS_CONTEXT('USERENV','SID');
Możesz być także zainteresowany this AskTom post
Po obejrzeniu Twojego komentarza, można zrobić:
SELECT * FROM global_name;
dziękuję cade, ale myślę, że najlepszą odpowiedzią jest "bądź tu teraz", zobacz mój komentarz. dzięki jeszcze raz! –
wiem, że to jest stare pytanie, ale ja próbowałem wszystkie powyższe odpowiedzi, ale nie działał w moim przypadku co ostatecznie pomogło mi to
SHOW PARAMETER instance_name
To jest prosta, poprawna odpowiedź. – udog
select sys_context('USERENV','INSTANCE_NAME') from dual;
&
select instance_name from v$instance;
daje nazwę instancji. Można również użyć select * from global_name;
, aby wyświetlić globalną nazwę instancji.
Podejście "SHOW PARAMETER" wymaga dostępu do zapytania do 'v $ instance', ale to podejście' SYS_CONTEXT' nie działa. (+) – durette
możemy uzyskać szczegóły i status session od dołu zapytania jak:
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'
/
Szczegółowe informacje: https://ora-data.blogspot.in/2016/11/query-session-details.html
Dzięki,
okazało się, że za pomocą sys_context funkcję [LINK] (http : //docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#g1513460) np .: wybierz sys_context ('USERENV', 'db_name') z dual; lub bardziej prosto z v $ view ... wybierz nazwę z bazy danych v $; Myślę, że widoki v $ są zwykle ograniczone do DBAs, dlatego sys_context będzie najlepszą opcją. –
Jeśli jest to, czego chcesz, możesz zrobić "wybierz * z global_name" –