解决Oracle删除表空间后不释放空间占用的问题
在使用drop tablespace xxx including contents and datafiles
命令删除表空间后,磁盘依旧没有释放。其原因是被删除的文件正在被进程占用,导致系统无法释放空间。
解决方法如下:
查看占用被删除文件的PID
1 | lsof -n | grep deleted |
批量杀掉PID
验证所有输出的内容都是刚才drop表空间的文件是,使用如下命令批量删除:
请注意检查是否全部都是你刚才删除的dbf文件
1 | lsof -n | grep deleted |awk -F " " '{print $2}' |xargs kill -9 |
执行完以后,我顺便写了卸载Oracle | 堆栈之上 (tvzr.com)。这个方法的确已经释放空间,目测是我太暴力,把一些不该杀的进程给杀了,由于时间问题,没时间验证了,各位操作需谨慎啊,一不留神删库跑路了都。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment