oracle空间满了该删哪些文件,oracle 增加表空间
linux删除oracle表空间文件后,不会释放空间
2014-10-20
linux删除oracle表空间文件后,不会释放空间
[ Oracle @ server 140数据8 ] $ df-h/data 8
filesystemsizeusedavailuse % mounted on
/dev/sda3 414G 375G 19G 96% /data8
[ Oracle @ server 140数据8 ] $ du-sh/data 8
57G /data8
磁盘空间未释放的原因:
在Linux或Unix系统上,在rm或文件管理器中删除文件会断开与文件系统目录结构的链接。 但是,如果文件已打开,并且正在使用一个进程,则仍然可以
读取此文件时,磁盘空间也一直被占用。 我删除的应该是oracle警告日志文件被删除时文件正在使用
如何释放进程?
一种方法是kill相应的进程,或停止使用此文件的APP应用程序,以便操作系统自动回收磁盘空间
我的环境中有许多进程使用的这个文件,停止进程有点麻烦,而且风险更大
当linux打开文件时,linux内核会为每个进程在/proc/『/proc/nnnn/fd/目录(nnnn为pid )”中创建其pid
名为的目录用于存储有关进程的信息,该子目录fd存储打开进程的所有文件的FD (FD )。
kill进程通过截断proc文件系统中的文件,强制系统重用分配给正在使用的文件。
这是只有在管理员确定不影响正在运行的进程时才使用的高级技术。 我们的APP应用程序向这种人
公式支持不好。 如果正在使用的文件被截断,则可能会发生意外问题
所以我还是采用停止和解决APP应用
restart oracle数据库,发现释放了相应的空间
例如
[ Oracle @ server 140~] $ lsof|grep deleted|grep 201406
Oracle 15718 Oracle 26 ureg 8,3437549957123801090/data8/Oracle/viewer _ data _ ts _ 201406 _1. DBF (已删除) )。
Oracle 15718 Oracle 28 ureg 8,3405337702403801091/data8/Oracle/viewer _ data _ ts _ 201406 _2. DBF (已删除) )。
Oracle 28836 Oracle 62 ureg 8,3437549957123801090/data8/Oracle/viewer _ data _ ts _ 201406 _1. DBF (已删除) )。
Oracle 28836 Oracle 63 ureg 8,3405337702403801091/data8/Oracle/viewer _ data _ ts _ 201406 _2. DBF (
Oracle 28838 Oracle 62 ureg 8,3437549957123801090/data8/Oracle/viewer _ data _ ts _ 201406 _1. DBF (已删除) )。
Oracle 28838 Oracle 63 ureg 8,3405337702403801091/data8/Oracle/viewer _ data _ ts _ 201406 _2. DBF (
cd /proc/15718/fd|grep 201406
ll
lwx---1 Oracle oinstall 64 oct 201233603726---- data8/Oracle/viewer _ data _ ts _ 201406 _1. DBF (
lwx---1 Oracle oinstall 64 oct 201233603728---data8/Oracle/viewer _ data _ ts _ 201406 _2. DBF (
重新启动连接的服务后进行处理
相关日志