oracle磁盘空间占满解决_PG server 磁盘空间占满问题的处理方法 | 运维进阶

前段时间客户运维人员报生产环境批处理数据库环境出问题,没办法正常运行,于是登录他们服务器,查看了PG日志文件,发现原来是磁盘空间满的原因:

接下来直接df -Th ,看到是home空间满,而我是将PG的data文件都存在在home目录下,那应该是PG的数据文件空间占满了,但是系统才运行2年,磁盘空间配置将近900G,一下子就占满了,肯定是某个程序代码突发性引起的。因为系统运行2年多一直没出问题,而且前几天有查看总的磁盘空间占用还不到30G。

经开发人员分析,确实是批处理语法出了问,题引起的一个特殊条件比较隐秘性的BUG。

0e29666031209519d2d4d28f1456e3e0.png

接下来的首要问题,是定位哪张表出了问题,并解决磁盘空间缩减问题,使系统正常启动运行。

通过定位分析是某张报表数据量占用空间导致磁盘空间占满,21亿笔数据。如下:

595f296ac1093d87483388e8dd14b8de.png

查看分析,确实是这张表占用了783G的空间导致的。

f67628d97af7c5353a6a021eedb867e0.png

问题处理第一步:

通过对PG数据库进行回收垃圾方式,看是否能回收部分,结果无法正常回收。然后再想通过重启数据库方式,看能不能释放下空间,结果无法正常启动了。

ae0556eb83281fbadf8a93456f6846b4.png

迫不得己,只好申请临时加一块1T的硬盘,然后重新修改配置,再启动数据库,进行数据删除与恢复。

1c105726e704bdd0ece74c92e7d8a7e4.png

因日常都有做备份工作,接下来只需把对应的表数据恢复到前一天的数据。

之前没经验,所以先把该表直接Drop表重建,然后重建索引,再进行数据导入。

问题得到解决:

684ef78afb6a04cf3e3dcfb866474f25.png

总结:

本次碰到的问题出现过两次,第一次以为是系统故障问题引起的,当时通过清理磁盘部分多余空间,然后对该表中脏数据进行清理剩下几十万笔数据,但是发现表空间和索引空间都没释放。原因是使用DELETE方式来逻辑删除表数据,但是空间是不释放的,于是重新命名了该表名称,然后重建该表,再复制数据,用drop方式删除旧表和索引,磁盘空间最终才得以释放。

备注: 当DELETE后面跟条件的时候,就会出现删除数据后,数据表占用的空间大小不会变。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值