oracle10g清理,oracle 10G 清理垃圾表

一次边学边干的oralce运维经历, 步步是坑啊。

起因: 一套运行了5年的系统, 客户近期反映比较慢。

了解了一下运行环境: windows2003(16G + 4核) +  jdk(32) +tomcat  和 window2003(4G + 双核) + oracle10G

现场现象: 客户操作出入库单据, ie一片空白持续很长时间, 体验十分糟糕, 用客户的话说: 这一天做单的工作量对得起这份薪水。

初步判断: tomcat连接数据库时候十分缓慢, 而且tomcat各种cpu,内存显示都比较正常, 所以把问题定位在数据库上, 然后发现数据库端由很多垃圾数据表, 大概4~5w张。

于是开始先删除这些表, 因为自己对oracle也不是很熟悉, 于是就理所当然的想着像sql server一样, drop table搞定。

select table_name from user_tables where table_name like 'T\_%' escape '\'

首先通过语句查询出表名一共4.5w个。 然后使用文本编辑器, 产生了4.5W个语句格式如下:

DROP TABLE tablename;

使用青蛙执行脚本文件5个小时总算执行完毕, 以为一切ok。 这是客户提醒说他依稀记得, 这样drop表好像还需要执行个语句, 不然表依然在数据库。

听后比较愕然, 度娘下, 结果真是。 表被drop 以后, 其实只是放到了一个叫垃圾箱的地方, 还要做垃圾回收。 再度娘下:

4.5w个表名转换了语句:

PURGE TABLE tablename;

或者drop的时候使用

DROP TABLE tablename PURGE;

使用青蛙执行脚本文件20个小时语句执行2.7w, oralce直接宕机了。  这时候发现硬盘满了。

这时候客户想看看是什么占用空间比较大, 删除了这么多表 , 依然这么大的空间。很不正常。

select * from dba_tablespaces;发现一个叫UNDOTBS01 的表空间99%的使用率, 占用33G。

于是又问度娘, 度娘说:

这个表空间是:回滚表空间,用来存放撤消操作的记录

我勒个去, 真是涨姿势了, 以前最多也就是oralce里面写个兼容oralce的语句, 还真的没有搞过这种运维的工作的。那个汗啊~~~~~~~~~, 不过幸好有度娘@#@#¥@

分析下这个原因, 硬盘满了, 这个表空间无法增长了, 已经无法执行其他操作了。 慢、宕机也就很正常了。

--create undo tablespace undotBS2 datafile 'C:\UNDOTBS1.DBF' size 100m;

--alter system set undo_tablespace=undotBS2;

--drop tablespace undotbs1 including contents;

执行这些语句, 重启oralce实例。 然后执行

select * from dba_tablespaces;发现UNDOTBS2 生效, 占100M。

这时候, oralce操作明显变快了。登陆系统、做业务也明显速度提升。

总结:

oralce清理表, 需要加PURGE参数方可生效, 否则只是放到垃圾回收站:

DROP TABLE tablename PURGE;

回滚表也需要适时清理,虽然可以自增长, 但是这个表空间过大, 影响oralce的运行效率:

--create undo tablespace undotBS2 datafile 'C:\UNDOTBS1.DBF' size 100m;

--alter system set undo_tablespace=undotBS2;

--drop tablespace undotbs1 including contents;

原文:http://blog.csdn.net/jgwei/article/details/41541095

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值