zoukankan      html  css  js  c++  java
  • ORA-16014 与 ORA-00312

    场景:

    SQL> alter system archive log current;
    alter system archive log current
    *
    第 1 行出现错误:
    ORA-16014: 日志 2 sequence# 34 未归档, 没有可用的目的地
    ORA-00312: 联机日志 2 线程 1: '+DATA_DG/orcl/onlinelog/group_2.258.885126161'
    ORA-00312: 联机日志 2 线程 1: '/orabak/clog/orcl02.log'

    环境是个人的实验环境。


    排查:

    切日志时发现该日志无法归档了。然后进行下面排查

    1. 检查日志格式。确定日志格式log_archive_format正确

    2. 检查日志归档文件夹正常。包含位置、权限、可用空间。确定无误

    3. 查看错误日志

     cat /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_18338.trc

    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员
    DDE: Problem Key 'ORA 313' was flood controlled (0x1) (no incident)
    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员
    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员
    Initial buffer sizes: read 1024K, overflow 832K, change 805K
    DDE: Problem Key 'ORA 313' was flood controlled (0x1) (no incident)
    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员
    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员


    能够看到内存有一定溢出


    分析:

    经过排查能够确定是日志本身出现了问题,比較官方的解释例如以下

        ORA-01624: log string needed for crash recovery of instance string (thread string).

        Cause: A log cannot be dropped or cleared until the thread's checkpoint has advanced out of the log..

        Action: If the database is not open, then open it. Crash recovery will advance the checkpoint. If the database is open force a global checkpoint. If the log is corrupted so that the database cannot be opened, it may be necessary to do incomplete recovery until cancel at this log.

    大概意思是检查点进程在一直在处理该文件,不能被删除或清除其内容,类似于卡死。能够通过recover来恢复。通过错误日志,我们猜測该问题非常有可能是由于内存溢出造成的。


    查看内存:

    [root@rac1 ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:          1878       1736        142          0          6        683
    -/+ buffers/cache:       1045        832
    Swap:         3999        354       3645

    空暇内存不足,而且swap分区发生了交换。确实内存不足。


    解决方式:

    数据库有rman备份,启动到mount状态进行recover.

    SQL>shutdown immediate

    SQL>startup mount;

     

    SQL>recover

    ORA-00283: 恢复会话因错误而取消

    ORA-00264: 不要求恢复

    SQL>alter database open;

    数据库已更改。

    SQL>alter system archive log current;

    系统已更改。


    回想:

    recover的时候报错了。但库启动后能够归档,而且是无损恢复,数据没有不论什么的丢失。那么这个过程发生了什么?

    recover会读取日志文件、undo等文件,进行数据库事务的回滚前滚等操作,而在open数据库的时候还会对数据库文件的一致进行处理。

    查看alert能够看到下面过程

    Thread 2 advanced to log sequence 33 (before internal thread enable)
    Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_18338.trc:
    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员
    Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_18338.trc:
    ORA-00313: 无法打开日志组 4 (用于线程 2) 的成员
    Archived Log entry 56 added for thread 2 sequence 32 ID 0xb9a2cd8c dest 1:
    Thread 2 advanced to log sequence 34 (after internal thread enable)
    Wed Jul 22 18:28:47 2015
    ARC2 started with pid=35, OS id=18513 
    Wed Jul 22 18:28:47 2015
    Thread 1 opened at log sequence 39
      Current log# 1 seq# 39 mem# 0: +DATA_DG/orcl/onlinelog/group_1.257.885126161
      Current log# 1 seq# 39 mem# 1: /orabak/clog/orcl01.log
    Successful open of redo thread 1
    MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
    Wed Jul 22 18:28:47 2015
    SMON: enabling cache recovery
    Instance recovery: looking for dead threads
    Instance recovery: lock domain invalid but no dead threads

    ARC1: Archival started


    能够看到Oracle进行了缓存的恢复并对死进程进行了处理。










  • 相关阅读:
    1.tomcat部署项目的几种方式和weblogic部署方式及一点通讯
    C程序第二章节:算法
    java 代码第一天练习
    git生成公钥私钥
    sourceTree操作
    gradle插件安装
    gradle环境搭建
    bootstrap
    20170223
    大企业招聘真的是这样进行的吗?
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7298404.html
Copyright © 2011-2022 走看看