解决归档出错,ORA-00257: archiver error. Connect internal only, until freed.

[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参数设置

 

查看了一下归档模式没有问题:

SQL> archive log list;



查看重做日志空间使用请况:因为每小时都备份并删除Archive Log, 没有问题:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

NAME

--------------------------------------------------------------------------------

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

----------- ---------- ----------------- 

---------------

+DATA1 

6.4425E+10 3.3210E+9 0 3

SQL> select * from v$flash_recovery_area_usage;

FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES-

--------------

CONTROL FILE 0 0 0

REDO LOG 4.04 0 3ARCHIVED LOG 0 0


因为用的是ASM统一存储管理,所以下面语句会报错,因为使用的参数不是 log_archive_dest :

SQL> alter system set log_archive_dest='+FDA1';

ERROR at line 1:ORA-02097: parameter cannot be modified because specified value is invalid

ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n orDB_RECOVERY_FILE_DEST
下面是正确的解决办法:

SQL> alter system set db_recovery_file_dest='+FDA1';
System altered.
SQL> alter system switch logfile;
System altered.
SQL> conn test1/test1Connected.

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
下面是一篇文章的翻译:原载地址: 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';

解决ORA-00257的最后一步是切换日志文件,从而确认是否解决

SQL> alter system switch logfile;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值