oracle里的job和schedule有什么区别

如题所述

10g
中新推出的SCHEDULER可能确实会让很多初接触的朋友感觉晕头晕脑,相比之前的jobs,SCHEDULER中新增的概念太多。比如说jobs,仍
然可以理解成之前版本中的jobs,不过功能更加强大(注意10g中也仍然可以使用普通jobs,这是废话,相信看本篇文章的朋友目前应该还是这样在
用),比如说program,指的是运行的程序(把要做什么单提出来了),比如说schedule,我将其翻译为调度(job我翻译为任务),定义执行的
频率或者说周期。
3.1 创建和管理Schedule s
  Schedule ,中文直译的话应该理解成调度,从名字来看,它是一个逻辑实体(逻辑,还实体,好矛盾),就是说当创建了schedule之后,数据库中就肯定存在这一对象,只不过这一对象是用来描述job的执行周期。
  创建schedule可以通过DBMS_SCHEDULER.CREATE_SCHEDULE过程,该过程支持的参数如下:
SQL>
desc dbms_scheduler.create_schedule;Parameter
Type Mode Default? ---------------
------------------------ ---- -------- SCHEDULE_NAME
VARCHAR2 IN START_DATE TIMESTAMP WITH
TIME ZONE IN Y REPEAT_INTERVAL VARCHAR2
IN END_DATE TIMESTAMP WITH TIME ZONE IN Y
COMMENTS VARCHAR2 IN Y
  各参数分别代表含意如下:
SCHEDULE_NAME :指定schedule名称,注意名称不能重复。

START_DATE :指定该调度的开始时间,可为空,当为空时表示该调度暂不起用。

REPEAT_INTERVAL :指定调度的执行频率或周期。

END_DATE :指定调度的结束时间,可为空,为空时就表示该调度将一直进行。

COMMENTS :注释信息。
 
 这其中,比较有技术含量的是REPEAT_INTERVAL参数,对于这个参数大家应该不会太陌生,因为前面介绍Jobs,也曾经提到过同名的参
数,Schedules中的REPEAT_INTERVAL参数和Jobs中的REPEAT_INTERVAL参数功能完全相同,甚至参数格式也一模一
样。
  REPEAT_INTERVAL 参数的语法结构要复杂的多。其中最重要的是FREQ和INTERVAL两个关键字。
FREQ 关键字用来指定间隔的时间周期,可选参数有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分别表示年、月、周、日、时、分、秒等单位。

INTERVAL 关键字用来指定间隔的频繁,可指定的值的范围从1-99。
  比如说,当指定REPEAT_INTERVAL=>'FREQ=DAILY;INTERVAL=1';就表示每天执行一次,如果将INTERVAL改为7就表示每7天执行一次,效果等同于FREQ=WEEKLY;INTERVAL=1。
  下面,创建一个schedule,指定调度为每周一次的频率,执行脚本如下:
SQL>
begin 2 DBMS_SCHEDULER.CREATE_SCHEDULE ( 3 schedule_name
=> 'my_first_schedule', 4 start_date => SYSDATE, 5
repeat_interval => 'FREQ=WEEKLY; INTERVAL=1', 6
comments => 'Every 1 weeks'); 7 END; 8 /PL/SQL procedure
successfully completed.
  查询当前已经创建的schedules,可以通过*_SCHEDULER_SCHEDULES视图(含DBA_,ALL_,USER_),例如,查看当前用户拥有的schedules,执行语句如下:
SQL>
select schedule_name,repeat_interval from
user_scheduler_schedules;SCHEDULE_NAME
REPEAT_INTERVAL------------------------------
------------------------------MY_FIRST_SCHEDULE
FREQ=WEEKLY; INTERVAL=1
  如果要修改schedule属性的话,也是使用
DBMS_SCHEDULER.SET_ATTRIBUTE过程,该过程的调用方式前面已经多次演示过,这里就不再重复举例了,仅说明一点,对于
schedule来说,能够修改的属性包括:REPEAT_INTERVAL、COMMENTS、END_DATE、START_DATE以及
EVENT_SPEC。
  至于删除schedule,再简单不过,执行DBMS_SCHEDULER.DROP_SCHEDULE过程即可,例如:
