Orcale定时任务管理dbms_job

在Oracle中创建、运行、维护定时任务,配合存储过程可以完成很多特定的业务诉求,dbms_job提供了使用的API功能便于我们实现更为细致的定时任务管理

所属分类 数据库

相关标签 任务OracleAPI

诉求

大型的项目中通常会有一张表用来记录操作日志,日志的不断生成,资源的占用越来越大。

日志表的数据越来越多除了占用资源之外,对于后续的查询压力也会变大。

我们需要实现一个定时清理,来保证数据库不被垃圾数据塞满。

以上作为举例,作为定时任务实际上可以适用于很多业务场景。

存储过程

首先创建一个清理180天前操作日志的存储过程:

--删除操作日志存储过程
create or replace procedure P_CLEARLOG
as   
begin       
--删除入库时间180天前的数据     
  DELETE mebugs_operlog t WHERE (sysdate - to_date(t.writetime,'yyyyMMddhh24miss')) > 180; 
end;
/

定时任务

接着创建一个定时任务:

--建议一个定时任务,每天0点执行
--declare定义了一个任务ID,创建的定时任务ID就是job_no
--dbms_job.submit(任务ID,存储过程,下次执行,执行间隔); 
declare job_no number;  
begin  
dbms_job.submit(job_no,'P_CLEARLOG;',sysdate,'TRUNC(SYSDATE + 1)');  
commit;  
end; 
/

常见管理语句

--查询当前用户的JOB列表
select * from user_jobs;
--查询数据库所有的JOB列表(DBA权限)
select * from dba_jobs;
--执行定时任务(需要先查询上文的job_no是多少,比如:533)
begin  
dbms_job.run(533);--533为JOBID
end; 
/
--其他API(替换dbms_job.run(533);)
--删除
dbms_job.remove(533);  
--停止
dbms_job.broken(533, true, sysdate);
--修改存储过程
dbms_job.what(533, 'P_CLEARLOG_NEW');
--修改执行时间早六点
dbms_job.next_date(533, 'TRUNC(SYSDATE + 1)+6/24');
--修改执行间隔两天
dbms_job.interval(533, 'TRUNC(SYSDATE + 2)');

小结

执行间隔&下次执行,可以有多种时间组合。

通过如:TRUNC、next_day、LAST_DAY、ADD_MONTHS等函数进行实现。

此处不进行赘述。

米虫

做一个有理想的米虫,伪全栈程序猿,乐观主义者,坚信一切都是最好的安排!

本站由个人原创、收集或整理,如涉及侵权请联系删除

本站内容支持转发,希望贵方携带转载信息和原文链接

本站具有时效性,不提供有效、可用和准确等相关保证

本站不提供免费技术支持,暂不推荐您使用案例商业化

发表观点

提示

昵称

邮箱

QQ

网址

当前还没有观点发布,欢迎您留下足迹!

同类其他

数据库

Linux下Oracle数据库配置日志目录及统一迁移

很多运维人员习惯采用默认安装的方式安装Oracle数据库,而Oracle日志默认放置在/opt目录下,绝大多数Linux环境的大磁盘往往挂载在/home,因此经常会出现磁盘空间不足的情况,采用本文配置可指定并迁移日志

Oracle数据库基础实用维护命令集

Linux系统下的Oracle数据库实用常用的维护命令整理,本文内容偏向运维,主要包含:基础启动重启、表空间维护、数据库角色与用户维护、字符集配置等,并给出各类场景的实例语句

ORA-00257: archiver error. Connect internal only, until freed.

登录Oracle报错 ORA-00257: archiver error. Connect internal only, until freed. 由于归档日志(archive log)已满引起的。

Oracle存储过程Procedure基础语法

存储过程是个好东西,WEB工程在架构阶段会设计很多存储过程,后续在架构中开发需求的时候,反而会直接写SQL完成各项诉求。所以说,这玩意儿略微有那么一点点伪高端。

Oracle数据库MERGE INTO语句条件入库

Oracle 9i版本引入MERGE INTO语句,其主要用于实现条件入库能力,用于解决对于已有数据更新升级的情况,即可实现不存在数据则插入,存在数据则更新的分支判断形式的更新能力

MongoDB通过$lookup实现多表连接查询

对于数据库而言,多表连接操作可以算的上是基本操作,在 MongoDB 通过 $lookup 聚合查询可以实现多表左连接查询,在后续的版本中 $lookup 得到了一系列的增强,实现更为复杂的关联查询

选择个人头像

昵称

邮箱

QQ

网址

评论提示

  • 头像:系统为您提供了12个头像自由选择,初次打开随机为你选择一个
  • 邮箱:可选提交邮箱,该信息不会外泄,或将上线管理员回复邮件通知
  • 网址:可选提交网址,评论区该地址将以外链的形式展示在您的昵称上
  • 记忆:浏览器将记忆您已选择或填写过得信息,下次评论无需重复输入
  • 审核:提供一个和谐友善的评论环境,本站所有评论需要经过人工审核