博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle创建计划任务
阅读量:7081 次
发布时间:2019-06-28

本文共 2386 字,大约阅读时间需要 7 分钟。

特别提示:oracle是执行完任务,才按照interval去计算下次执行时间!!!为精确每个5分钟执行一个任务,必须自己计算时间。如:trunc_minute(sysdate)+5/1440create or replace function trunc_minute(v_date date) return date asbegin      return to_number(trunc(to_char(v_date, 'mi')/5))*5/(24*60) + trunc(v_date, 'hh24');end;

 

 

创建存储过程

备注:默认在存储过程中是不允许执行truncate table tablename,所以要加

execute   immediate
create or replace procedure truncate_table asbegin       execute   immediate 'truncate table test_STATUS';end;

每天3点执行

在pl/sql

declare    jobno number;begindbms_job.submit(job =>jobno,                    what =>'truncate__table;',                    next_date =>sysdate,                    interval =>'trunc(sysdate + 1) + 3/24');end;

 

sql plus

variable jobno number;beginsys.dbms_job.submit(job => :jobno,what => 'change_date;',next_date => to_date('18-11-2013', 'dd-mm-yyyy'),interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行change_date过程一次commit; --必须有commit,如果没有是查不到该job的!!!end;

variable相当于一个sql*plus环境的全局变量,declare里定义的是pl/sql中的局部变量。

 

查看job

select * from user_jobs;--查看当前用户的调度任务select * from dba_jobs_running;--查看正在执行的调度任务select * from dba_jobs;--查看执行完的调度任务select * from all_jobs; -- 查看数据库系统所有任务

 

常用时间设置

(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'。每天运行一次'SYSDATE + 1'每小时运行一次'SYSDATE + 1/24'每10分钟运行一次'SYSDATE + 10/(60*24)'每30秒运行一次'SYSDATE + 30/(60*24*60)'每隔一星期运行一次'SYSDATE + 7'每分钟dbms_job.submit(:v_job_no, 'insert into job_test values(sysdate);', sysdate,'sysdate+1/1440');

 

 

 

备注:

oracle定时执行job queue 的后台进程是SNP,要启动

snp,首先看系统模式是否支持

sql> alter system enable restricted session;

sql> alter system disenable restricted session;

利用上面的命令更改系统的会话方式为disenable restricted,为snp的启动创建条件.

再有就是配置job queue的启动参数,snp的启动参数位于oracle的初始化文件中,
job_queue_processes=10   (oracle10gde 默认值)
job_queue_interval=N

第一行定义snp进程的启动个数为10,正常范围是0-36,根据任务的多少,可以配置

不同的数值.

第二行定义系统每隔几秒唤醒该进程一次.缺省是60,正常范围是1-3600秒.事实上,该进程执行完

当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。  

如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效

。注意:如果任务要求执行的间隔很短的话,N的配置也要相应地小一点。

查看job queue的详细信息,查询数据库字典 user_jobs

eg:

 sql> select job,next_date,next_sec,broken from user_jobs;

转载于:https://www.cnblogs.com/linn/p/4317514.html

你可能感兴趣的文章
kafka 主要内容介绍
查看>>
VirtualBox下安装ubuntu server 16.04
查看>>
VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
查看>>
Linux获取网页源码的几种方法
查看>>
write a python http server & client
查看>>
关于查看网页源文件不显示源代码(打开的是桌面文件夹)的问题
查看>>
关于STM32加密 (转,留个备份)
查看>>
艾伟:闲说继承
查看>>
UITableView
查看>>
程序员必知8大排序3大查找(二)
查看>>
iphone crash 日志查看
查看>>
编译apache报错 No recognized SSL/TLS toolkit detected
查看>>
Python进阶03 模块
查看>>
mac基本命令
查看>>
IOC疑惑
查看>>
爱上一匹野马
查看>>
ADS的使用
查看>>
STL的string和wstring
查看>>
[ucgui] 仪表盘函数
查看>>
windows下的Nginx+Squid+Tomcat+Memcached集群
查看>>