您的位置:首页 > 数据库 > Oracle

【Vegas原创】How to rebuild the inflexible Oracle Job?

2014-05-22 15:51 405 查看
今天很烦人,大早上的,公司MES的好几个Job卡在那了,不能kill,也不能broken,不过最后还是解决了~

出现这种问题,restart是肯定的~

以下是步骤:

0,备份你的job脚本~因为后续要删除job,重建的~

   用PLSQL Developer.具体方法大家都知道。

 

1,先将queue_processes设为0,这样,在第3步kill掉session后,就不会再自己run job了。

SQL>alter system set job_queue_processes=0;
 

2,查出现在正在run的job:

select * from dba_jobs_running order by sid;
 

3,记住上面的sid,打开你的OEM,在会话中,将其kill掉!!!

 

4,restart database~ 实在不行,restart computer ~~

 

5,将queue_processes还原:

SQL>alter system set job_queue_processes=10;
 

6,查询dba_jobs:

select * from dba_jobs;
 

7,分别按步骤6查出的user进入系统,批量删除job:

begin

  for v in(select * from user_jobs) loop

    dbms_job.remove(v.job);

  end loop;

  commit;
end;
 

8,将备份的job脚本修改为如下格式,重建:

declare 

  -- Local variables here
   job1 number(12); 
BEGIN

  

sys.dbms_job.submit( job1,

                       'Proc_Update_WIP_Report;',

                       to_date('01-01-4000', 'dd-mm-yyyy'),

                       'sysdate+5/(24*60)');

  commit;

 

 

  sys.dbms_job.submit( job1,

                       'proc_GetDataForSummaryRpt(to_char(SYSDATE,''yyyy-MM-dd HH24:MI:ss''));',

                       to_date('19-03-2009 16:54:23', 'dd-mm-yyyy hh24:mi:ss'),

                       'sysdate+5/(24*60)');

  commit;

 

  sys.dbms_job.submit( job1,

                       'pc_dailyjob_ForDTMiddleDB(sysdate);',

                       to_date('20-03-2009 08:35:00', 'dd-mm-yyyy hh24:mi:ss'),

                       'TRUNC(SYSDATE+1)+(8*60+35)/(24*60)');

  commit;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: