Oracle 执行日志、flash_recovery_area清理
背景
团队数据库今天无法连接,提示No space left on device,执行df -dh查看磁盘空间后发现已满,其他目录尝试清理作用不大,最后发现flash recovery area空间占用异常,加上监听日志比较大,一起清理。
磁盘空间占用分析
# 查看磁盘整体情况
df -h
# 查看各目录空间占用大小
du -h --max-depth=1 ./
最后找出,
/home/oracle/app/oracle/diag/tnslsnr/***/listener/ 占用40GB
执行监听日志清理
# 停止监听
lsnrctl stop
# 清理
cd /home/oracle/app/oracle/diag/tnslsnr/***/listener/trace
rm -rf listener.log
cd /home/oracle/app/oracle/diag/tnslsnr/***/listener/alert
rm -rf *.xml
# 启用监听
lsnrctl start
执行flash recovery area清理
# 连接RMAN
rman target /
# 检索和清理
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL; # 删除过期的归档日志
RMAN> DELETE ARCHIVELOG ALL; # 删除所有的归档日志
RMAN> CROSSCHECK BACKUP;
RMAN> DELETE EXPIRED BACKUP; # 删除过期的备份
RMAN> DELETE OBSOLETE; # 删除过期的归档日志、过期的备份、保留最新备份
注意:删除FRA(Flash Recovery Area)中的所有归档日志文件,无论它们是否过期。请注意,删除所有归档日志将丧失对数据库的恢复点的能力,因此在执行此操作之前,确保已经有有效的备份并仔细考虑潜在的影响。此外,确保你有足够的磁盘空间来执行这个操作,因为删除大量归档日志可能需要一些时间。