SQL> EXEC DBMS_SCHEDULER.DROP_SCHEDULE('MY_FIRST_SCHEDULE');PL/SQL procedure successfully completed.
温馨提示:内容为网友见解,仅供参考
无其他回答

oracle里的job和schedule有什么区别
二者关系:job就是计划(schedule)加上任务说明,另外还有一些必须的参数。比如有很多个JOB要在相同的时间执行,可以创建一个SCHEDULE,每个JOB 用这个Schedule

oracle里的job和schedule有什么区别
Schedule ,中文直译的话应该理解成调度,从名字来看,它是一个逻辑实体(逻辑,还实体,好矛盾),就是说当创建了schedule之后,数据库中就肯定存在这一对象,只不过这一对象是用来描述job的执行周期。创建schedule可以通过DBMS_SCHEDULER.CREATE_SCHEDULE过程,该过程支持的参数如下:SQL> desc dbms_scheduler...

oracle里的job和schedule有什么区别
当然是用schedule更好, schedule的功能强大的多, 你如果是第一次用这个, 建议装个pl\/sql developer, 在这里面新建schedule, 会让你很快上手, 一开始就直接写语句, 容易让人发晕, 而且pl\/sql developer里面新建, 修改, 删除等操作都可以看到对应的语句, 这样学习起来效果很好.等基本玩熟之后, 再云找...

oracle的作业计划job或scheduler会重复执行么?同一作业还有在运行的...
Schedules -- 指定何时何种频率来运行job,可以被不同的job重复的利用。比如说我有两个job都要求在每天的凌晨4点运行,那么两个job可以同时指定相同的schedule。Jobs -- 具体的作业的名称,依赖于那个program、schedule。也可以不指定program、schedule,而直接写入program、schedule的相应参数。Chains -- 把...

Oracle 11g上定义了job跟schedule,却没按时跑job,请问是什么原因
二者关系:job就是计划(schedule)加上任务说明,另外还有一些必须的参数。 比如有很多个JOB要在相同的时间执行,可以创建一个SCHEDULE,每个JOB 用这个Schedule

ORACLE的Job是否有日志,如果有如何查看OR
如果是dbms_job,那么不好意思,本身好象没有,只能去dba_jobs表中查看执行结果。或者执行时查看dba_job_running。如果是schedule_job那么是有的,也是一个视图就是dba_scheduler_job_log,这里记载这每次的执行的开始时间,结束时间,执行结果。

如何在Oracle中管理计划任务
Oracle 在10g 版本以前,计划任务用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER来替代先前的DBMS_JOB,在功能方面,它比DBMS_JOB 提供了更强大的功能和更灵活的机制管理,但DBMS_JOB 包的使用相对比较简单,也基本能够满足定时执行计划任务的需求,故接下来就先看看DBMS_JOB 包的使用方法。1. DBMS_JOB...

oracle,查询语句,大神翻译一下
(1)sys那张表:查询dba系统权限视图,里面主要是用户,和这个用户拥有什么系统权限。(2)tab那张表:dba表权限视图,比如A用户可以在B用户某张表里面查询,插入等。(3)role那张表:dba角色权限视图,某个用户被授予了什么角色。比如A用户拥有DBA橘色权限等。(4)users,dba用户视图,这里有所有用户...

oracle数据库中怎么看job跑没跑完?
dba_jobs_running,这张表内没有一般就是跑完了。可以查一下dba_jobs看一下最后运行时间确认。当然要是schedule-job那么在这张表内是查不到的,要去dba_scheduler_jobs里面查。还有一个 user_scheduler_job_run_details这里可以查询scheduler_job的运行情况。

oracle job 每月的5,10,15,20 ,25,30执行 如何写dbms_job.submit(v_jo...
思路转换:你可以每天的6点10分进行作业调度,然后在作业调度里判断是不是每月的 5,10,15,20 ,25,30,如果是就执行,不是就退出。这个比较简单吧。

相似回答