西大贝de烂笔头

多思考、多总结、勤动笔

导航

Linux df -h空间显示不正确

今天发现一个测试数据库磁盘空间快满了,准备将几个不再用的表空间删除。通过以下命令删除表空间内容及数据文件。

drop tablespace tablespace_name including contents and datafiles;

删除之后通过df -h查看磁盘空间,没有减少,反而增加了,很是奇怪。去存放数据文件的目录查看,相关表空间的文件也已经被删除了。

百度了一下,发现了遇到相同情况的一个帖子,具体见这里

处理过程如下:

1、通过lsof命令查看是否有进程正在占用这几个表空间数据文件

lsof | grep delete

2、结果中可以看到有两个进程占用着需要删除文件

3、通过操作系统进程(可见这篇文章)查看oracle的session,查看到一台机器有客户端连接着数据库,实际上是pl/sql developer

4、到这台机器上关掉pl/sql developer,文件被真正删除,df -h显示空间正常

原因:

1、虽然通过rm -rf删除了文件,但是有进程正在连接着这个文件,所以实际上这个文件是没有被彻底删除的,直到连接的进程被kill掉才会彻底删除这个文件;

2、du是通过文件名统计使用空间的,rm -rf之后文件对于文件系统来说就已经没有了,所以du查看空间正确,而df是查看的实际硬盘使用空间。

 

posted on 2018-03-07 09:07  西大贝  阅读(4353)  评论(0编辑  收藏  举报