Oracle 计划任务批量清理临时表实例
昨天发现近一段时间,公司某oracle库数据泵方式备份比之前慢了很多,备份集大小并未增长太多。查看了下发现该用户下存在几十万张表。
一、问题分析
1.查看用户下面的表
select count(*) from user_tables
count(*)
-- ---------
1 754583
2.按表名查看用户下的表类型数量统计
select substr(table_name, 0, 4), count(*)
from user_tables
group by substr(table_name, 0, 4)
order by count(*) desc
SUBSTR(table_name, 0, 4) count(*)
---------------------------------------------------------------------
1 SUME 441718
2 TEMP 209421
3 SUBR 34659
4 HP_T 3103
5 TEPT 1932
6 CITE 163
3.查看表数量最多的分类的全名
select * from user_tables where table_name like 'SUME%'


表名可以看出后面全是随机数,所有表为空表。
二、确认及解决问题
1.确认
经过和开发确认后SUME、TEMP、SUBR这三类表是程序代码中创建并使用完临时表后没有清理操作,历史的不会再被复用。
2.解决过程
(1)程序代码最后添加清理会话创建的临时表操作。
(2)通过存储过程和JOB任务清理历史的临时表和程序补丁生效前产生的临时表。
(3)待问题解决后停用/清理JOB任务。
(2.1)存储过程
select min(created),max(created) from user_objects where object_type = 'TABLE' and object_name like 'TEMP%'
--可以先看下要清理的临时表的时间范围,看是否存在近期使用的。

--存储过程正文
create or replace procedure p_drop_temq is v_tab_name varchar(30);
cursor cur_drop_temq is select object_name from user_objects where object_type = 'TABLE' and (object_name like 'TEMP%' or object_name like 'SUME%' or object_name like 'SUBR%' ) and created < sysdate - 3; --为了防止影响现有用户使用,清理3天之前的临时表。建议先执行查询语句确认下要清理的表,执行前做好备份。
begin
open cur_drop_temq;
loop fetch cur_drop_temq into v_tab_name;
exit when cur_drop_temq%notfound;
execute immediate 'drop table ' || v_tab_name;
end loop;
close cur_drop_temq;
end;
(2.2)创建job定时任务 实现自动调用存储过程
declare
job number;
BEGIN
DBMS_JOB.SUBMIT(JOB => job, /*自动生成JOB_ID*/
WHAT => 'P_DROP_TEMQ;', /*需要执行的存储过程名称或SQL语句*/
NEXT_DATE => sysdate, /*初次执行时间*/
INTERVAL => 'sysdate+ 1+2/(24)' /*每天凌晨2点*/);
commit;
end;
(2.3)通过查询系统表查看该job信息 select * from user_jobs ;
详细操作可参考文章:Oracle JOB详解
(3)JOB的停用/清理
删除JOB方法:注:BROKEN值如果为TRUE则为停用,FALSE为启用,默认FALSE。
begin
DBMS_JOB.BROKEN(JOB编号,TRUE);
dbms_job.remove(JOB编号);
commit;
end;
以下是只执行stop job的效果
begin
DBMS_JOB.BROKEN(83,TRUE);
--dbms_job.remove(JOB编号);
commit;
end;

