实现的功能: 每隔一分钟自动向 getSysDate 表中插入当前的系统时间。 一、创测试表 create table getSysDate(test date); 二、创要定时执行的存储过程(plsql中执行即可) create or replace procedure insertSysDate as begin insert into getSysDate values (sysdate); end ; 三、创建JOB,即创建待执行的定时任务过程(命令行执行) variable job1 number; begin exec dbms_job.submit(:job1,'insertSysdate;',sysdate,'sysdate 1/1440'); end; 注意: --创建 JOB ,即创建待执行的定时任务过程 --sysdate+1 表示每天执行一次 --sysdate+1/24 表示每小时执行一次 --sysdate+1/(24*60) 表示每分钟执行一次 --sysdate+1/(24*60*60) 表示每秒执行一次 四、启动JOB,即启动并运行定时任务过程 http://www.mscto.com begin exec dbms_job.run(:job1); end; 五、查看运行效果 select to_char(test,'yyyy/mm/dd hh24:mi:ss') from getSysDate; 结果如下: 2007/08/03 10:53:11 2007/08/03 11:05:51 部分重点参数补充说明: 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); 修改job_queue_processes的值:(保证其不为0否则JOB不自动运行) 可通过select * from v$parameter;查看其值; 或者直接用show parameter job_queue_processes;查看如下: NAME TYPE VALUE --------------- ----------- ------------ job_queue_processes integer 10 方法1.startup pfile='C:oracleora90databaseinitorcl.ora'; //这个方法用来修改initorcl.ora文件的job_queue_processes参数,然后重新启动数据库 方法2.alter system set job_queue_processes=10 //这个方法不用重启数据库就可以生效,系统自动修改init.ora文件以后即可生效 。 源自:http://www.mscto.com/Oracle/2009010136819.html (本文有修改)
Oralce定时执行存储过程
注意:
重启服务对任务没有影响
猜你喜欢
转载自zhijie-geng.iteye.com/blog/1488660
今日推荐
周排行