您的位置:首页 > 数据库 > Oracle

利用ORACLE JOB 订制任务

2016-10-31 09:11 337 查看
                           
一个简单例子:  

创建测试表

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   过程已成功完成。

SQL>   select  
to_char(a, 'yyyy/mm/dd   hh24:mi:ss ')
  时间   from  
a;

时间

-------------------

2001/01/07   23:51:21

2001/01/07   23:52:22

2001/01/07   23:53:24

删除JOB

SQL>   begin

    2  
  dbms_job.remove(:job1);

    3  
  end;

    4  
  /

PL/SQL   过程已成功完成。

select   job,to_char(next_date, 'yyyy-mm-dd
  hh24:mi:ss ')   from
  all_jobs;

----------job的使用:

DBMS_JOB.SUBMIT(:jobno,//job号

     
     
     
     
     
  'your_procedure; ',//要执行的过程

     
     
     
     
     
  trunc(sysdate)+1/24,//下次执行时间

     
     
     
     
     
  'trunc(sysdate)+1/24+1 '//每次间隔时间

     
     
     
     
      );

删除job:dbms_job.remove(jobno);

修改要执行的操作:job:dbms_job.what(jobno,what);

修改下次执行时间:dbms_job.next_date(job,next_date);

修改间隔时间:dbms_job.interval(job,interval);

停止job:dbms.broken(job,broken,nextdate);

启动job:dbms_job.run(jobno);

例子:

VARIABLE   jobno   number;

begin

     
     
DBMS_JOB.SUBMIT(:jobno,  

     
     
     
     
    'Procdemo; ',//Procdemo为过程名称
 

     
     
     
     
      SYSDATE,
  'SYSDATE   +  
1/720 ');

     
     
     
commit;

end;

-----修改job_queue_processes的值(保证其不为0否则JOB不自动运行)

可通过select   *   from
  v$parameter;查看其值;

方法1,startup   pfile=
'C:\oracle\ora90\database\initorcl.ora ';

需要修改initorcl.ora文件的job_queue_processes参数,然后重新启动数据库以后才能生效

方法2,alter   system   set
  job_queue_processes=10  

不需要重新启动数据库就能生效,系统自动修改init.ora文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: