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"是用于调度和自动化任务执行的一种功能,它允许你在预定义的时间点运行存储过程、PL/SQL块或其他数据库操作。本文将深入探讨Oracle中的JOB创建,以及如何编写和使用相应的脚本来设定定时...
通过"oracle計劃任務學習.doc"文档,你将能够学习到如何设置和管理这些特性,从而更有效地利用Oracle Schedule来提升数据库的运维效率。这份资料将涵盖创建和修改作业的步骤,以及如何根据实际需求定制调度策略。...
8. **高级特性**:Oracle Job还支持作业链(job chains)、依赖关系、计划窗口(schedule windows)和资源管理,允许根据系统负载或优先级来调度作业。 9. **使用DBMS_ALERT**:对于需要在Job完成时通知用户的场景...
下面我们将深入探讨Oracle Job的创建、配置、管理和使用等相关知识点。 1. **Oracle Database Scheduler简介** Oracle Database Scheduler是Oracle 10g及以后版本引入的一个功能强大的任务调度工具,它取代了之前...
- **Job**:Job是由Oracle Scheduler管理的一个可调度的单元,它可以关联到一个程序(Program)和一个调度(Schedule),并且可以在指定的时间点或者周期内执行。 - **Program**:Program是一个存储的过程或块,它定义了...
接下来,我们将通过具体的示例来展示如何使用DBMS_JOB API来管理和操作Oracle定时任务。 ##### 示例1:创建一个新的job ```sql BEGIN DBMS_JOB.SUBMIT ( job => 1, -- job ID what => 'BEGIN MY_PROCEDURE; END...
Oracle Job管理是数据库中用于定时执行任务的一...理解Oracle Job的管理和使用对于数据库管理员来说至关重要,因为它允许自动化许多日常维护任务,如数据备份、表优化或数据清理,从而提高效率并确保数据库的正常运行。
"DB_job.zip_job_oracle"标题暗示了这个压缩包包含与创建、管理和监控Oracle数据库作业相关的资源,特别是通过SQL脚本来实现。 在描述中提到的"设置oracle过程的DB_job",可能是指创建一个数据库作业来定期执行某个...
3. **JOB SCHEDULE**: 定义任务的执行计划,可以是立即执行、周期性执行或按照特定日期和时间执行。例如,可以设置每天的特定时间运行数据备份作业。 4. **ENABLE/DISABLE**: 可以随时启用或禁用Job,以控制其执行...
本文将介绍如何在SQL Server和Oracle中创建job。 在SQL Server中,创建job通常通过SQL Server代理服务(SQL Server Agent)来实现。以下是创建job的基本步骤: 1. 首先确保SQL Server代理服务已启动。在服务管理器...
Oracle Scheduler 是 Oracle 数据库自 10g 版本起引入的一项重要功能,用于管理和调度定时任务。它不仅提供了对传统 Jobs 的替代方案,而且增加了更多高级特性,如复杂的调度规则、事件驱动任务等。本文将详细介绍 ...
在Oracle数据库管理中,定期清理和优化表空间是至关重要的任务,这有助于保持数据库的高效运行和合理利用存储资源。本文将深入探讨如何在Oracle环境中实现定时删除表空间的数据并释放空间,主要涵盖以下几个关键知识...
有了程序和调度后,下一步是创建作业(Job)。作业是指定在某个特定时间或根据某调度执行的程序实例。例如,创建名为 `ARC_MOVE` 的作业,它使用之前定义的 `MOVE_ARCS` 程序,并按照 `EVERY_30_MINS` 调度运行。 `...
知识点: 在 Oracle BIEE 中,需要配置好 Schedule 才可以启动 Oracle BI Schedule 服务。 问题10:Oracle BI Schedule 配置 * 创建计划表 * 在开始菜单打开 Job Manager * 配置 Scheduler/Database、General 标签...
Oracle数据库系统是企业级广泛应用的关系型数据库管理系统,其在数据管理、事务处理和高可用性方面表现出色。本文将深入探讨Oracle中的定时执行计划任务,这是数据库管理员(DBA)进行自动化运维的重要工具。 首先...
DBMS_JOB.SCHEDULE (job_number, 'TO_DATE(''01-JAN-2023 00:00:00'', ''DD-MON-YYYY HH24:MI:SS'') + INTERVAL ''1'' HOUR'); END; / ``` 这里,`my_package.my_procedure`是你想要定时执行的PL/SQL过程。 3...
Oracle的Scheduler是10G版本引入的一个强大工具,旨在管理和调度数据库内的任务,包括执行存储过程、PL/SQL块以及操作系统级别的脚本。DBMS_SCHEDULER包提供了比旧版的DBMS_JOB更多的功能和灵活性,使得数据库管理员...
### Oracle 数据库数据泵的使用 #### 一、数据泵(expdp)的导出模式 数据泵(Data Pump)是Oracle提供的一种高效的数据迁移工具,它可以用来将数据从一个Oracle...掌握这些技巧有助于提高数据库管理的效率和可靠性。
最后,DBMS_JOB.RUN_JOB或DBMS_JOB.SUBMIT_JOB可以用来立即执行作业,而DBMS_JOB.BROKEN和DBMS_JOB.CHANGE可用于暂停、恢复或修改已有的作业。 结合RMAN和DBMS_JOB,DBA可以构建一个自动化、高效且可靠的备份和数据...