问题描述

oracle归档日志占满系统存储空间,导致数据库启动失败;
存储空间占满导致rman工具无法使用,无法删除过期归档日志。

640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1 告警信息

告警信息:
1、 存储空间满,/opt占用率达到100%;
640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

2、无法进入数据库操作;
640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

3、无法使用rman工具清除过期归档日志。

640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1 处理过程

1、通过命令检查存储空间被哪个目录占用了,最深查询到第八层目录:du -h --max-depth=8。查询到/opt/oracle/archivelog有142G这么大,打开看有3000+的dbf文件,通过文件目录结构分析,此为数据库归档文件。
640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

2、删除数据库归档文件。
首先切换oracle用户
su – oracle
cd  /opt/oracle/archivelog
执行下面命令删除7天以前的归档日志:
find . -xdev -mtime +7 -name "*.dbf" -exec rm -f {}  \;

3、执行rman逻辑上删除过期日志
rman
RMAN> connect target /
>crosscheck archivelog all;
>delete expired archivelog all;
>quit

4、关闭数据库归档日志:
登录数据库:!sql
SQL> shutdown immediate
启动了实例,并加载了数据库  SQL> startup mount
归档->非归档  SQL> alter database noarchivelog;
检查是否成功  SQL> archive log list

5、启动数据库,完成。
SQL>alter database open;

此后,不再生成归档日志。

640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1 建议与总结

打开归档日志时,DBA定时清理归档文件,避免再次占满;
如不使用,关闭归档日志。

END