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

Rac环境下,启动数据库时候提示以下错误:

[grid@RAC1 ~]$ srvctl  start database -d racdb

PRCR-1079 : 无法启动资源 ora.racdb.db

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does notexist

Linux-x86_64 Error: 2: No such file ordirectory

进程 ID: 0

会话 ID: 0 序列号: 0

ORA-03113: 通信通道的文件结尾

进程 ID: 6598

会话 ID: 125 序列号: 3

CRS-2674: 未能启动 'ora.racdb.db' (在 'rac1' 上)

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does notexist

Linux-x86_64 Error: 2: No such file ordirectory

进程 ID: 0

会话 ID: 0 序列号: 0

CRS-2632: 没有更多符合资源'ora.racdb.db' 的布局策略的服务器来尝试放置该资源

 

 

后考虑通过sqlplus启动数据库,

[oracle@RAC1 ~]$ sqlplus / as sysdba

SQL>startup;

数据库会提示03113错误

ORA-03113: end-of-file on communicationchannel

 

查看alter日志

[oracle@RAC1 ~]$tail -100 /u01/app/oracle/diag/rdbms/racdb/racdb1/trace/alert_racdb1.log

 

Errors in file/u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_ora_6118.trc:

ORA-19809: 超出了恢复文件数的限制

ORA-19804: 无法回收 42991616 字节磁盘空间 (从 314572800 限制中)

ARCH: Error 19809 Creating archive log fileto '+DATA'

Errors in file/u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_ora_6118.trc:

ORA-16038: 日志 1 sequence# 75 无法归档

ORA-19809: 超出了恢复文件数的限制

ORA-00312: 联机日志 1 线程 1:'+DATA/racdb/onlinelog/group_1.383.836176535'

ORA-00312: 联机日志 1 线程 1:'+DATA/racdb/onlinelog/group_1.384.836176537'

USER (ospid: 6118): terminating theinstance due to error 16038

Wed Feb 12 22:51:24 2014

System state dump is made for localinstance

System State dumped to trace file/u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_diag_5998.trc

Trace dumping is performingid=[cdmp_20140212225124]

Instance terminated by USER, pid = 6118

 

发现数据库无法启动的原因是因为归档日志文件已经满了,由于数据库无法启动,所以需要nomount的方式启动数据库

SQL>startup nomount;

查看实例状态

SQL> select status from v$instance;

STATUS

------------

STARTED

 

然后更改为mount状态

SQL>alter database mount

查看状态

SQL> select status from v$instance;

STATUS

------------

MOUNTED

 

看到限制实例启动起来了,那么我们就可以通过rman工具进行将归档日志处理(注意好备份)

[oracle@RAC1 ~]$ rman target /

 

RMAN> crosscheck backup;

 

RMAN> crosscheck archivelog all;

 

RMAN> delete  expired archivelog all;

 

然后将数据库状态改为open

SQL>alter database open

查看状态

SQL> select status from v$instance;

 

STATUS

------------

OPEN

这样数据库就完全启动起来了

启动之后,通过:

SQL>alter system setdb_recovery_file_dest_size =1000m;

将闪回区大小修改即可

你可能感兴趣的:(ORACLE问题解决)