又遇ORA-03113错误及使用RMAN删除归档日志
Mar292013
刚才在启动本人电脑上的ORACLE时,遇到ORA-03113错误。
SQL> startup ORACLE 例程已经启动。 Total System Global Area 1071333376bytes Fixed Size 1375792 bytes Variable Size 587203024 bytes Database Buffers 478150656 bytes Redo Buffers 4603904 bytes 数据库装载完毕。 ORA-03113: 通信通道的文件结尾 进程 ID: 4252 会话 ID: 5序列号: 3
这个错误通常是由于磁盘空间不足导致的,看到这个报错就已经猜到是由于前几天做RMAN限速测试,打开了归档,而且前几天还加载了大量的AWR数据,导致归档路径满了,在线日志无法归档,看了下告警日志,果然如此。
Errors in file d:appstreamdiagrdbmsdbdreamdbdreamtracedbdream_ora_4252.trc: ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 12884901888 字节) 已使用 100.00%, 尚有 81920 字节可用。 ... ... Errors in file d:appstreamdiagrdbmsdbdreamdbdreamtracedbdream_arc1_5504.trc: ORA-19809: limit exceeded for recovery files ORA-19804: cannot reclaim 48406528 bytes disk space from 12884901888 limit ARC1: Error 19809 Creating archive log file to 'D:APPSTREAMFLASH_RECOVERY_AREADBDREAMARCHIVELOG2013_03_29O1_MF_1_719_%U_.ARC' ... ... Errors in file d:appstreamdiagrdbmsdbdreamdbdreamtracedbdream_arc1_5504.trc: ORA-16038: log 2 sequence# 719 cannot be archived ORA-19809: limit exceeded for recovery files ORA-00312: online log 2 thread 1: 'D:APPSTREAMORADATADBDREAMREDO02.LOG' ... ... Errors in file d:appstreamdiagrdbmsdbdreamdbdreamtracedbdream_ora_4252.trc: ORA-19809: 超出了恢复文件数的限制 ORA-19804: 无法回收 48412160 字节磁盘空间 (从 12884901888 限制中) ARCH: Error 19809 Creating archive log file to 'D:APPSTREAMFLASH_RECOVERY_AREADBDREAMARCHIVELOG2013_03_29O1_MF_1_718_%U_.ARC' Errors in file d:appstreamdiagrdbmsdbdreamdbdreamtracedbdream_ora_4252.trc: ORA-16038: 日志 1 sequence# 718 无法归档 ORA-19809: 超出了恢复文件数的限制 ORA-00312: 联机日志 1 线程 1: 'D:APPSTREAMORADATADBDREAMREDO01.LOG' USER (ospid: 4252): terminating the instance due to error 16038 Instance terminated by USER, pid = 4252
由于是本人的测试环境,直接把归档关了,问题也就解决了。
SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 1071333376 bytes Fixed Size 1375792 bytes Variable Size 587203024 bytes Database Buffers 478150656 bytes Redo Buffers 4603904 bytes 数据库装载完毕。 SQL> archive log list 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 718 下一个存档日志序列 718 当前日志序列 720 SQL> alter database noarchivelog; 数据库已更改。 SQL> alter database open; 数据库已更改。
如果是生产环境,不能关闭归档,可用下面的方法解决。
1. 归档日志像我一样放到了默认地址闪回恢复区内,而且磁盘空间充足,只是受闪回恢复区大小的限制,导
致在线日志无法归档,可以调整闪回恢复区的大小来解决这个问题。
SQL> show parameter db_recover NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:appstreamflash_recovery_area db_recovery_file_dest_size big integer 4G SQL> alter system set db_recovery_file_dest_size=10g; 系统已更改。
2. 如果归档日志的路径不是闪回恢复区,而是由于磁盘空间不足导致日志无法归档,这就需要删除归档日志了。
C:Windowssystem32>rman target / 恢复管理器: Release 11.2.0.1.0 - Production on 星期五 3 月 29 10:41:19 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到目标数据库: DBDREAM (DBID=2326242578) RMAN> delete archivelog until time 'sysdate-7'; --表示删除7 天前的归档日志,此时会列出所要删除的归档日志信息 是否确定要删除以上对象 (输入 YES 或 NO)? --输入YES 表示确认删除
如果不能删归档日志,那就只好更改归档日志的路径了。
SQL> alter system set log_archive_dest_1='location=D:ARCH'; 系统已更改。