• ORA-00257 与 ORA-19815 ,归档日志超出范围的解决方案


    1.错误现象:

    公司系统开启时报错:“ORA-00257  归档程序错误。在释放之前仅限于内部链接。”

    2.查看报错日志(路径:D:oracleproduct10.2.0adminorcldumpalert_orcl.log)

    SQL> show parameter dump // 查看alert日志目录

     1 Wed Mar 28 14:36:48 2018
     2 Errors in file d:oracleproduct10.2.0adminorcldumporcl_arc0_7072.trc:
     3 ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 8589934592 字节) 已使用 100.00%, 尚有 0 字节可用。
     4 Wed Mar 28 14:36:48 2018
     5 ************************************************************************
     6 You have following choices to free up space from flash recovery area:
     7 1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
     8    then consider changing RMAN ARCHIVELOG DELETION POLICY.
     9 2. Back up files to tertiary device such as tape using RMAN
    10    BACKUP RECOVERY AREA command.
    11 3. Add disk space and increase db_recovery_file_dest_size parameter to
    12    reflect the new space.
    13 4. Delete unnecessary files using RMAN DELETE command. If an operating
    14    system command was used to delete files, then use RMAN CROSSCHECK and
    15    DELETE EXPIRED commands.
    16 ************************************************************************
    17 ARC0: Failed to archive thread 1 sequence 9284 (19809)

    可以看出是闪存空间满了

    验证步骤:

    /* ************************************************************ */
    /* 由于楼主没有保留相应查询结果数据,故盗取别人帖子的返回结果,敬请见谅! */
    /* ************************************************************ */
    
    SQL> show parameter recover; /* 查看闪回空间大小 */
    
    NAME                           TYPE        VALUE
    ----------------------------- ----------- ---------------------------------------
    /* 文件路径 */
    db_recovery_file_dest              string /home/U01/app/oracle/fast_recovery_area
    db_recovery_file_dest_size    big integer                                     40G /* 文件夹最大限制大小(实际可超出,用于ORA检测控制)*/
    db_unrecoverable_scn_tracking     boolean                                    TRUE
    recovery_parallelism              integer                                       0
    
    SQL> select * from v$recovery_file_dest; /* 查看闪回路径及使用情况 */
    
    NAME                                    
    SPACE_LIMIT
    SPACE_USED
    SPACE_RECLAIMABLE
    NUMBER_OF_FILES
    CON_ID ------------------------------------------------------- ----------- ---------- ----------------- --------------- ---------- /home/U01/app/oracle/fast_recovery_area /* 文件夹路径
    */ 4.2950E+10 /* 限制大小,即上方的40G */ 2.1538E+10 /* 实际大小,楼主出问题时此值大大超出设置大小 */ 0 89 /* GROUP编号*/ 0

    SQL> select * from v$log /* 查看GROUP归档情况 */

    GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
    ------ ------- --------- -------- ------- --- -------- ------------- ----------
         1       1        93 52428800       1 NO INACTIVE 4345718 04-FEB-09
         3       1        94 52428800       1 NO INACTIVE 4347356 04-FEB-09
         2       1        95 52428800       1 NO  CURRENT 4368182 04-FEB-09
    SQL> select * from V$RECOVERY_AREA_USAGE; /* 查看闪回空间使用情况 */ FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID ----------------------- ------------------ ------------------------- --------------- ---------- CONTROL FILE 0 0 0 0 REDO LOG 7.45 0 7 0 ARCHIVED LOG 100 0 76 0 BACKUP PIECE 0 0 0 0 IMAGE COPY 0 0 0 0 FLASHBACK LOG 0 0 0 0 FOREIGN ARCHIVED LOG 0 0 0 0 AUXILIARY DATAFILE COPY 0 0 0 0

    3.解决方案:(可只用一种或两种都用,具体参数因情况而定。)

    3.1)手工归档:
    SQL> alter database clear logfile group 3; // 用CLEAR命令重建该日志文件
    SQL>alter database clear unarchived logfile group 3;// 如果是该日志组还没有归档,则需要用
    SQL> alter database open;// 打开数据库,重新备份数据库

    3.1)空间扩容:

    SQL> alter system set db_recovery_file_dest_size=100G scope=both;

    3.2)删除归档(注意:在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。)

    $ rman target /

    RMAN> crosscheck archivelog all; /* 检查一些无用的archivelog */

    RMAN> delete expired archivelog all; /* 删除过期的归档 */

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

    退出进入SQLPLUS

    SQL> alter database open;

    4.排错心得:

    楼主作为一个维护小白,在查错的过程中走了很多歪路、错路,以上步骤是问题解决后整理的正确步骤,具体情况视个人情况而定。

    其实楼主的解决过程磕磕绊绊,很多方法试过了,或解决问题或反复解决问题不久又重新报错,总结下来还是应改提早查看错误日志,对问题的引发点有更确切的认识。

    比如本例中系统报错为 ORA-00257 ,而日志中的具体报错为 ORA-19815 。

    学习解决问题的思路,而不是为了解决问题而解决问题。

    一步一脚印。

    至此~~~~~

  • 相关阅读:
    EasyARM-iMX283A的Linux 开发环境构建
    linux指令tar笔记
    使用cuteFTP与虚拟机交互文件---安装ftp服务
    SecureCRT显示乱码的解决办法
    【转】简明 Vim 练级攻略
    图像识别___YUV学习手记
    一个简易的软件定时器
    OV7670配置和调试小结
    linux驱动开发( 五) 字符设备驱动框架的填充file_operations结构体中的操作函数(read write llseek unlocked_ioctl)
    hash-1.hash表和hash算法
  • 原文地址:https://www.cnblogs.com/BlackList-Sakura/p/8665093.html
Copyright © 2020-2023  润新知