open数据库报错ERROR at line 1: ORA-03113: end-of-file on communication channel Process ID: 3880 Session ID: 125 Serial number: 3

1.今天打开数据时,失败,报错

ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 3880
Session ID: 125 Serial number: 3

2.想看下数据库的状态,发现提示:not connected to ORACLE
SYS@EMREP> select status,instance_name from v$instance;
ERROR:
ORA-03114: not connected to ORACLE

3.排查错误,使用Oracle三部启动法:

startup nomount;(如果起来,说明参数文件没问题)

alter database mount;(如果起来,说明控制文件没问题)

alter database open;(报错了,需要查看具体的报错,通过aler日志查看)

> show parameter background_dump (查看alert日志所在位置)

4.进入alert日志,查看详细报错

cd /u01/app/oracle/diag/rdbms/emrep/EMREP/trace    (到alert日志所在的目录下)

tail -100f alert_EMREP.log   (查看详细报错日志,如下:)

Errors in file /u01/app/oracle/diag/rdbms/emrep/EMREP/trace/EMREP_ora_3823.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 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 '/u01/app/oracle/EMREP/archivelog/2018_11_24/o1_mf_1_21_%u_.arc'
ARC2: Error 19809 Creating archive log file to '/u01/app/oracle/EMREP/archivelog/2018_11_24/o1_mf_1_22_%u_.arc'
Errors in file /u01/app/oracle/diag/rdbms/emrep/EMREP/trace/EMREP_ora_3823.trc:
ORA-16038: log 3 sequence# 21 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/EMREP/redo03.log'
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/EMREP/redo06.log'
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance EMREP - Archival Error
ORA-16038: log 1 sequence# 22 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/EMREP/redo01.log'
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/EMREP/redo04.log'
USER (ospid: 3823): terminating the instance due to error 16038
System state dump requested by (instance=1, osid=3823), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/oracle/diag/rdbms/emrep/EMREP/trace/EMREP_diag_3791_20181124081720.trc
Dumping diagnostic data in directory=[cdmp_20181124081720], requested by (instance=1, osid=3823), summary=[abnormal instance termination].

根据日志,可以看出,是因为归档空间满了,而且给出了解决办法:

1) Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
  then consider changing RMAN ARCHIVELOG DELETION POLICY.  (将备份策略改为基于冗余数量的备份策略)

如:RMAN> configure retention policy to redundancy 5;

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.(增加db_recovery_file_dest_size的大小)

SQL> alter system set db_recovery_file_dest_size=2000M;

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.   手动删除不需要的归档日志文件 (删除 3 天以前的日志记录)

rman> delete archivelog all completed before 'sysdate - 3'

以上任意一种方法都可以,执行完毕,直接:alter database open 即可。

原文地址:https://www.cnblogs.com/gw666/p/10010865.html