今天分享一次Oracle启动故障 ——Oracle 12c 数据库启动失败,维护报 ORA-03113 和 ORA-19809 的笔记处理实战。

一、启动全记故障现象
在尝试启动 Oracle 数据库时,失败实战提示如下错误:

同时,排错后台日志 alert_rac12c.log 显示如下内容:
复制tail -100 /data/u01/app/oracle/diag/rdbms/rac12c/rac12c/trace/alert_rac12c.log1.
二、维护问题分析
错误分析关键点如下:
ORA-19815:FRA(Fast Recovery Area)已满;ORA-19809:无法创建新的笔记归档日志;ORA-16038:当前 redo log 无法归档;ORA-03113:客户端与实例失联(其实是 Oracle 主动终止实例);这是一种典型的因 FRA 空间不足导致 redo 无法归档,最终实例崩溃 的启动全记场景。
三、亿华云失败实战解决步骤
1. 清理日志我们手动删除了一部分归档日志文件(这一步要谨慎,排错可以先备份):
复制rm -rf /data/u01/app/oracle/fast_recovery_area/rac12c/RAC12C/archivelog/*1.但仅删除物理文件还不够,维护Oracle 控制文件中仍然记录了这些日志。笔记
2. 使用 RMAN 进行同步 复制rman target / RMAN> CROSSCHECK ARCHIVELOG ALL; RMAN> DELETE EXPIRED ARCHIVELOG ALL;1.2.3.4.这一操作可以同步控制文件和实际文件状态,启动全记释放空间并消除假归档记录。失败实战但是排错执行失败。
第二步尝试仍失败。
重新执行 startup 后仍然失败,说明当前 redo 日志已经“卡死”,无法被归档,也无法被覆盖。
3. 强制切换至非归档模式救急为了解除当前 redo log 的归档限制,云服务器提供商我们使用以下“强制解锁”方案:
复制SQL> startup mount; SQL> alter database noarchivelog; SQL> alter database open;1.2.3.这一步成功打开数据库。

随后为了恢复正常备份策略,我们重新切回归档模式:
复制SQL> shutdown immediate; SQL> startup mount; SQL> alter database archivelog; SQL> alter database open;1.2.3.4.至此,问题成功解决。

四、总结与建议
故障根因:
主要问题是我们没有给日志归档设置自动回收,FRA 空间耗尽,导致 redo 无法归档,实例异常终止。
五、预防建议
项目
建议配置
FRA 空间
不小于数据库大小的 2 倍
RMAN 策略
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
定期清理
使用 DELETE OBSOLETE


相关文章



精彩导读

热门资讯
关注我们
