【Oracle】安装配置数据库体系架构PL/SQL备份与恢复性能调优Oracle开发

您现在的位置:首页 > 网络学院 > 数据库 > Oracle > 性能调优 Oracle 10g数据库基于事件的调度

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

来源: 作者: 日期:2008-08-17

【聚杰网性能调优】Oracle 10g数据库基于事件的调度

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  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。

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

以下相关文章您是否也应该阅读一下 无相关信息
评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: