oracle怎么实现每天定时执行一个计划任务

 一个简单例子:    
   
  创建测试表  
  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文件 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值