数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2021年12月09日
 
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(||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都已正常自动调度

上一篇:oracle11gbug:修改问题

下一篇:oracle9i新特性概要