我正在尝试手动运行预定作业,该作业看起来像这样
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
我错过了什么。
答案 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>问题的根本原因。
最诚挚的问候:)