繁体   English   中英

Oracle:执行作业dbms_scheduler

[英]Oracle: execute a Job dbms_scheduler

我想在Oracle Database 11g Express Edition 11.2.0.2.0版-64位生产环境中执行调度程序我有以下软件包:

create or replace PACKAGE  "S_IN_TDK" is


procedure parseMsg;

end;

和这份工作

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name         =>  'parseMsg',
   program_name     =>  'S_IN_TDK.parseMsg',
   repeat_interval  =>  'FREQ=SECONDLY;INTERVAL=10',
   --job_style        => 'LIGHTWEIGHT',
   comments         => 'Job that polls device n2 every 10 seconds');
END;

但是当我运行作业时,出现以下错误:

Fallo al procesar el comando SQL
- ORA-27476: "S_IN_TDK.PARSEMSG" does not exist
ORA-06512: at "SYS.DBMS_ISCHED", line 185
ORA-06512: at "SYS.DBMS_SCHEDULER", line 486
ORA-06512: at line 2

我也试过

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name         =>  'parseMsg',
   job_action       =>  'begin S_IN_TDK.parseMsg; end;',
   repeat_interval  =>  'FREQ=SECONDLY;INTERVAL=10',
   --job_style        => 'LIGHTWEIGHT',
   comments         => 'Job that polls device n2 every 10 seconds');
END;

但是后来我得到了这个错误:

 Informe de error -
ORA-06550: line 2, column 3:
PLS-00306: wrong number or types of arguments in call to 'CREATE_JOB'
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

参数program_name需要调度PROGRAM对象的名称。 如果要运行内联程序,请改用job_action参数:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name         =>  'parseMsg',
   job_action       =>  'begin S_IN_TDK.parseMsg; end;',
   repeat_interval  =>  'FREQ=SECONDLY;INTERVAL=10',
   --job_style        => 'LIGHTWEIGHT',
   comments         => 'Job that polls device n2 every 10 seconds');
END;

请注意, job_action需要一个完整的PL / SQL块作为输入。

DBMS_SCHEDULER.CREATE_JOB具有三个必需的参数: job_namejob_typejob_action 添加job_type => 'PLSQL_BLOCK',并添加enabled => true,以使作业立即运行。

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name         =>  'parseMsg',
   job_type         =>  'PLSQL_BLOCK',
   job_action       =>  'begin S_IN_TDK.parseMsg; end;',
   repeat_interval  =>  'FREQ=SECONDLY;INTERVAL=10',
   --job_style        => 'LIGHTWEIGHT',
   enabled          =>  true,
   comments         => 'Job that polls device n2 every 10 seconds');
END;
/

使用此查询来检查作业状态:

select *
from dba_scheduler_job_run_details
where job_name = 'PARSEMSG'
order by log_date desc;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM