重庆oracle认证培训机构

新闻分类

产品分类

热门关键词

联系我们

企业名称:重庆科禄德科技有限公司

联系人:冷老师

手机:17754917523

邮箱:93865813@qq.com

网址:www.cqora.com

地址:重庆石桥铺高创锦业

使用Oracle EnterpriseManager 创建基于事件的调度

您的当前位置: 首 页 >> 新闻资讯 >> 近期动态

使用Oracle EnterpriseManager 创建基于事件的调度

发布日期:2021-12-13 作者: 点击:

使用Oracle EnterpriseManager 创建基于事件的调度


使用“Create Schedule(创建调度)”页,可以从标准的、基于时间的调度和基于事件的调度之中选择一种来创建。如果选择基于事件的调度,则界面将更改,然后可以指定队列名、代理名和事件条件以及其它调度属性。


注:对于与event_condition匹配的事件的每个实例,调度程序都会运行基于事件的作业。但是,将忽略作业已经运行后发生的事件;事件将被使用,但不会触发作业再次运行。


创建基于事件的作业


示例:创建一个作业,如果成批装入的数据文件在上午9:00 前到达文件系统,则运行此作业。


BEGIN


DBMS_SCHEDULER.CREATE_JOB(


job_name=>'ADMIN.PERFORM_DATA_LOAD',


job_type => 'EXECUTABLE',


job_action =>'/loaddir/start_my_load.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;


创建基于事件的作业


要将事件信息指定为作业属性,请使用CREATE_JOB的替代语法,其中包括queue_spec和event_condition属性。作业可以包含作为作业属性的内嵌事件信息,或可以通过指向事件调度来指定事件信息。显示的示例使用了内嵌的基于事件的调度。


示例显示了一个作业,只要有文件在上午9:00 前到达操作系统,就会启动此作业。假定消息有效负载是一个对象,该对象包括四个名称分别为object_owner、object_name、event_type和event_timestamp的属性。


本例使用的是用户定义的事件。因此,文件在到达了文件系统后,必须有一个程序或过程将包含正确信息的事件对象类型入队到指定的事件队列中,才能启动此作业。


HR.LOAD_JOB_EVENT_Q队列必须与用于将事件的发生通知调度程序的事件对象类型相同。即,HR.LOAD_JOB_EVENT_Q队列必须是类型化队列,其中的类型包括四个名称为object_owner、object_name、event_type和event_timestamp的属性。


基于事件的调度


事件类型:


用户或应用程序生成的事件


调度程序生成的事件


由调度程序作业引发的事件:


JOB_STARTED


JOB_SUCCEEDED


JOB_FAILED


JOB_BROKEN


JOB_COMPLETED


JOB_STOPPED


JOB_SCH_LIM_REACHED


JOB_DISABLED 


JOB_CHAIN_STALLED 


JOB_ALL_EVENTS 


JOB_RUN_COMPLETED 


JOB_OVER_MAX_DUR


引发事件的示例:


DBMS_SCHEDULER.SET_ATTRIBUTE('hr.do_backup', 


'raise_events',DBMS_SCHEDULER.JOB_FAILED); 


基于事件的调度


你可以创建一个作业,但不向作业分配调度,而是通过直接引用事件来启动作业。有两种类型的事件:


用户或应用程序生成的事件:应用程序可以引发由调度程序使用的事件。调度程序通过启动作业来回应事件。此类事件的示例:正在运行的作业完成;文件到达文件系统;数据库内的帐户被锁定;以及库存到达下限阈值。


调度程序生成的事件:调度程序可以引发事件来指示在调度程序自身内发生的状态更改。例如,在作业启动时、作业完成时、作业超出其分配的运行时间时等条件下,调度程序均可以引发事件。事件的使用者是一个应用程序,该应用程序将执行某个操作以便对事件做出响应。


你可以对作业进行配置,使调度程序在作业的状态更改时引发事件。可以通过设置raise_events作业属性来完成此操作。默认情况下,在变更作业的raise_events属性之前,作业不会引发任何状态更改事件。要变更此属性,必须先使用CREATE_JOB过程创建作业,然后使用SET_ATTRIBUTE过程修改此属性的默认值。本例显示hr.do_backup作业已变更,使得该作业在失败时引发事件。为作业启用作业状态更改事件后,调度程序将引发这些事件,方法是将消息入队到默认的事件队列SYS.SCHEDULER$_EVENT_QUEUE中。


默认的调度程序事件队列是一个安全队列。可能需要配置队列,才能允许特定用户在此队列上执行操作,具体取决于应用程序。


默认的调度程序事件队列主要用于调度程序生成的事件。Oracle 建议你不要将此队列用于用户应用程序或用户定义的事件。


创建复杂调度


创建复杂调度


调度是数据库中的对象。创建调度时,将自动保存这些调度。可以使用调度的组合来创建更复杂的调度。通过组合调度,可以向日历表达式中添加特定日期,或者从日历表达式中排除特定日期。


定义调度的重复间隔时可以使用下列选项:


INCLUDE:向日历表达式结果中添加日期列表


EXCLUDE:从日历表达式结果中删除日期列表


INTERSECT:只使用两个或多个调度共有的日期


创建要组合使用的调度时,可以对日期列表进行编码,方法是包含形式为[YYYY]MMDD的硬编码日期,或者包含用CREATE_SCHEDULE过程创建的已命名调度。例如,可以对调度的重复间隔使用下列值来指定日期列表:


0115,0315,0325,0615,quarter_end_dates,1215


此字符串表示日期1 月15 日、3 月15 日、3 月25 日、6 月15 日、12 月15 日以及QUARTER_END_DATES调度所指定的日期列表。


如果未在调度中指定硬编码日期的可选年份,则包括每一年的这些日期。


持久轻量作业的作业元数据和运行时数据在磁盘上占用很小的空间。持久轻量作业是使用作业模板创建的。


本文网址:http://www.cqora.com/news/838.html

关键词:Oracle认证,Oracle认证培训,Oracle认证培训多少钱

上一篇:Oracle DB 使用调度程序来简化管理任务
下一篇:没有了

Z近浏览:

报名咨询

点击咨询报名

QQ群

赛烽达技术群

冷老师

17754917523

加微信咨询

张老师微信.jpg

93865813@qq.com