我新建一个procedure:update_sys_stat
然后新建一个job来定时执行:(在pl/sql的命令窗口)
declare
x number;
begin
sys.dbms_job.submit
(
job => X
,what => 'syn_rpt_members_relation;'
,next_date => to_date('14-11-201201:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'trunc(sysdate+1)'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/
现在问题是,我怎么启动这个job??根本不知道job编号啊~~~~
------最佳解决方案--------------------
submit就可以了,不需要再run().如果没有设置定期运行(没有指定interval参数),就是next_date指定时间运行一次。
job number不就是x的值吗?
你也可以查询USER_JOBS视图,根据WHAT列内容可以找到你的job,还有一些参数,比如
LAST_DATE DATE 最后一次成功运行任务的时间
NEXT_DATE DATE 下一次定时运行任务的时间
FAILURES NUMBER 任务运行连续没有成功的次数
------其他解决方案--------------------
submit后加个commit
------其他解决方案--------------------
select * from user_jobs;
job你创建完就行了,到时间后oralce自己会启动的。
------其他解决方案--------------------
job一般有succeed、run、execlusion三种状态
------其他解决方案--------------------
没看到可能是succeed、或者execlusion
------其他解决方案--------------------
你如果job不多的话可以在plsql中通过左边的job树中找到job编号,另一种办法就是select job from user_jobs where what='syn_rpt_members_relation'试下,应该可以得出结果
------其他解决方案--------------------
说明你的JOB没有运行,或者运行结束了
------其他解决方案--------------------
可是我select * from dba_jobs_running
以后没有发现我创建的job啊??
这个不用在意吗?
------其他解决方案--------------------
我设定的是每晚0点运行一次,更新表
经过验证,已经成功了,我总结的是:
1、如果没有设置定期运行,那么即便是dbms_job.submit()也需要run()一下才能运行
2、如果设定了定期运行,那么不管是submit还是isubmit,只要设定成功,不用run(),到时候会自动运行的
谢谢各位!!