• ORA-00257: archiver error. Connect internal only, until freed.


    早上BA抄送客户的邮件过来,说系统用不了,应用系统报异常Unable to open connection to oracle,Microsoft Provider v2.0.50727.42,既然是数据库连接不了,那使用plsql连接生产环境数据库,报如下异常:

         

    看字面意思应该是归档错误,网上搜了一番,都说最可能的原因是归档日志满了.

    1.查看系统是否处于归档日志之下

    SQL> archive log list;
    Database log mode                 Archive Mode
    Automatic archival                   Enabled
    Archive destination                  USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence     360
    Next log sequence to archive  360
    Current log sequence              362

    上面来看是处于归档模式,归档日志的位置是存在USE_DB_RECOVERY_FILE_DEST之中,这是11gR2的默认存储位置.

    DB_RECOVERY_FILE_DEST参数是默认的flash recovery area的路径,里面存放有归档日志、闪回日志以及rman的备份文件等文件

    2.查看归档日志的参数(大小和路径)

    SQL> show parameter DB_RECOVERY_FILE_DEST;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      E:oracle11gflash_recovery_area
    db_recovery_file_dest_size           big integer 4182M

    可以通过show parameter recover查看更多的参数.

    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                              0                         0               0
    ARCHIVED LOG                          96.68                     0               112
    BACKUP PIECE                          0                         0               0
    IMAGE COPY                            0                         0               0
    FLASHBACK LOG                         0                         0               0
    FOREIGN ARCHIVED LOG                  0                         0               0
    7 rows selected

    这里使用了96.68%.

    解决方案:

    1.物理删除(删除过后要通过RMAN维护系统控制文件,否则空间显示仍然不释放)

    2.RMAN删除

    3.增加闪回区的大小

    4.将在线的在线日志文档为离线

    方案一:物理删除 

    使用RMAN维护系统控制文件,检查一些无用的archivelog

    RMAN> crosscheck archivelog all;

    方案二:RMAN删除(删除过期的文档)

    RMAN> delete expired archivelog all;
          delete archivelog until time 'sysdate-1' ; 删除截止到前一天的所有archivelog
    delete expired archivelog all;

    方案三:增加闪回区的大小

    SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=10g;
    System altered

    方案四:将在线的在线日志文档为离线

    SQL> alter system archive log all;

     参考文档:

    博客:http://blog.csdn.net/wonderjjm/article/details/8424031

    博客:http://www.2cto.com/database/201109/102332.html

    博客:http://blog.sina.com.cn/s/blog_5376c7190101httv.html

    博客:http://www.51itstudy.com/19790.html

  • 相关阅读:
    远程服务器git搭建
    Ubuntu安装配置MySQL数据库,Apache,PHP
    html radio check
    opencv 抠图联通块(c接口)
    Vim命令
    二维码
    zTree Jquery eCharts
    Java进阶篇设计模式之二 ----- 工厂模式
    SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)
    SpringBoot整合Jsp和Thymeleaf (附工程)
  • 原文地址:https://www.cnblogs.com/gudi/p/6232494.html
Copyright © 2020-2023  润新知