




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
简单讲一下oracle 10g scheduler,10g引入dbms_scheduler来替代先前的dbms_job,在功能方面,它比dbms_job提供了更强大的功能和更灵活的机制/管理.DBMS_JOB和DBMS_SCHEDULER之间的主要区别如下:DBMS_SCHEDULER可以执行存储的程序、匿名块以及OS可执行文件和脚本,而DBMS_JOB只可以执行存储的程序或匿名的PL/SQL块。考虑到增强的组件重用,调度程序的程序单元作为模式对象存储。DBMS_JOB只有一种组件,即作业;而调度程序具有组件层次结构。可以使用DBMS_SCHEDULER更具描述性地定义作业或进度表间隔。DBMS_ SCHEDULER也具有更详细的作业运行状态以及故障处理和报告功能。通常用法:使用调度程序的典型示例是自动化数据库维护作业,例如执行数据库备份、加载数据仓库数据、收集数据库统计、刷新具体化视图、检查警报日志错误、或者生成管理报表。作业可以由预先定义的部分(程序和进度表)组成,也可以完全独立,这取决于使用哪个版本的CREATE_JOB程序来创建作业。作业的运行一般由作业协调程序控制,但也可以使用RUN_JOB和STOP_JOB程序手动控制它们。调度程序允许用户创建保存有关任务的元数据的程序,但没有任何进度表信息。程序可能与PL/SQL块、存储过程或OS可执行文件关联。1.作业(job):一个调度程序作业的实体.可以由dbms_scheduler.create_job创建生成.它可以自行指定作业属性,也可以调用我们预先创建的一系列scheduler/ program/ chain/ job_class/ window/ window_group来匹配其作业属性.2.调度(scheduler):一个任务计划执行的时间策略.比如我们想要创建一个晚上3点执行的任务计划,就可以创建一个调度,凡是符合这个调度要求的,都可以调用这个我们预先创建好的调度.可以用dbms_scheduler.create_schedule来创建一个调度.比如我创建一个名字叫MYTEST_SCHEDULE的调度,每天4:00执行.Begindbms_scheduler.create_schedule(repeat_interval = FREQ=DAILY;BYHOUR=4;BYMINUTE=0;BYSECOND=0,start_date = systimestamp at time zone PRC,comments = -this is my test schedule-,schedule_name = MYTEST_SCHEDULE);end;3.程序(program):10g下的program支持分为3种形式,PL/SQL BLOCK/STORED PROCEDURE/EXECUTABLE.可以使用DBMS_SCHEDULER.CREATE_PROGRAM来创建一个program.BEGINDBMS_SCHEDULER.CREATE_PROGRAM(program_name=mytest_program_1,program_action=update mytest set id=id+1;,program_type=PLSQL_BLOCK,number_of_arguments=0,comments=,enabled=TRUE);END;4.链(chain):链可以看作是一个/几个program/event scheduler的集合,为了维护需要,我们可能需要将很多不同的program放到一起依次执行,按照以前的模式,要么将这几个program能整合成一个大的整体,要么分开几个job来单独执行,这无疑加重了维护负担,而chain的出现,可以优化这个问题,我们将实现定义好的program集合到一起,然后统一制定一个job来执行,可以使用dbms_scheduler.create_chain来创建一个chain.比如,在我的系统中,我分别创建了一个EXECUTABLE类型的和一个STORED PROCEDURE类型的program,我需要他们顺次执行,于是我可以这么做:BEGINdbms_scheduler.create_chain(chain_name =MYTEST_CHAIN);dbms_scheduler.define_chain_step(chain_name =MYTEST_CHAIN,step_name =mytest_chain_1,program_name =P_1);dbms_scheduler.alter_chain(chain_name =MYTEST_CHAIN,step_name =mytest_chain_1,attribute=skip,value=FALSE);dbms_scheduler.define_chain_step(chain_name =MYTEST_CHAIN,step_name =mytest_chain_2,program_name =P_2);dbms_scheduler.alter_chain(chain_name =MYTEST_CHAIN,step_name =mytest_chain_2,attribute=skip,value=FALSE);dbms_scheduler.enable(MYTEST_CHAIN);END;4.作业类(job_class):定义了运行作业的资源使用者组.通过使用窗口中的资源计划,我们可以在不同资源组和不同作业类之间分配资源.可以使用dbms_scheduler.create_job_class创建一个作业类.BEGINdbms_scheduler.create_job_class(logging_level = DBMS_SCHEDULER.LOGGING_RUNS,log_history = 100,resource_consumer_group = AUTO_TASK_CONSUMER_GROUP,job_class_name = MYTEST_JOB_CLASS);END;5.窗口(window):可以看成是一个更高功能的调度,窗口可以调用系统中存在的调度(也可以自行定义执行时间),而且,具有资源计划限制功能,窗口可以归属于某个窗口组.可以使用DBMS_SCHEDULER.CREATE_WINDOW来创建一个窗口.例如我创建了一个名为mytest_windows_1的窗口,采用DAILY_PURGE_SCHEDULE的调度方式,资源计划限制方案为SYSTEM_PLAN,持续时间为4小时.BEGINDBMS_SCHEDULER.CREATE_WINDOW(window_name=mytest_windows_1,resource_plan=SYSTEM_PLAN,schedule_name=SYS.DAILY_PURGE_SCHEDULE,duration=numtodsinterval(240, minute),window_priority=LOW,comments=);END;6.窗口组(window_group):一个/几个窗口的集合.10g默认的自动采集统计信息的调度就是一个窗口组的形式,譬如,设置两个窗口,窗口一指定任务周日-周五,晚上12点执行,而窗口二设定周六凌晨3点执行,这两个窗口组成了一个窗口组,形成了这个job的执行调度策略.可以使用DBMS_SCHEDULER.CREATE_WINDOW_GROUP来创建一个窗口组.BEGINDBMS_SCHEDULER.CREATE_WINDOW_GROUP(group_name=mytest_window_group,window_list=MYTEST_WINDOWS_1,WEEKEND_WINDOW);END;于是,使用dbms_scheduler创建一个job,我们可以调用各种预先定义的复杂属性,也可以简单的手动约定各个需要的属性.简单的,如BEGINdbms_scheduler.create_job(job_name = MYTEST_JOB_1,job_type = PLSQL_BLOCK,job_action = update mytest set id=id+1;,repeat_interval = FREQ=MINUTELY;INTERVAL=10,start_date = sysdate,auto_drop = FALSE,enabled = TRUE);END;跟采用dbms_job并不太大区别,只是repeat_interval等语法上有差别.复杂点的,如:BEGINdbms_scheduler.create_job(job_name = MYTEST_JOB_2,job_type = CHAIN,job_action = MYTEST_CHAIN,schedule_name = SYS.MYTEST_WINDOW_GROUP,job_class = DEFAULT_JOB_CLASS,auto_drop = FALSE,enabled = FALSE);dbms_scheduler.set_attribute( name = MYTEST_JOB_2, attribute = stop_on_window_close, value = FALSE);END;调度程序作业属性的修改:大部分的调度作业属性的修改,都可以通过dbms_scheduler.SET_ATTRIBUTE和dbms_scheduler.SET_ATTRIBUT_NULL来完成.在此仅几个举例来说明,更多使用方法雷同.比如,重新定义scheduler属性:BEGINdbms_scheduler.set_attribute( name = DAILY_PURGE_SCHEDULE, attribute = repeat_interval, value = FREQ=DAILY;BYHOUR=1;BYMINUTE=0;BYSECOND=0);END;比如重新修改program;BEGINDBMS_SCHEDULER.SET_ATTRIBUTE(name=P_1,attribute=PROGRAM_ACTION,value=/backup/2.sh);END;比如重新定义一个job属性BEGINdbms_scheduler.set_attribute_null( name = GATHER_STATS_JOB, attribute = schedule_name);dbms_scheduler.set_attribute( name = GATHER_STATS_JOB, attribute = repeat_interval, value = FREQ=DAILY;BYHOUR=2;BYSECOND=0);END;查看job 优先级select job_name,job_priority from dba_scheduler_jobs;相关的表/视图:SQL select VIEW_NAME from dba_views a where a.view_name like DBA_SCHEDULER%;VIEW_NAME-DBA_SCHEDULER_PROGRAMS显示数据库中所有调度程序的相关信息 DBA_SCHEDULER_JOBS显示数据库中所有调度程序作业的相关信息DBA_SCHEDULER_JOB_CLASSES显示数据库中所有调度程序作业类的相关信息DBA_SCHEDULER_WINDOWS显示数据库中所有调度程序窗口的相关信息 DBA_SCHEDULER_PROGRAM_ARGS显示数据库中所有调度程序参数的相关信息DBA_SCHEDULER_JOB_ARGS显示数据库中所有调度程序作业参数的相关信息DBA_SCHEDULER_JOB_LOG显示数据库中所有调度程序作业的日志信息 DBA_SCHEDULER_JOB_RUN_DETAILS显示数据库中所有调度程序作业的日志运行细节 DBA_SCHEDULER_WINDOW_LOG显示数据库中所有调度程序窗口的日志信息 DBA_SCHEDULER_WINDOW_DETAILS显示数据库中所有调度程序窗口的日志细节 DBA_SCHEDULER_WINDOW_GROUPS显示数据库中所有调度程序窗口组的相关信息 DBA_SCHEDULER_WINGROUP_MEMBERS显示数据库中所有调度程序窗口组的成员 DBA_SCHEDULER_SCHEDULES显示数据库中所有调度程序进度表的相关信息 DBA_SCHEDULER_RUNNING_JOBS显示数据库中所有正在运行的调度程序作业的相关信息job- job servicesstartup services OracleJobSchedulerSID and set it automatic,the default is disable- job privilegegrant create job to somebody; - create job begin dbms_scheduler.create_job ( job_name = AGENT_LIQUIDATION_JOB, job_type = STORED_PROCEDURE, job_action = AGENT_LIQUIDATION.LIQUIDATION, - 存储过程名 start_date = sysdate, repeat_interval = FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0, - 按月,间隔为1个(月),每月1号,凌晨1点 comments = second ); end; / - job time testDECLARE start_date date; return_date_after date; next_run_date date; BEGIN start_date := sysdate;-to_timestamp_tz(10-OCT-2004 10:00:00,DD-MM-YYYY HH24:MI:SS); return_date_after := start_date; FOR i IN 1.10 LOOP DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING(FREQ=MONTHLY; INT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业银行2025葫芦岛市秋招笔试性格测试题专练及答案
- 2025年教师招聘之《幼儿教师招聘》模拟试题附参考答案详解【达标题】
- 教师招聘之《小学教师招聘》题库检测试题打印【各地真题】附答案详解
- 中国银行2025宁波市半结构化面试15问及话术
- 2025年教师招聘之《幼儿教师招聘》能力检测试卷带答案详解(综合卷)
- 教师招聘之《幼儿教师招聘》考试历年机考真题集附参考答案详解(a卷)
- 2025内蒙古呼伦贝尔东北阜丰生物科技有限公司招聘8人笔试备考附答案详解(模拟题)
- 教师招聘之《幼儿教师招聘》综合提升测试卷含答案详解【模拟题】
- 2025年内蒙古呼伦贝尔农垦集团有限公司招聘考试笔试试卷含答案及答案详解(各地真题)
- 教师招聘之《小学教师招聘》强化训练题型汇编及答案详解(夺冠系列)
- 第一章 勾股定理 单元测试卷(含部分解析)-2025-2026学年北师大版八年级数学上册
- 2025-2026学年人美版(2024)小学美术二年级上册教学计划及进度表
- 歌乐山下的英烈课件
- 涉警舆情应对课件
- 2025年四川省凉山彝族自治州中考道德与法治真题及答案
- (2025年标准)赛事承办协议书
- 美术绘本创作教学课件
- 2025无犯罪记录证明申请表申请书(模板)
- GB/T 7031-2025机械振动道路路面谱测量数据的报告
- 新材料研发开发合同
- 矿山支护工培训课件
评论
0/150
提交评论