Ubuntu Oracle磁盘空间不足怎么处理
导读: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
