需要在哪个用户中执行,就用哪个用户登陆,然后建立job
begin
dbms_job.submit(job => :job,
what => 'AUTHORS_SEL;',
next_date => to_date('22-05-2006 11:50:59', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1/1440');
commit;
end;
AUTHORS_SEL是当前用户的存储过程吗?
你也可以这样测试
begin
dbms_job.run(job => :job);
end;
如果出错会提示错误信息!
begin
dbms_job.submit(job => :job,
what => 'AUTHORS_SEL;',
next_date => to_date('22-05-2006 11:50:59', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1/1440');
commit;
end;
AUTHORS_SEL是当前用户的存储过程吗?
你也可以这样测试
begin
dbms_job.run(job => :job);
end;
如果出错会提示错误信息!
通过
select t.value from v$parameter t
where t.name='job_queue_processes'
查看
如果为0则用如下语句修改即可
alter system set JOB_QUEUE_PROCESSES=10
还有一个原因就是你手动给nextdate写值了,则job不会自动运行,需要删除该job然后重建.
过一会
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5;
如果还没效果
估计就是著名的497 days bug
修改文件:C:\oracle9i\product\admin\godown\pfile\init.ora
添加以下行并重启机器:
###########################################
# DF_4B,2006-02-13
# oracle中使用job定时完成任务
###########################################
JOB_QUEUE_PROCESSES=1
JOB_QUEUE_INTERVAL=60
job_queue_keep_connections=true第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。
第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。
我曾把一个用户下的数据EXP出来,方式EXP SYSTEM/MANAGER OWNER=(XX)
在另外一台机器上恢复数据后JOB就不能自动执行了。
原因就在于使用了EXP SYSTEM/MANAGER
恢复后JOB的OWNER就是SYSTEM了。此时JOB在原用户下无法执行,但是在SYSTEM下可以自动执行。
无论你怎么在原用户下重建JOB都没有用了。
sql/plus中,show parameter job_queue_process;若为0,改为:
alter system set job_queue_process=20;