APT缓存会占用大量磁盘空间(尤其是频繁安装/卸载软件后),使用以下命令清理:
sudo apt-get clean # 清理已下载的软件包缓存(/var/cache/apt/archives/)
sudo apt-get autoclean # 清理旧版本的软件包缓存
sudo apt-get autoremove # 删除不再需要的依赖包
旧内核版本会占用/boot分区空间(常见于Ubuntu系统),使用以下命令查看并删除旧内核:
dpkg --list | grep linux-image # 列出已安装的内核版本
sudo apt-get purge linux-image-<version> # 删除指定旧内核(保留当前使用的版本)
/tmp目录下的文件可在重启后自动清理,或手动删除:sudo rm -rf /tmp/*
journalctl清理旧日志(保留最近7天):sudo journalctl --vacuum-time=7d
$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/目录,删除过期的alert_<instance>.log或跟踪文件。使用find命令定位大文件(如大于1GB的文件),并根据实际情况删除或压缩:
sudo find / -type f -size +1G -exec ls -lh {} \; # 查找大于1GB的文件
重点检查/u01/app/oracle(Oracle安装目录)、/oradata(数据库文件目录)等路径。
归档日志会持续占用磁盘空间,需定期清理:
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;
Oracle删除的对象会进入回收站(DBA_RECYCLEBIN),占用表空间空间,需清空:
sqlplus / as sysdba
SQL> PURGE DBA_RECYCLEBIN;
若表空间使用率过高(如超过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;
使用Oracle内置压缩功能减少数据占用空间(对查询性能影响较小):
ALTER TABLE <table_name> MOVE COMPRESS FOR OLTP;
将不常用的表或分区移动到空间充足的表空间,平衡负载:
ALTER TABLE <table_name> MOVE TABLESPACE <new_tablespace_name>;
-- 若表有索引,需同步移动索引
ALTER INDEX <index_name> REBUILD TABLESPACE <new_tablespace_name>;
清理不再使用的用户及其对象(如表、索引、视图),释放空间:
SELECT owner, tablespace_name, SUM(bytes)/1024/1024 "占用空间(MB)"
FROM dba_extents
WHERE owner = '<username>'
GROUP BY owner, tablespace_name;
DROP USER <username> CASCADE; -- 删除用户及所有对象
若表空间中有未使用的空间,可收缩数据文件释放空间(需确保文件有足够的空闲空间):
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/<db_name>/<file_name>.dbf'
RESIZE 3G; -- 调整为目标大小
df -h(查看磁盘空间)、du -sh /u01/app/oracle/*(查看Oracle目录大小)监控空间使用情况,提前预警。