Query per vedere i dettagli di una sessione Oracle di un utente

Query per vedere i dettagli di una sessione Oracle di un utente

.

Nel caso abbiamo la necessità di controllare le sessioni di utente Oracle,
con la seguente query,
ricaviamo molte informazioni richieste.

Le prime righe riguardano la formattazione delle tabelle,
per avere una visuale accettabile.

I campi che andremo a selezionare sono:

LOGON TIME: indica l’orariov in cui è iniziata la sessione
STATUS – Lo stato della sessione se ACTIVE o INACTIVE.
IST_ID – Nel caso di un RAC (Real Application Cluster), il numero dell’istanza dove è presente la sessione.
SQL_ID – Il codice identificativo della query.
PROCESS – Il processo del sistema operativo.
PROGRAM – Il client che state utilizzando (Toad, SQL Developer)
SCHEMANAME – L’utente con è partita la sessione Oracle.
SID – Il codice identificativo della sessione Oracle.
SERIAL# – Il codice seriale univoco di una sessione Oracle.
SPID – Processo del sistema operativo legato alla sessione Oracle.
OSUSER – L’utente del sistema operativo con cui è partita la sessione Oracle.
MACHINE – Il nome del client da dove parte la sessione Oracle.
TERMINAL – Il nome del sistema operativo da dove parte la sessione Oracle.
LAST_CALL_ET – L’orario in cui la sessione ha cambiato stato da ACTIVE a INACTIVE e vice versa.
USERNAME – Nome dell’utente Oracle.
COMMAND – Il comando che è stato eseguito sul database Oracle.

Per estrapolare queste informazioni dal database Oracle, abbiamo messo in relazione tre tabelle:

GV$SESSION
GV$PROCESS
DBA_USERS

Inoltre nella WHERE condition,
per prima cosa abbiamo messo in relazione le viste
V$PROCESS e
V$SESSION attraverso la JOIN
P.ADDR=S.PADDR
e messo in relazione la vista V$SESSION
con la vista DBA_USERS attraverso la JOIN S.USER#=U.USER_ID.


Infine dopo la relazione delle tabelle V$PROCESS V$SESSION e DBA_USERS, per controllare le informazioni che abbiamo selezionato di un determinato utente,
gli passiamo la condizione
S.USER#=il nome dell’utente.

Sessioni per utente:

Set lines 300
Set pages 60
Col LAST_CALL for a18
Col LOGON_TIME for a18
Col schemaname for a16
Col command for a24
Col machine for a16
Col action for a12
Col username for a16
Col osuser for a16
Col terminal for a16
select to_char(S.logon_time,'DD-MON-YYYY hh24.mi.ss') LOGON_TIME, s.status,s.inst_id,s.sql_id, s.process,s.program, s.schemaname,
s.sid, s.serial#, p.spid, s.osuser, S.machine, S.terminal,to_char(sysdate -(LAST_CALL_ET/86400),'DD-MON-YY hh24:mi:ss') LAST_CALL , 
U.username, S.ACTION, decode(S.command,0, 'No command in progress.', 1, 'CREATE TABLE',2, 'INSERT', 3, 'SELECT', 4, 'CREATE CLUSTER', 5, 'ALTER CLUSTER', 6, 'UPDATE', 7, 'DELETE') COMMAND
 from gv$session S, dba_users U, gv$process P
where P.ADDR = S.PADDR and 
      S.user# = U.user_id and 
      s.schemaname='&user'
order by LOGON_TIME;



  

 

Lascia un commento

Wordpress Social Share Plugin powered by Ultimatelysocial