阅读量:25
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- # 删除指定旧内核(保留当前使用的版本)
3. 清理临时文件与系统日志
- 临时文件:
/tmp目录下的文件可在重启后自动清理,或手动删除:sudo rm -rf /tmp/* - 系统日志:使用
journalctl清理旧日志(保留最近7天):sudo journalctl --vacuum-time=7d - Oracle相关日志:检查
$ORACLE_BASE/diag/rdbms/目录,删除过期的/ /trace/ alert_或跟踪文件。.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// SIZE 2048M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;.dbf' - 扩展现有数据文件:若数据文件支持
AUTOEXTEND,可直接调整大小:ALTER DATABASE DATAFILE '/u01/app/oracle/oradata// RESIZE 5G;.dbf'
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 = '' GROUP BY owner, tablespace_name; - 删除用户及对象:
DROP USER <username> CASCADE; -- 删除用户及所有对象
7. 收缩表空间文件
若表空间中有未使用的空间,可收缩数据文件释放空间(需确保文件有足够的空闲空间):
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata//.dbf'
RESIZE 3G; -- 调整为目标大小
注意事项
- 备份数据:操作前务必备份重要数据(如数据库全备、归档日志),避免误删导致数据丢失。
- 生产环境谨慎操作:如收缩数据文件、修改表空间大小等操作,需在业务低峰期进行,并测试环境验证。
- 监控空间使用:定期使用
df -h(查看磁盘空间)、du -sh /u01/app/oracle/*(查看Oracle目录大小)监控空间使用情况,提前预警。