Oracle作业job没有自动调度起来

如题所述

第1个回答  2022-10-02

  Oracle作业job 没有自动调度起来

  问题 有一同事报过来 说有两个job已经近一周没有自动调起了 让我帮忙解决

   检查 ( )在生产库中检查 其他的job都能自动调度( )select * from all_jobs where job in( ); 检查正常 并无异常 (dba_jobs或PL/SQL Developer DBMS_Jobs 也可查看)( )select * from dba_jobs_running where job in( );  在其列表中结论 进程挂死未完成 导致不能自动调度!

   解决 先备份两job的内容再将job删除 然后将进程杀掉 并重建( )利用上面查出job运行列表中的sid 如 并查出哪些进程需要杀掉 查询语句如下 select call superkill( ||a sid|| ||a SERIAL#|| ); KILL_SID        kill ||A PROCESS|| ; KILL_PID A SID A SERIAL# A STATUS    A SCHEMANAME A USERNAME A MACHINE OSUSER A PROCESS A PROGRAM A TERMINAL        A SERVICE_NAME A LOGON_TIME A OWNERID        D SQL_TEXT D SQL_FULLTEXTfrom gv$session a v$sql dwhere a SQL_ADDRESS=d ADDRESS(+)and (a SCHEMANAME = REPORT or a USERNAME= REPORT )and a sid= order by a MACHINE;

  杀进程 ( )上面的superkill如下 create or replace procedure system superkill(SESSION_ID BINARY_INTEGER SERIAL_NUM

  BINARY_INTEGER) i *** egin   execute immediate alter system disconnect session ||SESSION_ID|| ||SERIAL_NUM||

  immediate ;EXCEPTION   WHEN OTHERS   THEN      RAISE;end superkill;

  ( )也可直接 alter system kill session sid serial# ;上面两个原理都差不多 ( )重建job如job: 的重建 begin  sys dbms_job isubmit(job =>                       what => declarevc_out varchar ( );beginSP_SAP_NEWINE_ALL(to_char(SYSDATE yyyymmdd ) to_char(SYSDATE yyyymmdd ));pkg_dic_day_report_ Dic_day_all_report_ (to_char(SYSDATE yyyymmdd ));pkg_dic_day_report_ DiC_Day_Move_Busi(vc_out to_char(SYSDATE yyyymmdd ));pkg_dic_day_report_ DiC_Pst_YW(vc_out to_char(SYSDATE yyyymmdd ));end;                       next_date => trunc(SYSDATE)+ + /                       interval => trunc(SYSDATE)+ + / );  mit;end;/

lishixinzhi/Article/program/Oracle/201311/16661

相似回答