Layer 06

Chiudere forzatamente una sessione in Oracle – kill session

visualizzare le interrogazioni attive realtime. Questa volta vediamo come killare o terminare forzatamente quelle sessioni attive che ci danno dei problemi. Il comando da utilizzare in una sessione SQL è questo:

SQL> ALTER SYSTEM KILL SESSION ‘sid,serial#’; SQL> ALTER SYSTEM KILL SESSION ‘sid,serial#’ IMMEDIATE;
SQL> ALTER SYSTEM DISCONNECT SESSION ‘sid,serial#’ POST_TRANSACTION; SQL> ALTER SYSTEM DISCONNECT SESSION ‘sid,serial#’ IMMEDIATE;
Viene declinato in 2 modi per un semplice motivo,  con KILL viene chiesto alla stessa sessione di chiudersi, purtroppo non sempre viene percepita dalla sessione soprattuto se la sessione sta elaborando un mole di dati elevata per le prestazione di Oracle, con DISCONNECT viene detto ad Oracle di chiudere la sessione indicata. I due parametri sid e serial li dobbiamo estrarre da un SQL come questo:
SELECT s.sid, s.serial#, s.machine, s.osuser, s.program, o.user_name, o.sql_text FROM gv$session s, gv$process p , gv$open_cursor o where p.addr = s.paddr AND p.inst_id = s.inst_id and s.type != ‘BACKGROUND’ and o.saddr=s.saddr and o.sid=s.sid and o.hash_value=s.sql_hash_value
Le prime due colonne saranno i nostri parametri di riferimento.]]>