زمانی که 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