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;
将闪回区大小修改即可