如果需要同时删除几个job
begin
--DBMS_JOB.BROKEN(43,TRUE);
dbms_job.remove(43);
--DBMS_JOB.BROKEN(44,TRUE);
dbms_job.remove(44);
--DBMS_JOB.BROKEN(45,TRUE);
dbms_job.remove(45);
commit;
end;
Oracle 计划任务批量清理临时表实例的更多相关文章
- Oracle 11.2.0.4单实例打PSU,OJVM PSU补丁快速参考
写在前面: 1.Oracel打每个补丁的操作有时存在差异,所以不管多熟悉,都应该在打任何补丁之前阅读新补丁中附带的readme. 2.Oracle每季度都会更新一个最新的PSU,本文最新指的是当前最新 ...
- 分享一个批量导出当前实例下的所有linkedserver脚本
分享一个批量导出当前实例下的所有linkedserver脚本 很多时候,我们都需要导出实例下面的登录用户,job,linkedserver等等 导出job比较复杂,下午写了一个脚本把所有的linked ...
- 查询oracle数据库的数据库名、实例名、ORACLE_SID
数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...
- oracle和mysql批量合并对比
orm框架采用mybatis,本博客介绍一下批量合并merge用oracle和mysql来做的区别, oracle merge合并更新函数的详细介绍可以参考我以前的博客:https://blog.cs ...
- CLOUD清理临时表空间
--查找空间名.物理空间路径 SELECT name, physical_nameFROM sys.master_filesWHERE database_id = DB_ID('tempdb'); 可 ...
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- Asianux 7.3安装Oracle 11.2.0.4单实例体验
环境:Asianux 7.3 需求:安装Oracle 11.2.0.4 单实例 背景:系统使用默认的最小安装部署,Oracle安装额外需要的包统一使用yum安装. 查看当前系统相关信息: [root@ ...
- Nginx 负载均衡的Cache缓存批量清理的操作记录
1)nginx.conf配置 [root@inner-lb01 ~]# cat /data/nginx/conf/nginx.conf user www; worker_processes 8; #e ...
- Linux平台Oracle 12.1.0.2 单实例安装部署
主题:Linux平台Oracle 12.1.0.2 单实例安装部署 环境:RHEL 6.5 + Oracle 12.1.0.2 需求:安装部署OEM 13.2需要Oracle 12.1.0.2版本作为 ...
- PHP批量清理MIP-cache缓存(内附在线mipcache清理工具)
MIP是什么?我就不多说了把. MIPCache 又是什么? 科普一下:MIPCache 是一套基于代理的 CDN 缓存系统.可用于缓存所有被某度相关页面引用或者从百度相关服务点出的 MIP 页面.当 ...
随机推荐
- vue.js----之router详解(三)
在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制 而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的 至于为什 ...
- maven学习记录:命令行查看本地仓库所在位置
命令行 mvn help:effective-settings 查看localRepository的的位置
- pip 下载换源
命令:[pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple]
- react toolkit 异步请求之后调取其他函数
在slice切片文件中,页面dispatch执行action之后,异步请求完成后调取另外一个异步请求,要在异步请求的 第二个参数添加 thunkAPI,调取thunkAPI的dispatch方法即 ...
- 宝塔邮局-并解决A纪录解析失败问题
为什么一定要用这个邮局呢,只要是方便,在宝塔面板直接安装就行了. 使用教程如下: https://www.bt.cn/bbs/thread-87496-1-1.html 有一个BUG本来已经设置好了, ...
- c# 服务端接入个推指定对象消息推送
个推消息推送主要步骤:1.获取鉴权token 2.发送推送消息 1.获取鉴权token(会过期,需要间隔时间获取一次): tokenUrl = "https://restapi.getui. ...
- 【电路理论】Flyback dc-dc convertor 反激式dc-dc变换器
最近在学dc-dc电源时,遇到Flyback电路的,感觉云里雾里,不太明白,四处翻阅,方才有所理解,记录一下 一般Flyback convertor的拓扑如下 认为,当VT导通时,原边变压器储能,由于 ...
- react native 第三方富文本编辑器 wxik/react-native-rich-editor(在移动端使用)
//更新2021年8月23日 (1)wxik/react-native-rich-editor 个人认为功能比较全,推荐使用 关于使用的案例,官网上有,我直接粘贴我遇到的几个问题 1. 软键盘弹出时 ...
- Java基础学习:9、访问修饰符
Java提供四种访问控制修饰符,用于控制方法和属性(成员变量)的访问权限(范围). 注意事项: 1.修饰符可以访问类中的属性.成员方法.以及类. 2.只用默认修饰符.public可以修饰类. 3.成员 ...
- 20203412马畅若 实验三 《Python程序设计》Socket编程技术实验报告
实验三 Socket编程技术 课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2020年5月30日必修/选修: 公选课 ##1. ...