Oracle作业job没有自动调度起来
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
2024-09-04 广告