oracle数据库定时任务
来源:互联网 发布:2013office软件下载 编辑:程序博客网 时间:2024/06/14 19:26
点击打开链接
--当前用户定时任务
select
count
(*)
from
user_jobs;
--有权限访问的定时任务
select
count
(*)
from
all_jobs;
常要Oracle数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作,这时需要用到一个函数dbms_job.submit,来完成oracle定时器Job时间的处理上。使用dbms_job.submit这个函数,我们只需要考虑两个事情:安排某一任务,和定制一个执行任务的时间点。但最重要也是最棘手的事情,我认为还是确定一个执行任务的时间点。时间点确定了,其他的事情就好办了。下面是函数dbms_job.submit使用方法:
其中:
●job:输出变量,是此任务在任务队列中的编号;
●what:执行的任务的名称及其输入参数;
●next_date:任务执行的时间;
●interval:任务执行的时间间隔。
其中Interval这个值是决定Job何时,被重新执行的关键;当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。如何更好地确定执行时间的间隔需要我们掌握一个函数TRUNC。
1.TRUNC(for dates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函数的使用情况:
1)按年截尾
select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'yyyy') from dual
-----------------------------------------------------------
2008-1-1
2)按月截尾
select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mm') from dual
--------------------------------------------------------
2008-3-1
3)按日截尾
select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'dd') from dual
----------------------------------------------------------------------
2008-3-1
4)按时截尾
select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'hh') from dual
----------------------------------------------------------------------
2008-3-1 8:00:00
5)按分截尾
select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mi') from dual
----------------------------------------------------------------------
2008-3-1 8:23:00
2.确定执行时间间隔
1)、 每分钟执行
Interval => TRUNC(sysdate,'mi') + 1 / (24*60)
2)、 每天定时执行
例如:每天的凌晨2点执行
Interval => TRUNC(sysdate) + 1 +2 / (24)
3)、 每周定时执行
例如:每周一凌晨2点执行
Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天
4)、 每月定时执行
例如:每月1日凌晨2点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
5)、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
6)、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
7)、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24
3.实例
这里提供了一个简单的例子,主要是完成在每一个时间间隔内向一个表中插入一条记录
1)创建测试表 、序列
--建触发器代码为:
2)创建一个自定义过程
过程已创建。
3)创建JOB
PL/SQL JOB已成功完成。
- oracle数据库定时任务
- oracle数据库定时任务
- oracle数据库定时任务
- ORACLE数据库定时任务
- oracle数据库定时任务
- oracle数据库定时任务
- oracle数据库定时任务
- oracle数据库定时任务
- Oracle 数据库采用Job 实现定时任务
- Oracle数据库Java备份恢复定时任务
- ORACLE数据库定时任务—DBMS_JOB
- oracle定时任务配置
- oracle定时任务(dbms_job)
- oracle定时任务(dbms_job)
- Oracle定时任务
- oracle定时任务
- oracle定时任务[转]
- oracle定时任务[转]
- Fedora更新系统时Transaction check error解决
- webbench源码分析之usage函数
- 去除字符串中间的空格换行
- 今日头条Go建千亿级微服务的实践
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- oracle数据库定时任务
- UML之用例图
- 洛谷 P2024 食物链
- 【C++】随机生成数组->冒泡排序->二分查找
- kamailio dispatch负载均衡
- HDU-5975 Aninteresting game(树状数组原理)
- hibernate-6-事务初步了解
- Linux C 网络编程
- AngularJS项目实战(总结)