查询任务管理:Oracle Job状态查询(oraclejob状态)
查询任务管理:Oracle Job状态查询
可以使用Oracle数据库来管理任务,也就是实现作业(jobs)管理。通过 Oracle 内置库来创建,修改和管理作业,可以让用户定义和执行任务,调用对应程序或批处理文件,实现定时调度和监控批处理任务等功能。此外,用户需要定时查询作业的状态,以保证任务正常运行。
在 Oracle 中,要查询一个作业的状态,最简单的方式是使用 DBMS_JOBS 包中的 view,即dba_jobs_running,该视图只显示正在运行的 job。其结构如下:
-JOB : job 的唯一标识
-SCHEMA_USER : 该 job 所属的 Schema 用户
-OWNER :job 所属的 Oracle 用户
-WHAT : 该 job 启动的程序或 SQL 语句
-NEXT_DATE : 下一次启动时间
-INTERVAL : 执行间隔
要用这个视图来查询特定 job 的状态,除了,可以使用如下SQL语句:
SELECT * from dba_jobs_running WHERE job=jobID;
其中 jobID 为作业标识,如果正常查询,此时返回的结果集中有一条记录,并且status字段为 RUNNING,表示该 job 正在运行中。
另外,启动,终止和状态查询的工作也可以使用 DBMS_SCHEDULER 包来完成,只需要加载 DBMS_SCHEDULER 并调用其存储过程 execute。
例如要查看一个 job 的状态,可以执行:
BEGIN
DBMS_SCHEDULER.set_attribute(
name =>’job_name’,
attribute => ‘logging_level’,
value => DBMS_SCHEDULER.LOGGING_OFF);
DBMS_SCHEDULER.execute (‘job_name’);
DBMS_OUTPUT.put_line (‘job status:’||DBMS_SCHEDULER.state (‘job_name’));
END;
使用 DBMS_SCHEDULER 时,返回的状态可能是 RUNNING、COMPLETED、SCHEDULED 等几种,其中 RUNNING 表示 job 正在运行中,COMPLETED 表示操作完成,SCHEDULED 表示任务正在排队中等待运行。
总的来说,就 Oracle Job 状态查询而言,可以采用以上两种方式,即使用 dba_jobs_running 视图查询 job 状态,也可以使用 DBMS_SCHEDULER 来查询 job 运行状态。前者的效率更高,但它只能显示当前正在运行的 job,而后者可以查询较多的 job 状态,但实施起来需要较多的编码步骤。