--结合睡眠函数和for循环构造一个执行时间稍长的plsql
BEGIN
FOR i IN 1..10 LOOP
put_line(i||' '||to_char(sysdate,'yyyy-MM-dd HH:mm:ss'))
dbms_lock.sleep(10)
END loop
END
这条命令会显示session id和PLSQL语句,使用者需要从中找到自己想要终止的PLSQL的session id;
> PS PLSQL;
f87ef49d-5d4d-437e-a066-de2b58799239 : BEGIN
FOR i IN 1..10 LOOP
put_line(i||' '||to_char(sysdate,'yyyy-MM-dd HH:mm:ss'))
dbms_lock.sleep(10)
END loop
END
第一行的f87ef49d-5d4d-437e-a066-de2b58799239,就是\<SESSION_ID>
这条命令会发送一个终止信号给该session id中的PLSQL进程,待该进程下一次自检之时,发现有终止信号,则会结束自己;
-- KILL PLSQL ;
> kill PLSQL f87ef49d-5d4d-437e-a066-de2b58799239;
对应的plsql语句会抛出异常,EXECUTION FAILED: Task EXEC PLSQL error HiveException: [Error 40000] PLSQL process being killed.

自检是借鉴了操作系统中进程调度的思想。自检的粒度为一条PLSQL语句,也就是说每执行一条PLSQL语句会自检一次(也就是被OS调度一次)。所以如果有一条SQL语句执行时间特别长,那么KILL该进程后并不会马上生效,需要等到该SQL语句执行完毕才会发生自检并终止。这种情况如果确定要终止该进程,可到inceptor的4040页面去kill掉当前的SQL,这样外层PLSQL就会立即终止。
--结合睡眠函数和for循环构造一个执行时间稍长的plsql
BEGIN
FOR i IN 1..10 LOOP
put_line(i||' '||to_char(sysdate,'yyyy-MM-dd HH:mm:ss'))
dbms_lock.sleep(10)
END loop
END
这条命令会显示session id和PLSQL语句,使用者需要从中找到自己想要终止的PLSQL的session id;
> PS PLSQL;
f87ef49d-5d4d-437e-a066-de2b58799239 : BEGIN
FOR i IN 1..10 LOOP
put_line(i||' '||to_char(sysdate,'yyyy-MM-dd HH:mm:ss'))
dbms_lock.sleep(10)
END loop
END
第一行的f87ef49d-5d4d-437e-a066-de2b58799239,就是\<SESSION_ID>
这条命令会发送一个终止信号给该session id中的PLSQL进程,待该进程下一次自检之时,发现有终止信号,则会结束自己;
-- KILL PLSQL ;
> kill PLSQL f87ef49d-5d4d-437e-a066-de2b58799239;
对应的plsql语句会抛出异常,EXECUTION FAILED: Task EXEC PLSQL error HiveException: [Error 40000] PLSQL process being killed.

自检是借鉴了操作系统中进程调度的思想。自检的粒度为一条PLSQL语句,也就是说每执行一条PLSQL语句会自检一次(也就是被OS调度一次)。所以如果有一条SQL语句执行时间特别长,那么KILL该进程后并不会马上生效,需要等到该SQL语句执行完毕才会发生自检并终止。这种情况如果确定要终止该进程,可到inceptor的4040页面去kill掉当前的SQL,这样外层PLSQL就会立即终止。