一、问题描述
今天有位客户发现自定义JOB长时间没有自动执行,并且无法执行。
报错如下:
代码语言:javascript复制ORA-27478: job "is running"
ORA-06512: at "SYS.DBMS_ISCHED", line 182
ORA-06512: at "SYS.DBMS_SCHEDULER", line 615
ORA-06512: at line 1
二、问题排查
1、通过查询v$session视图确定hang住的会话相关信息;
2、通过dba_jobs_running和dba_scheduler_running_jobs数据字典确定了该job调用方式为Scheduler;
3、查询发现客户反馈的JOB目前处于running,并且长时间Hang住;
代码语言:javascript复制select job_name, session_id, cpu_used
from dba_scheduler_running_jobs
where owner = '***';
三、解决方案
1、强制停止JOB
代码语言:javascript复制begin
dbms_scheduler.stop_job(job_name => 'JOB_NAME', force => TRUE);
end;
2、DISABLE JOB
代码语言:javascript复制begin
dbms_scheduler.disable('JOB_NAME');
end;
3、ENABLE JOB
代码语言:javascript复制begin
dbms_scheduler.enable('JOB_NAME');
end;
4、查看JOB运行情况,已恢复正常
代码语言:javascript复制select *
from Dba_Scheduler_Job_Run_Details
where job_name = 'JOB_NAME'
order by log_date desc;