CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

Oracle 10g数据库基于事件的调度

作者: jidongzheng,  出处:blog, 责任编辑: 王晓晨, 
2008-08-06 08:07
  Oracle 10g第 1 版中引入的Oracle Scheduler,在Oracle Scheduler 中,作业基于时间并根据时间触发。本文介绍了如果要使触发器基于事件的方法。

  Oracle 10g 数据库第 1 版中引入的 Oracle Scheduler 是下一代作业调度系统,它取代了 DBMS_JOB 附带的程序包。与该程序包相比,此 Scheduler 工具有一些显著的优点(详见此处最初的介绍)。

  在 Oracle Scheduler 的第一版中,作业基于时间并根据时间触发。但如果要使触发器基于事件该怎么办?例如,当帐户的 Account Manager 更改时,您可能希望一个批处理程序自动执行以重新计算收入并重新发布报表。

  可以在 Oracle 数据库 10g 第 2 版的 Scheduler 工具中实现此类基于事件的触发。事件通过 Advanced Queueing (AQ)(其中有效载荷是一个对象类型)传递给 Scheduler。因此,您首先需要创建一个 AQ(如 proc_queue),在这里将把任意这样的事件排队。然后,您必须基于此事件创建一个调度。

begin
  dbms_scheduler.create_event_schedule (
  schedule_name => 'accadmin.acc_mgr_change',
  start_date => systimestamp,
  event_condition => 'tab.user_data.event_name = ''acc_mgr_change''',
  queue_spec => 'proc_queue');
  end;

  接着,您将创建一个作业以遵循此调度。您也可以直接调度一个作业而不用先创建一个调度。

begin
  dbms_scheduler.create_job (
  job_name => acc_mgr_change,
  program_name => acc_mgr_change_procs,
  start_date => 'systimestamp,
  event_condition => 'tab.user_data.event_name = ''acc_mgr_change''',
  queue_spec => 'proc_queue'
  enabled => true);
  end;

  默认值是 UNLIMITED。

  如果事件(而不是特定时间)是触发作业的决定因素,则基于事件的调度很有帮助。

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2007, ChinaByte
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i