DBA2 第十四章:使用调度程序自动执行任务
2011-09-25 11:43
363 查看
主要组件和步骤
组件
作业”指定需要执行的内容和执行时间。
“计划”指定执行作业的时间和次数。
“程序”是有关特定可执行文件、脚本或过程的元数据集合。
步骤
创建程序
管理-->程序--->创建
创建并使用计划
管理--->调度-->创建
创建并提交作业
管理-->作业-->创建
监视作业
[DBA|ALL]_SCHEDULER_JOB_RUN_DETAILS 视图
LOG_ID:日志条目的唯一标识符
LOG_DATE:日志条目的时间戳
OWNER:作业的所有者
JOB_NAME:作业的名称
STATUS:作业执行的状态
ERROR#:遇到的第一个错误的编号
REQ_START_DATE:作业计划启动的时间
ACTUAL_START_DATE:作业实际启动的时间
RUN_DURATION:作业执行的持续时间
INSTANCE_ID:运行作业的实例
SESSION_ID:运行作业的会话
SLAVE_PID:用于执行作业的从属进程的进程 ID
CPU_USED:作业运行所用的CPU 量
ADDITIONAL_INFO:有关作业运行的附加信息
计划
调度
时间
事件
创建基于时间的作业
示例
job_type
PLSQL_BLOCK:匿名 PL/SQL 块
STORED_PROCEDURE:命名的PL/SQL、Java 或外部过程
EXECUTABLE:可以从操作系统命令行执行的命令
job_action 参数可以是要运行过程的名称、脚本的名称或操作系统命令的名称,也可以是匿名的 PL/SQL 代码块,具体取决于 job_type参数的值。
创建基于事件的调度
必须设置
队列说明(应用程序将消息入队以启动作业) queue_spec
事件条件(与 Oracle Streams AQ 规则条件的语法相同),如果为 TRUE 则启动作业 event_condition
示例:创建一个作业,如果成批装入的数据文件在上午 9:00 之前到达文件系统,则运行此作业。
基于事件的调度
类型
用户或应用程序生成的事件:应用程序可以引发由调度程序使用的事件。调度程序通过启动作业来回应事件。
调度程序生成的事件:调度程序可以引发事件来指示在调度程序自身内发生的状态更改。
创建复杂调度
INCLUDE:向日历表达式结果中添加日期列表
EXCLUDE:从日历表达式结果中删除日期列表
INTERSECT:只使用两个或多个计划公用的日期
作业链
概述
链是为达到组合目标而链接在一起的一系列已命名的程序。
一个相关程序链中的每个位置都称为一个步骤
创建步骤
使用 CREATE_CHAIN 过程创建链
定义(一个或多个)链步骤
程序
另一个链(嵌套链)
事件
创建链对象后,请定义链规则
DEFINE_CHAIN_RULE 向链中添加每个规则时均需要调用一次此过程
每个规则都有一个条件和操作
启动链
用 ENABLE 过程启用链。
要运行链,必须创建类型为“CHAIN”的作业。作业操作必须引用链名称。
监视作业链
ALL_SCHEDULER_CHAINS 视图
链所有者和名称;链的规则集名称和规则集所有者;规则数;步骤数;是否启用链;链是否使用求值间隔;以及链是否使用用户定义的规则集
ALL_SCHEDULER_CHAIN_RULES 视图
为其定义规则的链的名称和所有者;规则名、所有者和条件;以及在条件求值结果为 TRUE 时要执行的操作
ALL_SCHEDULER_CHAIN_STEPS 视图
为其创建步骤的链的名称和所有者;步骤名;程序名和所有者;是否应跳过步骤;以及步骤在完成后是否应暂停
ALL_SCHEDULER_RUNNING_CHAINS 视图
链名称和所有者;指向链的作业的名称和所有者;链中步骤的名称及其当前状态;链步骤遇到的错误;链步骤开始和结束的时间;完成步骤所用的时间;以及运行步骤的作业的名称
高级概念
概念
“窗口”由定义好起始时间和结束时间的时间间隔表示,用于在不同时间激活不同的资源计划。
“窗口组”表示一系列窗口,使用它可以更轻松地管理窗口。
“作业类”定义作业的类别,这些作业共享公用资源使用要求及其他特性。
创建作业类
管理-->作业类-->创建
创建窗口
区分窗口内作业的优先级
两个级别
级别区分优先级,使用的是资源计划
在类内区分优先级,使用的是作业的作业优先级属性
仅当属于同一类的两个作业同时启动时,才会考虑优先级。优先级较高的作业先启动。
不能确保不同作业类中的作业按其优先级运行。
组件
作业”指定需要执行的内容和执行时间。
“计划”指定执行作业的时间和次数。
“程序”是有关特定可执行文件、脚本或过程的元数据集合。
步骤
创建程序
管理-->程序--->创建
BEGIN DBMS_SCHEDULER.CREATE_PROGRAM( program_name => 'CALC_STATS2', program_action => 'HR.UPDATE_HR_SCHEMA_STATS', program_type => 'STORED_PROCEDURE', enabled => TRUE); END; /
创建并使用计划
管理--->调度-->创建
BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE( schedule_name => 'stats_schedule', start_date => SYSTIMESTAMP, end_date => SYSTIMESTAMP + 30, repeat_interval => 'FREQ=HOURLY;INTERVAL=1', comments => 'Every hour'); END; /
创建并提交作业
管理-->作业-->创建
监视作业
[DBA|ALL]_SCHEDULER_JOB_RUN_DETAILS 视图
LOG_ID:日志条目的唯一标识符
LOG_DATE:日志条目的时间戳
OWNER:作业的所有者
JOB_NAME:作业的名称
STATUS:作业执行的状态
ERROR#:遇到的第一个错误的编号
REQ_START_DATE:作业计划启动的时间
ACTUAL_START_DATE:作业实际启动的时间
RUN_DURATION:作业执行的持续时间
INSTANCE_ID:运行作业的实例
SESSION_ID:运行作业的会话
SLAVE_PID:用于执行作业的从属进程的进程 ID
CPU_USED:作业运行所用的CPU 量
ADDITIONAL_INFO:有关作业运行的附加信息
计划
调度
时间
事件
创建基于时间的作业
示例
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name=>'HR.DO_BACKUP', job_type => 'EXECUTABLE', job_action => '/home/usr/dba/rman/nightly_incr.sh', start_date=> SYSDATE, repeat_interval=>'FREQ=DAILY;BYHOUR=23', /* next night at 11:00 PM */ comments => 'Nightly incremental backups'); END; /
job_type
PLSQL_BLOCK:匿名 PL/SQL 块
STORED_PROCEDURE:命名的PL/SQL、Java 或外部过程
EXECUTABLE:可以从操作系统命令行执行的命令
job_action 参数可以是要运行过程的名称、脚本的名称或操作系统命令的名称,也可以是匿名的 PL/SQL 代码块,具体取决于 job_type参数的值。
创建基于事件的调度
必须设置
队列说明(应用程序将消息入队以启动作业) queue_spec
事件条件(与 Oracle Streams AQ 规则条件的语法相同),如果为 TRUE 则启动作业 event_condition
示例:创建一个作业,如果成批装入的数据文件在上午 9:00 之前到达文件系统,则运行此作业。
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name=>'ADMIN.PERFORM_DATA_LOAD', job_type => 'EXECUTABLE', job_action => '/home/usr/dba/rman/report_failure.sh', start_date => SYSTIMESTAMP, event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' and tab.user_data.event_timestamp < 9 ', queue_spec => 'HR.LOAD_JOB_EVENT_Q'); END;
基于事件的调度
类型
用户或应用程序生成的事件:应用程序可以引发由调度程序使用的事件。调度程序通过启动作业来回应事件。
调度程序生成的事件:调度程序可以引发事件来指示在调度程序自身内发生的状态更改。
创建复杂调度
INCLUDE:向日历表达式结果中添加日期列表
EXCLUDE:从日历表达式结果中删除日期列表
INTERSECT:只使用两个或多个计划公用的日期
作业链
概述
链是为达到组合目标而链接在一起的一系列已命名的程序。
一个相关程序链中的每个位置都称为一个步骤
创建步骤
使用 CREATE_CHAIN 过程创建链
定义(一个或多个)链步骤
程序
另一个链(嵌套链)
事件
创建链对象后,请定义链规则
DEFINE_CHAIN_RULE 向链中添加每个规则时均需要调用一次此过程
每个规则都有一个条件和操作
启动链
用 ENABLE 过程启用链。
要运行链,必须创建类型为“CHAIN”的作业。作业操作必须引用链名称。
监视作业链
ALL_SCHEDULER_CHAINS 视图
链所有者和名称;链的规则集名称和规则集所有者;规则数;步骤数;是否启用链;链是否使用求值间隔;以及链是否使用用户定义的规则集
ALL_SCHEDULER_CHAIN_RULES 视图
为其定义规则的链的名称和所有者;规则名、所有者和条件;以及在条件求值结果为 TRUE 时要执行的操作
ALL_SCHEDULER_CHAIN_STEPS 视图
为其创建步骤的链的名称和所有者;步骤名;程序名和所有者;是否应跳过步骤;以及步骤在完成后是否应暂停
ALL_SCHEDULER_RUNNING_CHAINS 视图
链名称和所有者;指向链的作业的名称和所有者;链中步骤的名称及其当前状态;链步骤遇到的错误;链步骤开始和结束的时间;完成步骤所用的时间;以及运行步骤的作业的名称
高级概念
概念
“窗口”由定义好起始时间和结束时间的时间间隔表示,用于在不同时间激活不同的资源计划。
“窗口组”表示一系列窗口,使用它可以更轻松地管理窗口。
“作业类”定义作业的类别,这些作业共享公用资源使用要求及其他特性。
创建作业类
管理-->作业类-->创建
EXECUTE DBMS_SCHEDULER.CREATE_JOB_CLASS( - job_class_name => 'ADMIN_JOBS', - resource_consumer_group => 'DAYTIME_JOBS', - logging_level => DBMS_SCHEDULER.LOGGING_OFF);
创建窗口
/*为十二月份创建一个使用 END_OF_YEAR 资源计划的窗口, 并且此窗口在每晚从东部标准时间 (EST) 下午 6:00 到第二天 上午 6:00 有效。*/ BEGIN DBMS_SCHEDULER.CREATE_WINDOW( window_name => 'DEC_NIGHTS', resource_plan => 'END_OF_YEAR', start_date => '01-DEC-03 06.00.00 PM EST', repeat_interval => 'FREQ=DAILY; BYHOUR=18', duration => '0 12:00:00', end_date => '31-DEC-03 06.00.00 AM EST', comments => 'Every day at 6:00 PM'); END; /
区分窗口内作业的优先级
两个级别
级别区分优先级,使用的是资源计划
在类内区分优先级,使用的是作业的作业优先级属性
仅当属于同一类的两个作业同时启动时,才会考虑优先级。优先级较高的作业先启动。
不能确保不同作业类中的作业按其优先级运行。
相关文章推荐
- Oracle DB 使用调度程序自动执行任务
- Oracle DB 使用调度程序自动执行任务
- Oracle DB 使用调度程序自动执行任务
- ocp 043 第十四章:使用调度程序执行计划任务
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
- 使用任务计划程序自动执行任务
- 使用任务计划程序自动执行任务
- 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
- 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
- 使用Oracle调度程序自动完成任务
- 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
- 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
- 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
- Windows中使用计划任务自动执行PHP程序实例
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
- Windows中使用计划任务自动执行PHP程序实例
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
- Azkaban-开源任务调度程序(使用篇)
- [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe