پارامتر MAX_IDLE_BLOCKER_TIME در اوراکل 19c

با تنظیم پارامتر MAX_IDLE_BLOCKER_TIME می توان sessionای که رکورد(به صورت کلی منبعی را) در اختیار گرفته و در پی آن منجر به block شدن session دیگری شده است را بعد از مدتی زمان مشخصی، kill کرد البته با این شرط که این session(ه blocker) در این مدت زمان، idle باشد.

برای مثال، با اجرای دستور زیر، blocker بعد از آنکه به مدت یک دقیقه در وضعیت idle قرار بگیرد، kill خواهد شد.

SQL> alter system set max_idle_blocker_time=1;

System altered.

مثال :

 

–session 1:

SQL> select sid,serial# from v$session where sid =(select sid from v$mystat where rownum=1);

       SID    SERIAL#

———- ———-

         5      15512

SQL> delete mtbl where file#=1;

1 row deleted.

 

–session 2:

SQL> delete mtbl where file#=1;

Executing…

 

–session 3:

SQL> select * from dba_blockers;

HOLDING_SESSION     CON_ID

————— ———-

              5          0

SQL> select sid,serial#,last_call_et  from v$session where sid =5;

       SID    SERIAL# LAST_CALL_ET

———- ———- ————

         5      15512           90

SQL> /

no rows selected

SQL> select * from dba_blockers;

no rows selected

پیام kill شدن blocker در alert log هم ثبت خواهد شد:

2020-06-29T06:09:35.379265+00:00

KILL SESSION for sid=(5, 15512):

  Reason = max_idle_blocker_time parameter

  Mode = KILL HARD SAFE -/-/NO_REPLAY

  Requestor = PMON (orapid = 2, ospid = 27752, inst = 1)

  Owner = Process: USER (orapid = 64, ospid = 21818)

  Result = ORA-0

 

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

Comment (1)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.