Убить зависший JOB

Когда JOB работает с dblink ом бывает что завиает намертво. Сессия не обрывается.

В этом случае поможет команда ALTER SYSTEM DISCONNECT SESSION ‘sid,serial#’ IMMEDIATE;

Например такой костыль находить сессию с действием JOB_P_R_TOTAL и отключает его.

create or replace procedure P_R_KILL_JOB as
begin
for cur in (select v.SID, v.SERIAL# from v$session v where v.ACTION='JOB_P_R_TOTAL') loop
begin
execute immediate 'ALTER SYSTEM DISCONNECT SESSION '''||cur.sid||','||cur.serial#||''' IMMEDIATE';
exception when others then null;
end;
end loop;
end P_R_KILL_JOB;
/

теперь можно добавить в планировщик заданий

begin
dbms_scheduler.create_job(job_name => 'JOB_P_R_KILL_JOB',
job_type => 'STORED_PROCEDURE',
job_action => 'P_R_KILL_JOB',
repeat_interval => 'FREQ=DAILY;INTERVAL=1;BYHOUR=7;BYMINUTE=30',
enabled => true,
auto_drop => false);
end;