【问题标题】:Associate a scheduler job with a window将调度程序作业与窗口相关联
【发布时间】:2013-12-29 01:39:47
【问题描述】:

试图将作业与窗口相关联。使用 schedule_name 应该可以进行连接,但它似乎不起作用。

可重现的例子

创建窗口每隔一分钟打开一次

SQL> begin
  2     DBMS_SCHEDULER.CREATE_WINDOW (
  3      window_name      => 'traffic_window',
  4      resource_plan    => null,
  5      repeat_interval  => 'FREQ=minutely;interval=2',
  6      duration         => interval '1' minute
  7      );
  8  END;
  9  /

PL/SQL procedure successfully completed.

SQL> select WINDOW_NAME,SCHEDULE_NAME,SCHEDULE_TYPE,ENABLED,ACTIVE from all_scheduler_windows;

WINDOW_NAME                    SCHEDULE_NAME                       SCHEDULE ENABL ACTIV
------------------------------ ----------------------------------- -------- ----- -----
TRAFFIC_WINDOW                                                     CALENDAR TRUE  TRUE

好的,正在关联作业

SQL> exec dbms_scheduler.drop_job('test_window_job',true);

PL/SQL procedure successfully completed.

SQL> begin
  2     dbms_scheduler.create_job (
  3        job_name             => 'test_window_job',
  4        job_type             => 'PLSQL_BLOCK',
  5        job_action           => 'begin test_func(70,''start'',0,null); end;',
  6        schedule_name        => 'traffic_window',
  7        enabled              => false,
  8        auto_drop            => true
  9     );
 10
 11     dbms_scheduler.set_attribute ('test_window_job','max_runs',1);
 12     dbms_scheduler.set_attribute ('test_window_job','stop_on_window_close',true);
 13  end;
 14  /

PL/SQL procedure successfully completed.

SQL> exec dbms_scheduler.enable('test_window_job');
BEGIN dbms_scheduler.enable('test_window_job'); END;

*
ERROR at line 1:
ORA-27481: "HAKI.TEST_WINDOW_JOB" has an invalid schedule
ORA-27476: "HAKI.TRAFFIC_WINDOW" does not exist
ORA-06512: at "SYS.DBMS_ISCHED", line 2751
ORA-06512: at "SYS.DBMS_SCHEDULER", line 1794
ORA-06512: at line 1

Docscreate_job明确声明

schedule_name - 计划、窗口或窗口组的名称 与此工作相关。

什么问题???

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

【问题讨论】:

    标签: oracle oracle10g dbms-scheduler


    【解决方案1】:

    您正在创建 WINDOW,但将作业与 SCHEDULE 关联。

    WINDOW != SCHEDULE

    创建一个SCHEDULE 而不是WINDOW

    更新:实际上,可以将JOBWINDOW 关联起来。但由于窗口在 SYS 模式中,因此您必须在参数中提供模式名称:

       schedule_name        => 'sys.traffic_window'
    

    【讨论】:

    • 但我想要一个窗口 - 重点是设置 stop_on_window_close 属性。另外,窗口是一种调度 - 文档指出 schedule_name attr 是调度程序、窗口或窗口组。
    • 文档也有错误。请注意调度程序中不同对象的名称相同。
    • 更新了答案 - 只需在参数中提供 SYS 架构名称,应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2021-09-27
    • 2019-05-04
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多