oracle查询Scheduler Job

发布时间:2020-01-16 00:00:00

Oracle的Scheduler不仅仅可以提供自动运行本地Oracle程序单元(包括PL/SQL匿名块,PL/SQL存储过程,JAVA存储过程),还可以运行Oracle数据库之外的本地或者远程服务器上的可以执行程序,例如应用,shell脚本或者批处理文件。

对于Scheduler的定义方式,Oracle提供了以下三种方式:

1.基于时间(Time-based scheduling)的日程

这种方式就是我们最常见到的,功能类似于anacron的定义方式,它可以通过指定一段时间,甚至永久的日程,来重复的在指定的时间点完成某项特定的任务。

2.基于事件(Events-based scheduling)的日程

可以在发生系统事件或者业务事件的时候,对它们进行回应来触发相关的计划任务,就像触发器,满足特定条件,或者发生指定事件,就可以触发相关的任务。这也是通过anacron没有办法完成的一种强大功能。

3.独立(Dependency scheduling)日程

这一类的日程是可以通过上一件日程的完成来触发的,上一次的Job完成之后,则会触发下一个Job,这样就形成了一条“作业链”(Job Chain),需要和基于事件的日程区分的是,系统事件和业务事件并不是一丁是之前的Job。

检查job经常使用的视图:

*_SCHEDULER_RUNNING_JOBS:描述正在运行的Job的相关信息

*_SCHEDULER_JOB_RUN_DETAILS:描述已经完成的Job是否成功,记录相关日志的视图,这里记录着所有已经执行完毕的日程

*_SCHEDULER_SCHEDULES:描述当前数据库所有已知的日程。

*_SCHEDULER_PROGRAMS:描述当前数据库已经定义完毕的程序。

*_SCHEDULER_JOBS:描述当前数据库已经定义完毕的作业。

要看系统中Job的信息与执行后状态,可以使用以下SQL

查询scheduler job信息

Selectschedule_name,start_date,repeat_interval,end_date from dba_scheduler_schedules;

查询scheduler job运行状态

selectlog_id,log_date,status,additional_info from dba_scheduler_job_run_details;

selectjob_name,job_creator,program_name,schedule_name,to_char(start_date,'yyyy-mm-ddhh24:mi:ss'),state from dba_scheduler_jobs;


<<