زمانی که sessionای را در اوراکل kill می کنیم، به صورت پیش فرض آن session در حالت SOFTء، kill خواهد شد:
SQL> ALTER SYSTEM KILL SESSION '1025,44801'; System altered.
جزییات اجرای این دستور را می توانیم در Alert Log ببنیم:
2023-12-19T13:32:18.731476+03:30 (4):A user has terminated a session. KILL SESSION for sid=(1025, 44801): Reason = alter system kill session Mode = KILL SOFT -/-/-/- Requestor = USER (orapid = 55, ospid = 3267554, inst = 1) User = oracle Program = sqlplus@OEL8 (TNS V1-V3) Owner = Process: USER (orapid = 75, ospid = 3268895) User = 462710969 Program = plsqldev.exe Result = ORA-0
برای kill کردن session در حالت HARD می توانیم عبارت immediate را به انتهای دستور اضافه کنیم:
SQL> ALTER SYSTEM KILL SESSION '1025,43030' IMMEDIATE; System altered.
مجددا با کمک Alert Log جزییات اجرای این دستور را هم خواهیم دید:
2023-12-19T13:33:07.749571+03:30 (4):A user has terminated a session. KILL SESSION for sid=(1025, 43030): Reason = alter system kill session Mode = KILL HARD SAFE -/-/-/- Requestor = USER (orapid = 55, ospid = 3267554, inst = 1) User = oracle Program = sqlplus@OEL8 (TNS V1-V3) Owner = Process: USER (orapid = 75, ospid = 3268940) User = 462710969 Program = plsqldev.exe Result = ORA-0
در نسخه 23c اوراکل Hidden Parameterای به نام kill_session_force_ را اضافه کرده است که می توان از طریق آن، این رفتار پیش فرض را تغییر داد:
set linesize 1000 col Parameter format a20 col Session_Value format a14 col Instance_Value format a15 col DESC format a40 SQL> select * from (SELECT a.ksppinm "Parameter", b.ksppstvl "Session_Value", c.ksppstvl "Instance_Value", a.KSPPDESC "DESC" FROM x$ksppi a, x$ksppcv b, x$ksppsv c WHERE a.indx = b.indx AND a.indx = c.indx AND a.ksppinm LIKE '/_%' escape '/') where "Parameter" like '%_kill_session_force%' order by 1; Parameter Session_Value Instance_Value DESC -------------------- -------------- --------------- ---------------------------------------- _kill_session_force FALSE FALSE override session kill default to force
SQL> alter system set "_kill_session_force"=true; System altered.
با اجرای مجدد دستور kill session، پی به این تغییر رفتار اوراکل خواهیم برد:
SQL> ALTER SYSTEM KILL SESSION '42,18441'; System altered.
2023-12-19T13:34:13.705625+03:30 (4):A user has terminated a session. KILL SESSION for sid=(42, 18441): Reason = alter system kill session Mode = KILL HARD FORCE -/-/-/- Requestor = USER (orapid = 55, ospid = 3267554, inst = 1) User = oracle Program = sqlplus@OEL8 (TNS V1-V3) Owner = Process: USER (orapid = 74, ospid = 3268970) User = 462710969 Program = plsqldev.exe Result = ORA-0