关于Oracle的Scheduler和Job

Oracle Scheduler是用来管理和计划数据库的Job,通过它可以让很多常规的数据库任务自动执行, 减少人为干预,解放劳动力,本质上来说,它和Linux的crontab,商业任务管理软件如Autosys, UC4一 样,只是它们的领域不一样,Oracle Scheduler专注于Oracle数据库Job的自动化管理、维护和监控。

本篇是理论篇,介绍Oracle Scheduler的基本概念,Oracle Scheduler的名词很多,下面一一介绍 :

Program (程序)

Program是指Job执行的对象,如存储过程、PL/SQL块、外部可执行程序等

Schedule (计划)

Schedule定义Job什么时候执行,以及执行的次数,有以下两种类似的Schedule:

1)基于时间的计划(Time Schedule)

2)基于事件的计划(Event Schedule)

Destination (地点)

Destination定义Job执行的地点,有以下两种:

1)数据库(Database Destination):表示Job在数据库里执行(包含本地和远程的数据库)

2)外部(External Destination):表示Job在数据库外执行

这里有要注意的是:如果Job执行的地点在远程,则必须把Scheduler Agent安装在远程主机上。

File Watcher(文件看守者)

文件看守者定义目的地、文件名等属性,一旦有符合条件的文件到达便触发一个事件,启动Job

Credential (认证)

Credential定义了用户密码对,只有通过认证的Job才能启动,主要有以下两种认证:

1)远程数据库认证

2)外部认证(如操作系统)

Chain (任务链)

Chain用于定义一系列Job执行的依赖关系

Window(时间窗口)

时间窗口用于定义一天中的某个时间段内Job的资源分配情况。

Group(组)

一系列相同的对象组成Group,有以下三种Group:

1)Database Destination Group

2)External Destination Group

3)Window Group

Job, Program, Schedule是如何交互的?

上图显示了它们之间的关系,同一个Program可以被多个Job调用,同样地,多个Job可以共用同一个 Schedule

时间: 2025-01-21 02:12:33

关于Oracle的Scheduler和Job的相关文章

Oracle中SCHEDULER的使用

SCHEDULER使用详解: 创建SCHEDULER: BEGIN sys.dbms_scheduler.create_schedule( repeat_interval => 'FREQ=DAILY;BYHOUR=15;BYMINUTE=0;BYSECOND=0', start_date => systimestamp at time zone '+8:00', end_date => to_timestamp_tz('2014-03-15 +8:00', 'YYYY-MM-DD TZ

Oracle 10g数据库中的Services

基于RAC环境中使用的应用程序,有时候希望某个特定的应用程序仅仅运行在RAC的子节点,或者说为某些应用程序分配一个首要节点.对此,Oracle 10g可以使用services来实现. 一.集群配置 在使用services之前,需要首先检查集群的配置是否正确. 下面的命令输出了数据库ORCL运行于三个不同的节点. srvctl config database -d ORCL server01 ORCL1 /u01/app/oracle/product/10.1.0/db_1 server02 OR

Oracle 判断 并 手动收集 统计信息 脚本

CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS AUTHID CURRENT_USER IS BEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS('SchName', 'TableName', CASCADE => TRUE); END; /   select owner,table_name,last_analyzed,num_rows from dba_tables where owner='SYSTEM'

Services in Oracle Database 10g

        基于RAC环境中使用的应用程序,有时候希望某个特定的应用程序仅仅运行在RAC的子节点,或者说为某些应用程序分配一个首要节点.对此,Oracle 10g可以使用services来实现.   一.集群配置 在使用services之前,需要首先检查集群的配置是否正确. 下面的命令输出了数据库ORCL运行于三个不同的节点. srvctl config database -d ORCL server01 ORCL1 /u01/app/oracle/product/10.1.0/db_1 s

Oracle中基于SCHEDULER的job

基于scheduler的job的设置,基本的创建脚本: sys.dbms_scheduler.create_job( job_name => '"SYS"."REBUILD_JOB1"', program_name => '"SYS"."EMP_IND_REBUILD"', schedule_name => '"SYS"."DAILYREBUILD"', job_cla

使用Toad生成Oracle Scheduler Job DDL

       最近需要在不同的数据库之前迁移Oracle scheduler job,首先想到的办法是通过datapump来直接到导出Oracle scheduler job,然后使用dump file来生成ddl文件.使用这个方法可以成功完成导出并生成sqlfile.但是在目标数据库执行时收到ORA-24150 ORA-06512 during executed sql script错误.即使是在源数据库删除之前的job再执行ddl依旧有类似的错误.主要提示的是ORA-24150: evalu

关于oracle Scheduler的介绍——管理scheduler

整理自君三思博客:http://blog.itpub.net/7607759/viewspace-612220/ 三.使用Schedules 10g 中新推出的SCHEDULER可能确实会让很多初接触的朋友感觉晕头晕脑,相比之前的jobs,SCHEDULER中新增的概念太多.比如说jobs,仍然可以理解成之前版本中的jobs,不过功能更加强大(注意10g中也仍然可以使用普通jobs,这是废话,相信看本篇文章的朋友目前应该还是这样在用),比如说program,指的是运行的程序(把要做什么单提出来了

关于oracle Scheduler的介绍——Programs

整理自君三思博客:http://blog.itpub.net/7607759/viewspace-611604/ 二.使用Programs 在论坛中偶尔见过有人讨论如何在ORACLE中执行操作系统命令,或是ORACLE数据库外的应用.应该说在9i及之前的版本中,虽然说并非完全无法实现(其实还是有多种方式能够变相实现的),不过复杂的实现方式让DBA使劲了力,伤透了心,费劲了事儿. 进入10g版本之后,就完全不必如此费神,因为有了DBMS_SCHEDULER,因为有了PROGRAM. 2.1  创建

Oracle Scheduler Chain 的用法

      Oracle CHAIN,也就是链,是将一串需要完成的作业连在一起,根据每一个步骤完成的不同结果来确定下面的哪一个动作需要被完成.实际上也就是if .. then ..else.比如,可能有如下的定义,step 1成功执行,执行step 2,如果step 1执行失败,执行step 3,如果step 2或step 3 执行成功,退出整个chain,如果step 2 或step 3执行失败,发送邮件并退出.CHAIN的主要步骤包括定义程序(做什么).定义CHAIN步骤(总步骤),以及CH