توقف اجرای دستور یک کاربر(CANCEL SQL)

برای توقف اجرای دستور یک کاربر در اوراکل 11g، می توان از دستور kill session استفاده کرد که سبب خروج کاربر از بانک هم خواهد شد. از اوراکل 12cR2 این قابلیت بوجود امد تا بدون اخراج کاربر از بانک، صرفا دستور در حال اجرای ان کاربر را متوقف نمود.

شکل کلی دستور CANCEL SQL:

ALTER SYSTEM CANCEL SQL ‘SID, SERIAL, @INST_ID, SQL_ID’;

در صورت عدم تعیین inst_id در هنگام اجرای این دستور، instanceای که session در ان در حال اجرا است، به عنوان inst_id لحاظ خواهد شد. همچنین تعیین sql_id هم به صورت اختیاری می باشد.

در مثال زیر session 2 قصد توقف دستور اجرا شده توسط session 1 را دارد.

مشخصات session 1:

select p.SID,p.SERIAL# from v$session p where p.SID in (select sid from v$mystat where rownum<=1);

       SID    SERIAL#

———— ————

      503      813

اجرای دستور بسیار طولانی توسط session 1:

SQL>select count(*) from tbl1;

Running…

توقف این دستور در حال اجرا توسط session 2:

ALTER SYSTEM CANCEL SQL ‘503,813’;

با اجرای این دستور توسط session 2، اجرای دستور توسط session 1 با خطای زیر متوقف خواهد شد:

ORA-01013: user requested cancel of current operation

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *