zoukankan      html  css  js  c++  java
  • ORA16014: log string sequence# string not archived, no available destinations Flash Recovery Area 空间不足

     

    今天一网友问我一个问题,数据库报错,错误信息如下:

       

    Errors in file e:/oracle/product/10.2.0/admin/orcl/bdump/orcl_arc0_5620.trc:
    ORA-16014: log 2 sequence# 195 not archived, no available destinations
    ORA-00312: online log 2 thread 1: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG'

     

    这个问题是老问题了,之前我也整理过一篇文章。 

    Flash Recovery Area空间不足导致数据库不能打开或hang住 

    http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668991.aspx

     

    先来分析一下为什么会出现这个问题。 在Oracle 实例创建的时候会指定Flash Recovery Area,该空间默认大小是2G。 

     

    SQL> show parameter db_recovery_file

    NAME                    TYPE      VALUE

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

    db_recovery_file_dest       string  D:/oracle/product/10.2.0/flash_recovery_area

    db_recovery_file_dest_size   big integer  2G

     

    当我们将数据库的模式修改为归档模式的时候,如果没有指定归档目录,默认的归档文件就会放到Flash Recovery Area的目录,但是这个目录是有大小限制的,如果超过了这个大小,就会导致2个问题,一是不能完成归档,二是,在出现问题后,如果此时重启数据库,那么数据库就无法正常启动。

     

    Flash Recovery Area 是留给Flashback的。 所以归档目录最好指定到其他位置。在切换数据库模式时,就要指定归档目录。 

    Oracle 归档与非归档的切换

    http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx

     

    如果我们直接将数据库切换到归档模式,而且没有指定归档目录。 显示的相关信息如下:

    SQL> archive log list

    数据库日志模式             非存档模式

    自动存档             禁用

    存档终点            USE_DB_RECOVERY_FILE_DEST

    最早的联机日志序列     6

    当前日志序列           8

    SQL> shutdown immediate

    数据库已经关闭。

    已经卸载数据库。

    ORACLE 例程已经关闭。

    SQL> startup mount

    ORACLE 例程已经启动。

    Total System Global Area  612368384 bytes

    Fixed Size                  1250428 bytes

    Variable Size             213912452 bytes

    Database Buffers          390070272 bytes

    Redo Buffers                7135232 bytes

    数据库装载完毕。

    SQL> alter database archivelog;

    数据库已更改。

    SQL> archive log list;

    数据库日志模式            存档模式

    自动存档             启用

    存档终点            USE_DB_RECOVERY_FILE_DEST

    最早的联机日志序列     6

    下一个存档日志序列   8

    当前日志序列           8

    SQL> show parameter db_recovery_file

    NAME                    TYPE      VALUE

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

    db_recovery_file_dest       string  D:/oracle/product/10.2.0/flash_recovery_area

    db_recovery_file_dest_size   big integer  2G

     

    总结一下,当遇到这样错误:ORA-16014: log 2 sequence#  not archived, no available destinations我们可以通过如下三种方法来解决:

     

    1. 增加Flash recovery Area 大小。 这种方法治标不治本。 当满了之后,还是会增加。

    SQL> alter system set db_recovery_file_dest_size=3G scope=both;
    系统已更改。 

    检查flash recovery area的使用情况:
    SQL> select * from v$flash_recovery_area_usage; 

    计算flash recovery area已经占用的空间:
    SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

     

    2. 也可以删除归档目录中不用的备份或者文件。 

    删除archive log

    RMAN> crosscheck archivelog all;

    RMAN> delete expired archivelog all;

    删除备份:

    (1). RMAN>delete obsolete;
        (2). RMAN>crosscheck backupset;
           RMAN>delete expired backupset;

     

    3. Archive log 指定到其他位置。 推荐使用这种方法。

     alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';

     

    道森Oracle,国内最早、最大的网络语音培训机构,我们提供专业、优质的Oracle技术培训和服务! 我们的官方网站:http://www.daosenoracle.com 官方淘宝店:http://daosenpx.taobao.com/
  • 相关阅读:
    指针如何影响结构体,细节的思考
    【转】oracle null
    【转】JavaScript闭包
    【转】Ext JS xtype
    【转】EXT JS MVC开发模式
    【转】Ext.ajax.request 中的success和failure
    【转】Oracle job procedure 存储过程定时任务
    JDK重要包和Java学习方法论
    rownum
    【转】Js获取当前日期时间及格式化操作
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3610172.html
Copyright © 2011-2022 走看看