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)中的所有归档日志文件,无论它们是否过期。请注意,删除所有归档日志将丧失对数据库的恢复点的能力,因此在执行此操作之前,确保已经有有效的备份并仔细考虑潜在的影响。此外,确保你有足够的磁盘空间来执行这个操作,因为删除大量归档日志可能需要一些时间。

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息