这是昨天同事在客户现场遇到的一个问题,数据库数据文件存放在AIX的文件系统/oracle目录下,/oracle目录大小为250G,由于/oracle目录容量过高,他需要 

删除一些东西清理一些空间出来。
他选择了删除其中一个实例名test的数据库的数据文件目录,该目录也在/oracle目录之下,大小为42G。他用rm -r命令删除了该目录,df命令查看/oracle的使用率,并没有变换,但是该目录已经删除,
这是什么原因呢?
我们知道,如果在windows的环境下,如果实例没有关闭,由于windows的服务保护打开的数据文件,所以我们直接删除数据文件时会报错:
E:\oradata\test>dir
驱动器 E 中的卷是 work
卷的序列号是 082F-6479
E:\oradata\test 的目录
2013/03/29 17:09 <DIR> .
2013/03/29 17:09 <DIR> ..
2013/08/08 09:50 7,061,504 CONTROL01.CTL
2013/08/08 09:50 7,061,504 CONTROL02.CTL
2013/08/08 09:50 7,061,504 CONTROL03.CTL
2013/07/24 11:28 52,429,312 REDO01.LOG
2013/07/24 11:28 52,429,312 REDO02.LOG
2013/07/24 11:28 52,429,312 REDO03.LOG
2013/07/24 11:28 314,580,992 SYSAUX01.DBF
2013/07/24 11:28 513,810,432 SYSTEM01.DBF
2013/07/15 22:03 20,979,712 TEMP01.DBF
2013/07/24 11:28 31,465,472 UNDOTBS01.DBF
2013/07/24 11:28 7,872,512 USERS01.DBF
11 个文件 1,067,181,568 字节
2 个目录 66,252,713,984 可用字节
E:\oradata\test>del system01.dbf
E:\oradata\test\SYSTEM01.DBF
另一个程序正在使用此文件,进程无法访问。 
但是在unix系统中,即使实例正常运行,还是可以直接rm掉数据文件,其实,在unix系统中,不仅是对oracle的数据文件,当你rm一个文件的时候,如果这个文件是被某个进程打开的,你命令能够运行成功,也可以删除掉文件甚至所在目录,但是该文件仍然被打开它的进程抓着,所以只是一种假删除现象,直到进程终止,才能够真正释放空间。
让同事ps -ef | grep smon查看test实例是否运行,果然是启动的,登进去shutdown abort后df命令再查看,容量已经释放,使用率降下来了。