• Linux删除文件后磁盘目录不释放


    今天测试oracle数据库的时候,把表空间连带内容和数据文件一并删除了,但是删除之后,查看数据文件不存在了,但是目录的带下没有释放

    SQL> drop tablespace users including contents and  datafiles;

    查看目录大小

    $ df -h
    
    /dev/mapper/oravg01-oradglv01
                           30G   26G  2.7G  91% /oradata01

    发现目录剩余空间只有2.7G大小,明显不对,进入目录查看是否存在有文件

    $ ls
    control01.ctl  control02.ctl  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  temp2_01.dbf  undotbs01.dbf

    发现并没有users01.dbf这个文件,说明这个文件已经被删除了

    这就很奇怪了,没有数据文件,但是目录空间没有释放。这是因为删除文件时,删除的并不是磁盘上真正存在的数据文件,而是删除的目录,因此你看不到目录(文件路径报错文件名)

    但是实际的数据仍在,也就是可覆盖的,这时候,如果有一个程序,打开了文件句柄,没有关闭,也就是仍然在往这个文件写东西的话,就没办法覆盖,因此目录没有释放

    解决方法:

    # lsof|grep -i delete
    
    oracle    11472    oracle  259u      REG              253,4 17179877376     393221 /oradata01/monkey/users01.dbf (deleted)
    oracle    16477    oracle  261u      REG              253,4  6442459136     393229 /oradata01/monkey/users01.dbf (deleted)

    使用lsof命令(root),查看哪些进程还在往已经删除的文件中写数据

    我这个找到后,是我打开的oracle客户端,因此我把oracle客户端关闭后,目录就释放出来了

    # df -h
    
    /dev/mapper/oravg01-oradglv01
                           30G  9.3G   19G  34% /oradata01
  • 相关阅读:
    SQL跨服查询
    SQL时间函数
    MFC控件添加变量,control和value的区别
    error LNK2001 unresolved external symbol
    VS中C++代码折叠
    ERROR 2003 (HY000): Can't connect to MySQL server
    vs2012换肤功能,vs2012主题及自定义主题
    MFC、SDK和API有什么区别
    寻找子字符串int find_substr(char *s1, char *s2)
    document.title 跑马灯效果
  • 原文地址:https://www.cnblogs.com/monkey6/p/13402076.html
Copyright © 2020-2023  润新知