我新建一个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编号啊~~~~

解决方案 »

  1.   

    select * from user_jobs;job你创建完就行了,到时间后oralce自己会启动的。
      

  2.   

    可是我select * from dba_jobs_running
    以后没有发现我创建的job啊??
    这个不用在意吗?
      

  3.   

    说明你的JOB没有运行,或者运行结束了
      

  4.   

    job一般有succeed、run、execlusion三种状态
      

  5.   

    没看到可能是succeed、或者execlusion
      

  6.   

    我设定的是每晚0点运行一次,更新表
      经过验证,已经成功了,我总结的是:
    1、如果没有设置定期运行,那么即便是dbms_job.submit()也需要run()一下才能运行
    2、如果设定了定期运行,那么不管是submit还是isubmit,只要设定成功,不用run(),到时候会自动运行的
    谢谢各位!!
      

  7.   

    submit就可以了,不需要再run().如果没有设置定期运行(没有指定interval参数),就是next_date指定时间运行一次。
    job number不就是x的值吗?
    你也可以查询USER_JOBS视图,根据WHAT列内容可以找到你的job,还有一些参数,比如
    LAST_DATE DATE 最后一次成功运行任务的时间
    NEXT_DATE DATE 下一次定时运行任务的时间
    FAILURES NUMBER 任务运行连续没有成功的次数 
      

  8.   

    你如果job不多的话可以在plsql中通过左边的job树中找到job编号,另一种办法就是select job from user_jobs where what='syn_rpt_members_relation'试下,应该可以得出结果