活着,寻找生存。
分类: Oracle
2015-11-21 22:45:06
由于周末停电所以把相关的测试数据库都关闭了,但是在启动一套RAC数据库时出现如下错误:
1:启动数据库报错如下:
oracle@orarac1 /home/oracle$ srvctl start database -d orarac
PRCR-1079 : Failed to start resource ora.orarac.db
CRS-5017: The resource action "ora.orarac.db start" encountered the following error:
ORA-03113: end-of-file on communication channel
Process ID: 579
Session ID: 203 Serial number: 1
. For details refer to "(:CLSN00107:)" in "/opt/11.2.0/grid/log/orarac1/agent/crsd/oraagent_oracle/oraagent_oracle.log".
CRS-2674: Start of 'ora.orarac.db' on 'orarac1' failed
CRS-2632: There are no more servers to try to place resource 'ora.orarac.db' on that would satisfy its placement policy
CRS-5017: The resource action "ora.orarac.db start" encountered the following error:
ORA-03113: end-of-file on communication channel
Process ID: 2351
Session ID: 203 Serial number: 1
. For details refer to "(:CLSN00107:)" in "/opt/11.2.0/grid/log/orarac2/agent/crsd/oraagent_oracle/oraagent_oracle.log".
2:查看alter.log日志:
Errors in file /opt/app/oracle/diag/rdbms/orarac/orarac1/trace/orarac1_ora_579.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 8589934592 bytes is 100.00% used, and has 0 remaining bytes available.
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
ARCH: Error 19809 Creating archive log file to '+ORA_FRA'
Errors in file /opt/app/oracle/diag/rdbms/orarac/orarac1/trace/orarac1_ora_579.trc:
ORA-16038: log 1 sequence# 265 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: '+ORA_DATE/orarac/onlinelog/group_1.261.884436373'
ORA-00312: online log 1 thread 1: '+ORA_FRA/orarac/onlinelog/group_1.257.884436377'
USER (ospid: 579): terminating the instance due to error 16038
从alter.log日志里可以看到 db_recovery_file_dest_size 已经100%,所以我们需要删除些归档,释放db_recovery_file_dest_size。
解决如下:
1:通过ASMCMD登入到ASM,删除部分归档日志。
2:将数据库启动到mount状态:
oracle@orarac1 /home/oracle$ srvctl start database -d orarac -o mount
3:登入rman,delete 过期的归档文件:
oracle@orarac1 /home/oracle$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Oct 27 11:07:56 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORARAC (DBID=1488840336)
RMAN> crosscheck archivelog all;
RMAN> list expired archivelog all;
RMAN> delete expired archivelog all;
RMAN> y
RMAN> exit
4:重启数据库:
oracle@orarac1 /home/oracle$ srvctl stop database -d orarac
oracle@orarac1 /home/oracle$ srvctl start database -d orarac
OK,数据库正常启动,问题解决!