[Oracle@jingmin ~]$ sqlplus test1/test1
SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 21 10:08:57 2012Copyright (c) 1982, 2011, oracle. All rights reserved.ERROR:ORA-00257: archiver error. Connect internal only, until freed.
原因:归档进程在归档重做日志的时候,发生了错误。如果问题不马上解决,数据库将不可用,无法进行任何事物,出现这个错误信息的最大可能是:存储重做日志的空间不足
解决办法:检查归档跟踪文件查看详细原因,检查archive_log_dest参数设置
查看了一下归档模式没有问题:
查看重做日志空间使用请况:因为每小时都备份并删除Archive Log, 没有问题:
因为用的是ASM统一存储管理,所以下面语句会报错,因为使用的参数不是 log_archive_dest :
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
下面是一篇文章的翻译:原载地址: http://www.dba-oracle.com/sf_ora_00257_archiver_error_connect_internal_only_until_freed.htm
数据库的后台进程ARCH是负责将在线重做日志归档到目标地址文件系统,详细参考一篇文章: ADRCI cannot create archive log file ORA-00257是一个Oracle常见错误,一旦数据库的闪回区域被日志占满了,或者db_recovery_file_dest_size太小,你会一直看到这个错误 第一、使用以下语句确认归档模式是否开启
SQL> archive log list;
第二、你需要去找到你存储归档日志的目标地址,如果你是用确切的目标地址的话(文件系统,不是ASM管理),即使用了db_recovery_file_dest参数SQL> show parameter db_recovery_file_dest; (SQL> show parameter recovery)
第三、需要解决ORA-00257,你需要找到存储数据库重做日志的空间大小SQL> SELECT * FROM V$RECOVERY_FILE_DEST; (SQL> select * from v$flash_recovery_area_usage;)
第四、通过上面的语句,可以看到使用了多少空间,最大空间限制等数值,如果可能是因为这个原因,我们应该把那些archive logs移到其他地方去 第五、,你要做的是把当前系统在线日志都归档到离线:SQL> alter system archive log all;
请了解,执行第五步的时候,很可能会遇到这个错误: ORA-16020 in the LOG_ARCHIVE_MIN_SUCCEED_DEST ,这时你应该选用正确的归档地址(如果你是用flash Recovery区域来管理的话,请记住一定要多方考虑,因为你正在试验的是Log_ARCHIVE_DEST): SQL>alter system set LOG_ARCHIVE_DEST_.. = 'location=/archivelogpath reopen';
SQL> alter system switch logfile;