在使用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)。这个方法的确已经释放空间,目测是我太暴力,把一些不该杀的进程给杀了,由于时间问题,没时间验证了,各位操作需谨慎啊,一不留神删库跑路了都。