zoukankan      html  css  js  c++  java
  • Oracle数据库突然宕机,处理方案

    一、现象

      数据库突然断掉,无法响应,

    二、分析

      查看日志发现错误如下(日志路径:D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_hrpdev.log):

    Mon Jan 15 13:16:00 2018
    Thread 1 cannot allocate new log, sequence 8
    Checkpoint not complete
      Current log# 1 seq# 7 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO01.LOG
    Thread 1 advanced to log sequence 8 (LGWR switch)
      Current log# 2 seq# 8 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO02.LOG
    Mon Jan 15 13:16:30 2018
    Thread 1 cannot allocate new log, sequence 9
    Checkpoint not complete
      Current log# 2 seq# 8 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO02.LOG
    Thread 1 advanced to log sequence 9 (LGWR switch)
      Current log# 3 seq# 9 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO03.LOG

     错误分析:

      当进行redo 切换的时候,会触发checkpoint事件。Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于系统突然宕机而需要的恢复时间,做第二件事实为了保证数据库的一致性。

      Checkpoint will flush dirty block to datafile, 从而触发DBWn书写dirty buffer,等到redo log覆盖的dirty block全部被写入datafile后才能使用redo log(循环使用),如果DBWn写入过慢,LGWR必须等待DBWn完成,则这时会出现“checkpoint not completed”。 所以当出现checkpoint  not competed的时候,还会伴随cannot allocate new log的错误。

    解决方案:

      遇到这种问题,解决方案有增加日志组 或者 增大日志文件,也可以修改checkpoint 参数使得检查点变得频繁点。

    三、解决方案

      增加日志组或增大日志文件。

      1、查看日志状态

    select group#,sequence#,bytes,members,status from v$log;

      2、增加日志组

    alter database add logfile group 4 ('D:\app\Administrator\oradata\hrpdev\redo04.log') size 500m;
    alter database add logfile group 5 ('D:\app\Administrator\oradata\hrpdev\redo05.log') size 500m;
    alter database add logfile group 6 ('D:\app\Administrator\oradata\hrpdev\redo06.log') size 500m;

    四、参考链接

      http://www.cndba.cn/Dave/article/613

      http://blog.csdn.net/huaishu/article/details/16886111

  • 相关阅读:
    Log4Qt 使用(一)
    “定义为指针,外部以数组形式引用”和“定义为数组,外部以指针形式引用”会发生什么?
    gcc总结【基本用法】【选项】【动静态库】(转)
    C++沉思录之三——设计容器类
    C++沉思录之二——虚函数使用的时机
    何时需要自定义复制构造函数?
    C++沉思录之一
    搜索百度云里面的内容技巧
    Qt 之容器内的控件全屏
    python的代码检查
  • 原文地址:https://www.cnblogs.com/BillyYoung/p/8377167.html
Copyright © 2011-2022 走看看