熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle作業job沒有自動調度起來

2013-11-13 15:24:55  來源: Oracle 

  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(||asid||||aSERIAL#||); KILL_SID
       kill ||APROCESS||;KILL_PIDASIDASERIAL#ASTATUS   ASCHEMANAMEAUSERNAMEAMACHINEOSUSERAPROCESSAPROGRAMATERMINAL
       ASERVICE_NAMEALOGON_TIME AOWNERID
       DSQL_TEXTDSQL_FULLTEXT
from gv$session a v$sql d
where aSQL_ADDRESS=dADDRESS(+)
and (aSCHEMANAME = REPORT or aUSERNAME= REPORT)
and asid=
order by aMACHINE;

  殺進程
)上面的superkill如下
create or replace procedure systemsuperkill(SESSION_ID BINARY_INTEGERSERIAL_NUM

  BINARY_INTEGER) is
begin
   execute immediate alter system disconnect session ||SESSION_ID||||SERIAL_NUM||

  immediate ;
EXCEPTION
   WHEN OTHERS
   THEN
      RAISE;
end superkill;

  ()也可直接 alter system kill session sidserial#;
上面兩個原理都差不多
)重建job
如job: 的重建
begin
  sysdbms_jobisubmit(job =>
                      what => declare
vc_out varchar();
begin
SP_SAP_NEWINCOME_ALL(to_char(SYSDATEyyyymmdd)to_char(SYSDATEyyyymmdd));
pkg_dic_day_report_Dic_day_all_report_(to_char(SYSDATEyyyymmdd));
pkg_dic_day_report_DiC_Day_Move_Busi(vc_outto_char(SYSDATEyyyymmdd));
pkg_dic_day_report_DiC_Pst_YW(vc_outto_char(SYSDATEyyyymmdd));
end;
                      next_date => trunc(SYSDATE)++/
                      interval => trunc(SYSDATE)++/);
  commit;
end;
/

  第二天檢查兩job都已正常自動調度


From:http://tw.wingwit.com/Article/program/Oracle/201311/16661.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.