打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delete大批量数据引起空间爆满处理

前一天晚上做大表删除操作测试,分段删除,没删除100000条commit一次,由于存储过程打印了执行时间中途断网,无法看到执行时间
于是直接kill了任务
结果早上登录测试数据库发现空间爆满
然后一时糊涂去弄了表的shrink跟dbms_stats.gather_table_stats想着收缩表释放空间
弄到一半突然想起,表的收缩最多是释放表空间的空闲空间,并非系统空间
后来想想,大量删除反复操作过程引发了undo的扩展,后来检查表空间后确实如此
最后在线更换undo tablespace后删除原tablespace后恢复

附上存储过程

另外调试时记得 set serveroutput on

遇到的报错提示

检查磁盘空间,爆满

想着收缩下大表就有空间了,,,糊里糊涂开始shrink

shrink后还需要重新收集统计信息,但是当空间爆满时同样无法进行统计信息收集

想想其实收缩、整理,只是释放表空间的已用空间到空闲空间,并不会回收实际的磁盘

先删除了一些本身在在根目录下的oracle安装文件才可以做undo表空间的重建工作,否则没空间还是无法工作

由于大量操作导致了undo的自动扩展,占用了大量空间,准备收缩undo

undo表空间的重建工作

再来看看空间

 

再来收集统计信息查看下最高水位

如果是生产系统那会很惨,日常监控要非常注意数据库空间、系统空间

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Oracle 高水位线的一点研究
Oracle高水位线
Oracle中高水位线(HWM)
实例对比Oracle中truncate和delete的区别
dbms_stats.gather_table_stats与analyze table 的区别
收集oracle统计信息
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服