dbms_scheduler.run_job('jobName)无法运行

时间:2011-08-25 10:13:49

标签: oracle stored-procedures plsql dbms-scheduler

我正在尝试手动运行预定作业,该作业看起来像这样

  DBMS_SCHEDULER.CREATE_JOB (
   job_name           =>  'UPDATE_PLAYER_STATES',
   job_type           =>  'STORED_PROCEDURE',
   job_action         =>  'PLAYER_STATE_UPDATER',
   repeat_interval    =>  'FREQ=DAILY;BYHOUR=0', /* every day at Midnight */
   job_class          =>  'DEFAULT_JOB_CLASS',
   enabled            =>  true,
   auto_drop          =>  false);

现在,当我使用execute PLAYER_STATE_UPDATER运行该过程时,我可以看到所需的结果,但作业无法执行,如

所示
select log_date, job_name, status, run_duration
from dba_scheduler_job_run_details where job_name='UPDATE_PLAYER_STATES' or status='FAILED';


    LOG_DATE                    JOB_NAME        STATUS   RUN_DURATION 
------------- -----------------------------------------------------------------
23-AUG-11 00.20.24.288887000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
22-AUG-11 10.27.24.537659000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
22-AUG-11 10.28.50.447042000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
22-AUG-11 10.30.30.018891000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
25-AUG-11 10.59.02.332579000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
25-AUG-11 10.59.15.980730000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
25-AUG-11 10.59.27.823131000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
25-AUG-11 11.01.04.798364000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
24-AUG-11 00.20.24.419251000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
25-AUG-11 00.20.24.299180000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    
25-AUG-11 09.35.24.798535000 +01:00 UPDATE_PLAYER_STATES    FAILED    0 0:0:0.0    

手动执行作业失败dbms_scheduler.run_job('UPDATE_PLAYER_STATES');但错误

Error starting at line 1 in command:
dbms_scheduler.run_job('UPDATE_PLAYER_STATES')
Error report:
Unknown Command

我错过了什么。

2 个答案:

答案 0 :(得分:16)

当您尝试手动运行作业时,看起来您根本就没有在SQL Developer中使用正确的语法。您需要使用execute dbms_scheduler.run_job('UPDATE_PLAYER_STATES')。当然,这并不能解释为什么这项工作失败了。

我的猜测是作业配置有问题,甚至无法启动;但我不知道它是什么。您可以尝试在job_action中包含模式名称,以确保它没有查找错误的模式。

dba_scheduler_job_run_details的其他列中是否有任何有趣的内容 - 尤其是error#additional_info

答案 1 :(得分:5)

您手动将JOB作为:

运行
dbms_scheduler.run_job('UPDATE_PLAYER_STATES')

Oracle认为这是一个命令,但不是,这就是您收到错误消息“未知命令”的原因。

执行它的正确方法是:

BEGIN
   dbms_scheduler.run_job('UPDATE_PLAYER_STATES');
END;

一旦你完成了它的执行,如果你的模式没有足够的权限,那么你会看到类似“对象不存在或你没有权限”的东西,这可能是< strong>问题的根本原因。

最诚挚的问候:)