首页主机资讯Ubuntu Oracle磁盘空间不足怎么处理

Ubuntu Oracle磁盘空间不足怎么处理

时间2025-11-07 13:14:05发布访客分类主机资讯浏览757
导读:Ubuntu系统层面磁盘空间清理 1. 清理APT缓存 APT缓存会占用大量磁盘空间(尤其是频繁安装/卸载软件后),使用以下命令清理: sudo apt-get clean # 清理已下载的软件包缓存(/var/cache/apt/arc...

Ubuntu系统层面磁盘空间清理

1. 清理APT缓存

APT缓存会占用大量磁盘空间(尤其是频繁安装/卸载软件后),使用以下命令清理:

sudo apt-get clean  # 清理已下载的软件包缓存(/var/cache/apt/archives/)
sudo apt-get autoclean  # 清理旧版本的软件包缓存
sudo apt-get autoremove  # 删除不再需要的依赖包

2. 删除旧内核文件

旧内核版本会占用/boot分区空间(常见于Ubuntu系统),使用以下命令查看并删除旧内核:

dpkg --list | grep linux-image  # 列出已安装的内核版本
sudo apt-get purge linux-image-<
    version>
      # 删除指定旧内核(保留当前使用的版本)

3. 清理临时文件与系统日志

  • 临时文件:/tmp目录下的文件可在重启后自动清理,或手动删除:
    sudo rm -rf /tmp/*
    
  • 系统日志:使用journalctl清理旧日志(保留最近7天):
    sudo journalctl --vacuum-time=7d
    
  • Oracle相关日志:检查$ORACLE_BASE/diag/rdbms/< db_name> /< instance_name> /trace/目录,删除过期的alert_< instance> .log或跟踪文件。

4. 查找并清理大文件

使用find命令定位大文件(如大于1GB的文件),并根据实际情况删除或压缩:

sudo find / -type f -size +1G -exec ls -lh {
}
     \;
      # 查找大于1GB的文件

重点检查/u01/app/oracle(Oracle安装目录)、/oradata(数据库文件目录)等路径。

Oracle数据库层面空间优化

1. 清理归档日志

归档日志会持续占用磁盘空间,需定期清理:

  • 使用RMAN删除7天前的归档日志:
    rman target /
    RMAN>
         DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
        
    RMAN>
         exit
    
  • 若归档日志已满导致数据库无法写入,可临时关闭归档模式(需谨慎,生产环境建议开启):
    sqlplus / as sysdba
    SQL>
         SHUTDOWN IMMEDIATE;
        
    SQL>
         STARTUP MOUNT;
        
    SQL>
         ALTER DATABASE NOARCHIVELOG;
        
    SQL>
         ALTER DATABASE OPEN;
        
    

2. 清理回收站

Oracle删除的对象会进入回收站(DBA_RECYCLEBIN),占用表空间空间,需清空:

sqlplus / as sysdba
SQL>
     PURGE DBA_RECYCLEBIN;
    

3. 扩展表空间

若表空间使用率过高(如超过90%),可通过以下方式扩展:

  • 添加数据文件:向现有表空间添加新的数据文件(需确保磁盘有足够空间):
    ALTER TABLESPACE <
        tablespace_name>
        
    ADD DATAFILE '/u01/app/oracle/oradata/<
        db_name>
        /<
        new_file>
        .dbf'
    SIZE 2048M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
        
    
  • 扩展现有数据文件:若数据文件支持AUTOEXTEND,可直接调整大小:
    ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/<
        db_name>
        /<
        existing_file>
        .dbf'
    RESIZE 5G;
        
    

4. 压缩数据

使用Oracle内置压缩功能减少数据占用空间(对查询性能影响较小):

  • 表压缩
    ALTER TABLE <
        table_name>
         MOVE COMPRESS FOR OLTP;
        
    
  • 分区表压缩:针对大分区表,可单独压缩特定分区。

5. 移动数据到其他表空间

将不常用的表或分区移动到空间充足的表空间,平衡负载:

ALTER TABLE <
    table_name>
     MOVE TABLESPACE <
    new_tablespace_name>
    ;
    
-- 若表有索引,需同步移动索引
ALTER INDEX <
    index_name>
     REBUILD TABLESPACE <
    new_tablespace_name>
    ;
    

6. 删除无用用户与对象

清理不再使用的用户及其对象(如表、索引、视图),释放空间:

  • 查询用户占用空间
    SELECT owner, tablespace_name, SUM(bytes)/1024/1024 "占用空间(MB)"
    FROM dba_extents
    WHERE owner = '<
        username>
        '
    GROUP BY owner, tablespace_name;
        
    
  • 删除用户及对象
    DROP USER <
        username>
         CASCADE;
          -- 删除用户及所有对象
    

7. 收缩表空间文件

若表空间中有未使用的空间,可收缩数据文件释放空间(需确保文件有足够的空闲空间):

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/<
    db_name>
    /<
    file_name>
    .dbf'
RESIZE 3G;
      -- 调整为目标大小

注意事项

  • 备份数据:操作前务必备份重要数据(如数据库全备、归档日志),避免误删导致数据丢失。
  • 生产环境谨慎操作:如收缩数据文件、修改表空间大小等操作,需在业务低峰期进行,并测试环境验证。
  • 监控空间使用:定期使用df -h(查看磁盘空间)、du -sh /u01/app/oracle/*(查看Oracle目录大小)监控空间使用情况,提前预警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Oracle磁盘空间不足怎么处理
本文地址: https://pptw.com/jishu/745034.html
Debian系统下如何搭建LNMP测试环境 Debian LNMP如何实现高并发处理

游客 回复需填写必要信息