Oracle: Kill the killed

Adatbázisokkal kapcsolatos cikkek / Oracle (3105 katt)

Az Oracle adatbázis használata során találkoztam azzal a problémával, hogy egy, az ALTER SYSTEM KILL SESSION 'sid,serial#,@inst_id'; utasítással leállított session ott maradt hosszabb ideig KILLED statusban. Ez gondot okozhat, ha az adott folyamat a lelövés ellenére sem engedett el valamilyen erőforrást.

Némi keresgélés után rátaláltam az orakill.exe programra, amely az Oracle bin könyvtárában található, és le lehet vele lőni az ilyen beragadt folyamatokat.

Ennek a leírása a következő volt:

orakill.exe

Usage: orakill sid thread

where sid = the Oracle instance to target
thread = the thread id of the thread to kill

The thread id should be retrieved from the spid column of a query such as:

select spid, osuser, s.program from
v$process p, v$session s where p.addr=s.paddr



Tovább lehet alakítani a fenti lekérdezést, figyelembe véve az Oracle RAC esetét is:

select s.inst_id,
p.spid,
s.sid,
s.osuser,
s.program
from gv$process p,
gv$session s
where p.inst_id = s.inst_id
and p.addr = s.paddr
and s.program = 'keszlet.exe'
and s.status = 'KILLED';



Példa a parancssorból történő futtatásra, miután az előző lekérdezés segítségével meghatároztuk a spid-et:

orakill.exe orarac1 6096



További infók:

https://www.oraclenext.com/2015/06/killing-process-using-orakillexe-on.html

https://oracle-base.com/articles/misc/killing-oracle-sessions

Előző oldal Kapitány