ORA-16038 ORA-19809 ORA-00312

时间:2023-03-09 15:52:43
ORA-16038 ORA-19809 ORA-00312

问题表现:

连接数据库启动报错,ORA-03113,

ORA-16038 ORA-19809 ORA-00312

查看详细的alert日志发现更多报错,如下

ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 209715200 字节磁盘空间 (从 19368247296 字节限制中)

ORA-16038: ?? 2 sequence# 154 ????
ORA-19809: ???????????
ORA-00312: ???? 2 ?? 1: '+DATA/ORCL/ONLINELOG/group_2.259.980678623'
ORA-00312: ???? 2 ?? 1: '+FRA/ORCL/ONLINELOG/group_2.258.980678625'

问题处理:

百度到的解决方式:

首先将数据库启动到mount状态

SQL> startup mount;
ORACLE 例程已经启动。 Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
数据库装载完毕。

查看日志组信息

SQL> select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
NO CURRENT
NO INACTIVE
NO CURRENT
YES INACTIVE

组1处于非当前未活跃状态,并且没有处于归档,更改组1的状态

SQL> alter database clear unarchived logfile group ;

数据库已更改。

SQL> select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
YES UNUSED
NO CURRENT
NO CURRENT
YES INACTIVE SQL> alter database open; 数据库已更改。

数据库起来了,但是其中的原理还不清晰......