解决归档出错,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]  view plain  copy
  1. SQL> archive log list;  



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

[sql]  view plain  copy
  1. SQL> SELECT * FROM V$RECOVERY_FILE_DEST;  
  2.   
  3. NAME  
  4.   
  5. --------------------------------------------------------------------------------  
  6.   
  7. SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES  
  8.   
  9. ----------- ---------- -----------------   
  10.   
  11. ---------------  
  12.   
  13. +DATA1   
  14.   
  15. 6.4425E+10 3.3210E+9 0 3  
  16.   
  17. SQL> select * from v$flash_recovery_area_usage;  
  18.   
  19. FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE  
  20.   
  21. -------------------- ------------------ -------------------------  
  22.   
  23. NUMBER_OF_FILES-  
  24.   
  25. --------------  
  26.   
  27. CONTROL FILE 0 0 0  
  28.   
  29. REDO LOG 4.04 0 3ARCHIVED LOG 0 0  


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

[sql]  view plain  copy
  1. SQL> alter system set log_archive_dest='+FDA1';  
  2.   
  3. ERROR at line 1:ORA-02097: parameter cannot be modified because specified value is invalid  
  4.   
  5. ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n orDB_RECOVERY_FILE_DEST  
下面是正确的解决办法:

[sql]  view plain  copy
  1. SQL> alter system set db_recovery_file_dest='+FDA1';  
  2. System altered.  
  3. SQL> alter system switch logfile;  
  4. System altered.  
  5. 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
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值