文档详情

Oracle定时执行计划任务Oracle定时执行计划任务.pdf

发布:2017-12-17约1.1万字共8页下载文档
文本预览下载声明
Oracle 定时执行计划任务 Oracle 在 10g 版本以前,计划任务用的是 DBMS_JOB 包,10g 版本引入 DBMS_SCHEDULER 来替代先前的 DBMS_JOB,在功能方面,它比 DBMS_JOB 提供了更强大的功能和更灵活的机制 管理,但 DBMS_JOB 包的使用相对比较简单,也基本能够满足定时执行计划任务的需求,故 接下来就先看看 DBMS_JOB 包的使用方法。 1. DBMS_JOB 我们可以在命令窗口输入 show parameter job_queue_processes 查看数据库中定时任务 的最多并发数,一般设置为 10 (设置方法:alter system set job_queue_processes=10 ),如果 设为 0,那么数据库定时作业是不会运行的。 oracle 定时执行 job queue 的后台进程是 SNP,要启动 snp,首先看系统模式是否支持 sql alter system enable restricted session;或 sql alter system disenable restricted session; 利用上面的命令更改系统的会话方式为 disenable restricted, 为 snp 的启动创建条件. 接下来我们尝试实现以下功能:每隔一分钟自动向job_test表中插入当前的系统时间。 1、创测试表 create table job_test(updatetime date); 2、创建 JOB variable v_job_no number; begin dbms_job.submit(:v_job_no, insert into job_test values(sysdate);, sysdate, sysdate+1/1440); end; / 其中最后一个参数sysdate+1/1440表示时间间隔为每分钟。其它常用的时间间隔的 设置如下: (1)如果想每天凌晨 1 点执行,则此参数可设置为trunc(sysdate)+25/24; (2)如果想每周一凌晨 1 点执行,则此参数可设置为 trunc(next_day(sysdate,1))+25/24; (3)如果想每月 1 号凌晨 1 点执行,则此参数可设置为 trunc(last_day(sysdate))+25/24; (4)如果想每季度执行一次,则此参数可设置为 trunc(add_months(sysdate,3),Q)+1/24; (5)如果想每半年执行一次,则此参数可设置为 add_months(trunc(sysdate,yyyy),6)+1/24; (6)如果想每年执行一次,则此参数可设置为 add_months(trunc(sysdate,yyyy),12)+1/24。 select * from user_jobs;--查看当前用户的调度任务 select * from dba_jobs_running;--查看正在执行的调度任务 select * from dba_jobs;--查看执行完的调度任务 select * from all_jobs; -- 查看数据库系统所有任务 实例 1: 1. 创建测试表 create table a(a date); 2. 创建一个存储过程 create or replace procedure test as begin insert into a values(sysdate); end; / 3. 创建 JOB (任务计划) variable job1 number; begin dbms_job.submit(:job1,test;,sysdate,sysdate+1/1440); end; / --每天 1440 分钟,即一分钟运行 test 存储过程一次 4. 运行 JOB
显示全部
相似文档