dbms_scheduler.run_job('jobName)无法运行

Man*_*noj 8 oracle plsql stored-procedures 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);
Run Code Online (Sandbox Code Playgroud)

现在,当我使用运行程序时,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    
Run Code Online (Sandbox Code Playgroud)

手动执行作业也会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
Run Code Online (Sandbox Code Playgroud)

我错过了什么

Dav*_*sta 16

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

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

有感兴趣的东西在其他列dba_scheduler_job_run_details-尤其error#还是additional_info


小智 7

您正在以以下方式手动运行作业:

dbms_scheduler.run_job('UPDATE_PLAYER_STATES')
Run Code Online (Sandbox Code Playgroud)

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

执行它的正确方法是:

BEGIN
   dbms_scheduler.run_job('UPDATE_PLAYER_STATES');
END;
Run Code Online (Sandbox Code Playgroud)

一旦实现了执行权限,如果您的架构没有足够的特权,那么您将看到诸如“对象不存在或您没有权限”之类的信息,这可能是问题的根本原因

最好的祝福 :)

  • 您还可以执行 `exec dbms_scheduler.run_job('UPDATE_PLAYER_STATES');` (2认同)