欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/20 编程问答 63 豆豆
生活随笔 收集整理的这篇文章主要介绍了 解决归档出错,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 plaincopy
  • SQL> archive log list;  


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

    [sql] view plaincopy
  • 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] view plaincopy
  • 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] view plaincopy
  • 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;

    与50位技术专家面对面20年技术见证,附赠技术全景图

    总结

    以上是生活随笔为你收集整理的解决归档出错,ORA-00257: archiver error. Connect internal only, until freed.的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。