Oracle 入门之Oracle启动报错“ORA-03113”


早上连接Oracle,发现oracle无法正常工作,无法shutdown immediate方式关闭,shutdown abort方式关闭之后再启动,出现错误提示“ORA-03113 end-of-file on communication channel”

分析alter日志信息如下:
Errors in file /u01/diag/rdbms/online/online/trace/online_ora_1544.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4070572032 字节) 已使用 100.00%, 尚有 0 字节可用。
************************************************************************
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.
************************************************************************
Errors in file /u01/diag/rdbms/online/online/trace/online_ora_1544.trc:
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 36931584 字节磁盘空间 (从 4070572032 限制中)
ARCH: Error 19809 Creating archive log file to ’/u01/flash_recovery_area/ONLINE/archivelog/2010_09_25/o1_mf_1_109_%u_.arc’
Errors in file /u01/diag/rdbms/online/online/trace/online_ora_1544.trc:
ORA-16038: 日志 1 sequence# 109 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 1 线程 1: ’/u01/oradata/online/redo01.log’
USER (ospid: 1544): terminating the instance due to error 16038
Instance terminated by USER, pid = 1544

可以看出已经达到db_recovery_file_dest_size规定的限制大小,处理方法如下:

1:在操作系统上删除相关的文件,启动数据库,依然报前面的错误信息

2:由spfile生成pfile,增大pfile中的db_recovery_file_dest_size参数的值

3:由修改过的pfile生成spfile,启动数据库

4:使用rman,清理过期的数据

[oracle@localhost ~]$ rman target/

Recovery Manager: Release 11.2.0.1.0 - Production on Sat Sep 25 14:18:53 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: ONLINE (DBID=2094135012)

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;


5:查看recovery_file_dest动态性能视图

SQL> desc v$recovery_file_dest;
名称                                      是否为空? 类型
----------------------------------------- -------- ------------------------

NAME                                               VARCHAR2(513)
SPACE_LIMIT                                        NUMBER
SPACE_USED                                         NUMBER
SPACE_RECLAIMABLE                                  NUMBER
NUMBER_OF_FILES                                    NUMBER

SQL> col name format a50;
SQL> select * from v$recovery_file_dest;

NAME                                               SPACE_LIMIT SPACE_USED
-------------------------------------------------- ----------- ----------
SPACE_RECLAIMABLE NUMBER_OF_FILES
----------------- ---------------
/u01/flash_recovery_area                            5242880000 755426304
                0              19


分析:flash_recovery_area初始化参数定义的值,一般用来存放归档日志(archivelog)和rman的备份集(backupset),Oracle 11g r2 64位安装完后,db_recovery_file_dest_size为3882M,为了防止oracle因为这个原因崩溃,应当根据需要适当调整这个值的大小,并定期清理过期的日志信息

SQL> show parameter db_recovery;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/flash_recovery_area
db_recovery_file_dest_size           big integer 5000M

相关内容