You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Oracle磁盘占用达91%,除临时文件外还可删除哪些内容?

Oracle磁盘占用91%?安全清理指南来啦

兄弟,磁盘冲91%确实得赶紧动手,先给你梳理清楚哪些内容绝对安全、不会搞崩数据库,再给你优先级建议,避免踩坑:

一、Oracle目录下可放心删除的内容

  • 临时文件目录(比如/tmp或Oracle指定的临时目录):除了你已经删的,还可以扫一遍所有.tmp/.temp后缀的文件,以及那些7天以上没被访问的临时文件(用命令find /path/to/oracle/tmp -type f -mtime +7就能定位)。放心,正在被数据库使用的临时文件会被锁定,你删的时候会提示,直接删那些能删掉的就行。
  • 已备份的归档日志:如果你的归档日志(一般在$ORACLE_BASE/diag/rdbms/<dbname>/<dbname>/trace或者专门的归档目录)已经完成异地备份(比如云存储、磁带库),旧的归档日志完全可以清。别直接用rm硬删,最好用Oracle自带的RMAN命令:
    RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
    
    这样只会删7天前已备份的日志,不会误删关键文件。
  • 过期的审计日志:审计日志默认存在$ORACLE_BASE/admin/<dbname>/adump,如果你的业务不需要长期追溯审计记录,直接删30天以上的文件就行:
    find $ORACLE_BASE/admin/<dbname>/adump -type f -mtime +30 -delete
    
  • 已异地备份的本地RMAN备份集:如果你用RMAN做了本地备份,且已经同步到外部存储,本地的旧备份(一般在$ORACLE_BASE/flash_recovery_area或自定义备份目录)可以清理,同样用RMAN命令更安全:
    RMAN> DELETE OBSOLETE;
    
    它会自动识别过期的备份,不会删错有用的。

二、磁盘占91%时的清理优先级

  1. 先清临时文件+过期日志:这部分见效最快,而且100%安全,不会影响数据库运行,优先搞。
  2. 清理本地冗余备份:如果有异地备份,本地备份一般占空间极大,清完能释放好几G甚至几十G。
  3. 压缩/清理大trace文件:有些trace文件会疯长到几个G,先看一下是不是近期的异常日志——如果只是普通的运行日志,直接压缩(gzip *.trc)或者删除就行;如果是报错日志,建议先排查问题再处理。
  4. 收缩临时表空间:如果临时表空间的临时文件(*.tmp)过大,且当前没有大查询、排序在运行,可以先收缩:
ALTER TABLESPACE TEMP SHRINK SPACE;

要是收缩效果不好,也可以切换临时表空间后删除旧的临时文件(操作前记得确认没有会话在使用它)。

三、绝对不能碰的红线!!

这些文件碰了直接搞崩数据库,甚至丢数据,打死也不能删:

  • 数据库数据文件(*.dbf):核心数据都在这,删了直接GG
  • 控制文件(*.ctl):数据库的“导航地图”,没它数据库起不来
  • 在线重做日志文件(*.log):正在使用的删了会导致数据库崩溃,即使是归档后的,也得确认已备份再动
  • 密码文件(orapw<dbname>):删了会导致远程登录、权限验证全失效

最后提醒

清理前最好先把要删的文件移到临时目录放1天,确认数据库运行正常再彻底删除,避免误操作。用RMAN清理时,先执行CROSSCHECK ARCHIVELOG ALL;确认日志状态,再删除更稳妥。

内容的提问来源于stack exchange,提问作者Ynz

火山引擎 最新活动