Oracle12cR2之Job定时作业调度器详解

本文详细介绍了Oracle12cR2中Job定时作业调度器的使用方法,包括创建Job、设置调度、监控执行状态以及查看相关视图SYS.DBA_JOBS的字段含义。
摘要由CSDN通过智能技术生成

Oracle12cR2之Job定时作业调度器详解

1.Oracle Job

1. 关于Job

在 Oracle 12c 中,“job” 通常指的是使用 Oracle 作业调度器(Oracle Scheduler)创建和管理的作业。Oracle Scheduler 是一个强大的工具,用于执行各种任务,例如存储过程、PL/SQL 程序、shell 脚本、操作系统命令等,可以按照指定的时间表定期运行这些任务。Oracle 12c 中的作业调度器功能非常强大,可以帮助你管理和执行各种任务,并通过灵活的配置选项来满足不同的需求。

以下是 Oracle 12c 中关于作业调度器的详细介绍及使用方法:

2. 使用方法

  1. 创建作业:
    在 Oracle 12c 中,你可以使用 DBMS_SCHEDULER 包中的过程来创建作业。例如,你可以使用 CREATE_JOB 过程来定义一个新的作业。创建作业时,你需要指定作业的名称、作业类型(作为存储过程、PL/SQL 程序等)、作业的调度时间等信息。
  2. 定义作业:
    通过定义作业的属性,如重复时间间隔、优先级、准备状态等,来为作业添加更多细节信息和定制化选项。
  3. 启动作业:
    一旦作业被定义和配置完成,你可以手动或自动的方式启动作业来运行。你可以通过调用 DBMS_SCHEDULER 包中的 RUN_JOB 过程来手动启动一个作业。
  4. 监控作业:
    Oracle 提供了一些视图和查询语句来监控作业的执行情况,例如通过查询 DBA_SCHEDULER_JOB_RUN_DETAILS 视图来查看作业运行的详细信息,或者通过 DBMS_SCHEDULER 包中的 GET_JOB_LOG 方法来获取作业的日志信息。
  5. 修改和删除作业:
    如果需要修改或删除作业,你可以使用 ALTER_JOB 和 DROP_JOB 过程来进行相关操作。

2. Job详细说明

1. 查看Job的相关视图

select * from dba_jobs;
select * from all_jobs;
--All jobs owned by this user
select * from user_jobs;

2.SYS.DBA_JOBS视图字段详细说明

dba_jobsall_jobsuser_jobs视图都是基于SYS.DBA_JOBS定义的同义词,如下

create public synonym DBA_JOBS for SYS.DBA_JOBS
create public synonym ALL_JOBS for SYS.USER_JOBS
create public synonym USER_JOBS for SYS.USER_JOBS
字段类型官方描述注释
JOBnumberIdentifier of job. Neither import/export nor repeated executions change it.作业的标识符。无论是导入/导出还是重复执行都不会改变它。
LOG_USERvarchar2(128)USER who was logged in when the job was submitted提交作业时登录的用户
PRIV_USERvarchar2(128)USER whose default privileges apply to this job默认权限适用于此作业的USER
SCHEMA_USERvarchar2(128)select * from bar means select * from schema_user.barselectfrom bar表示从schema_ser.bar中选择
LAST_DATEdate(yyyy-MM-dd HH:mm:ss)Date that this job last successfully executed上次成功执行此作业的日期
LAST_SECvarchar2(8)Same as LAST_DATE. This is when the last successful execution started.与LAST_DATE相同。这是最后一次成功执行的开始时间。
THIS_DATEdate(yyyy-MM-dd HH:mm:ss)Same as THIS_DATE. This is when the last successful execution started.与THIS_DATE相同。这是最后一次成功执行的开始时间。
NEXT_DATEdate(yyyy-MM-dd HH:mm:ss)Date that this job will next be executed下一次执行此作业的日期
NEXT_SECvarchar2(8)Same as NEXT_DATE. The job becomes due for execution at this time.与NEXT_DATE相同。此时作业将到期执行。
TOTAL_TIMEnumberTotal wallclock time spent by the system on this job, in seconds系统在此作业上花费的墙时钟总时间(秒)
BROKENvarchar2(1)If Y, no attempt is being made to run this job. See dbms_jobq.broken(job).如果是,则表示没有尝试运行此作业。请参阅dbms_jobq.breaked(job)。
INTERVALvarchar2(200)A date function, evaluated at the start of execution, becomes next NEXT_DATE在执行开始时评估的日期函数将成为下一个next_date
FAILURESnumberHow many times has this job started and failed since its last success?自上次成功以来,这项工作已经开始和失败了多少次?
WHATvarchar2(4000)Body of the anonymous PL/SQL block that this job executes此作业执行的匿名PL/SQL块的主体
NLS_ENVvarchar2(4000)alter session parameters describing the NLS environment of the job更改描述作业的NLS环境的会话参数
MISC_ENVrawa versioned raw maintained by the kernel, for other session parameters内核为其他会话参数维护的版本化原始
INSTANCEnumberInstance number restricted to run the job限制运行作业的实例数

3. 创建及查看Job

1. 创建Job


declare
    variable jobSeq number;
begin
    sys.dbms_job.submit(job => jobSeq,
    what => 'functionName or procedureName;',           --需要定时执行的函数或存储过程的名字
    next_date => sysdate,
    interval =>'trunc(sysdate,''mi'')+1/(24*60)')');       --每分钟执行一次
    commit;
end;

2. 查看运行中的Job

注意:必须使用oracle的sys用户登录到数据库,才能查看dba_jobs_running, v p r o c e s s , v process, v process,vsession表的信息

select * from dba_jobs_running;
  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值