我是如下操作的:
创建测试表
SQL> create table a(a date);表已创建。创建一个自定义过程
SQL> create or replace procedure test as
  2  begin
  3  insert into a values(sysdate);
  4  end;
  5  /过程已创建。创建JOB
SQL> variable job1 number;
SQL> 
SQL> begin
  2  dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
  3  end;
  4  /PL/SQL 过程已成功完成。运行JOB
SQL> begin
  2  dbms_job.run(:job1);
  3  end;
  4  /PL/SQL 过程已成功完成。但是之后查询表a的值只有一个,就是上面run的时候产生的.
问:为什么没有隔一分钟执行一次test?

解决方案 »

  1.   

    try:create or replace procedure test as
      begin
      insert into a values(sysdate);
      commit;
      end;
      /
      

  2.   

    http://community.csdn.net/Expert/topic/5083/5083934.xml?temp=.7922632
      

  3.   

    try:create or replace procedure test as
      begin
      insert into a values(sysdate);
      commit;
      end;
      /
    还是不行,手动点击运行才有数据插入。
      

  4.   

    1.确保Oracle的工作模式允许启动任务队列管理器
    以DBA的身份去执行如下命令: 
    svrmgrl> alter system enable restricted session; 
    或sql> alter system disenable restricted session; 
    利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。 2.确保Oracle的系统已经配置了任务队列管理器的启动参数
    SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话,则初始化文件就是initmyora8.ora,在文件中对SNP启动参数的描述部分如下: 
    job_queue_process=n 
    job_queue_interval=N 
    第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。
      

  5.   

    创建JOB
    SQL> variable job1 number;
    SQL> 
    SQL> begin
      2  dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
      3  end;
      4  /这里差了一个commit
      

  6.   

    jcsrlhmily():
    我的是oracle9.0.1,初始化文件里面找不到job_queue_process=n 
    job_queue_interval=N 。
      

  7.   

    无论是否成功,查询user_jobs视图就一目了然了。当然在submit之后也要注意commit