Query sessioni SID Oracle
Query per recuperare informazioni sulle sessioni Oracle avendo il SID della sessione.
Con l’articolo Query sessioni SID Oracle, possiamo intercettare informazioni relative a una sessione attraverso il SID (Serial ID).
Questa query è da me molto utilizzata quando devo effettuare analisi di sessioni che stanno creando problemi, quindi se dobbiamo individuare per esempio una sessione che sta generando LOCK, una volta individuato il SID, possiamo acquisire ulteriori informazioni dalla query riportata in calce.
Possiamo individuare l’orario in cui si è connessa la sessione e l’orario in cui è stata effettuata l’ultima chiamata dello statement.
Inoltre possiamo recuperare da quale istanza proviene la sessione, nel caso in cui state lavorando su un RAC.
Viene recuperato l’SQL_ID della sessione, ossia il codice identificato di un qualsiasi statement che viene eseguito nel databasse.
Oltre al processo del sistema operativo, il programma da cui proviene la sessione e lo schema, abbiamo 3 codici fondamentali:
Il SID della sessione, il quale senza il SERIAL non indicherebbe l’univocità della sessione e lo SPID ossia il processo del sistema operativo legato alla sessione.
Infine altre informazioni relative all’utente del DB e dell’OS e al comando eseguito.
Vediamo di seguito il dettaglio di ogni campo richiamato dalla query.
Nella nostra query selezioniamo i campi:
LOGON_TIME – Indica l’orario in cui è iniziata la sessione.
STATUS – Lo stato della sessione se ACTIVE o INACTIVE.
INST_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.
Query sessioni SID 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 prendere le informazioni che abbiamo selezionato,
gli passiamo la condizione
SID=il numero del SID della sessione Oracle.
Query sessioni SID Oracle:
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, p.pid, 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.sid =&sid;
- KILL sessioni UTENTE Oracle
- Query disconnect session Oracle
- Query per eseguire la disconnect di una sessione per SID
- KILL sessioni UTENTE Oracle su RAC
- Query LOCK e numero sessioni Oracle
- Query per individuare le sessioni bloccate da un’altra sessione
- Query sessioni Oracle di un utente
- Query sessioni processi transazioni cursori Oracle
- Query sessioni detentrici di LOCK
- Query sessioni Oracle recuperate dalla DATA
Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL
Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin
Per qualsiasi dubbio non esitate a commentare l’articolo.
0 commenti