zoukankan      html  css  js  c++  java
  • 修改redo log 的大小

    alert日志中含有大量警告信息:“Thread 1 cannot allocate new log, sequence 320xx Checkpoint not complete”

    触发checkpoint条件其中有一条是redo切换时,观察告警日志发现大量的日志切换动作,说明该checkpoint就是由redo日志切换造成的,而checkpoint会触发DBWn将data buffer cache中的dirty block刷到datafile中,而checkpoint not complete说明data buffer cache中的dirty block还没有写到datafile中redo就又要切换,就会出现“Thread 1 cannot allocate new log”。

    解决方法:

    修改redo日志的大小并添加日志组后问题解决。

    set lines 200 pages 300
    col member for a60
    select a.thread#,a.group#,b.member,b.type,a.status,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#
    union all
    select a.thread#,a.group#,b.member,b.type, a.status,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;


    THREAD# GROUP# MEMBER TYPE STATUS MB
    ---------- ---------- ----------------------------------------------------------

    可以看到,每个redo只有50MB,且每个线程只有两组。

    因为redo不能直接修改大小,因而采用先增加大一点的新redo然后删除旧redo的方式。


    增加新的redo,因为RAC环境下有多个日志线程,所以在添加日志时必须指定线程号:

    每个节点实例用到的联机日志就是一个Redo Thread,单实例有且只有一个Redo Thread。
    在RAC环境下,每个节点实例都需要自己的联机日志,也就是每个节点实例都有自己的Redo Thread。
    这种每个节点实例一个Redo Thread,该设计是为了避免实例间共享Redo文件引发的竞争,提高系统性能。
    RAC数据库通过thread这个参数用来指定节点实例使用的Redo Thread线程号,一般和该实例的INSTANCE_NUMBER参数相同。
    通过视图V$LOG的THREAD#列可以确认日志组所属的线程。


    alter database add logfile thread 1
    group 5 '+DG_ORA/ipcc/redo05.log' size 200M,
    group 6 '+DG_ORA/ipcc/redo06.log' size 200M;

    alter database add logfile thread 2
    group 7 '+DG_ORA/ipcc/redo07.log' size 200M,
    group 8 '+DG_ORA/ipcc/redo08.log' size 200M;


    当原日志组的状态为 INACTIVE 时方可删除

    删除日志组的命令如下:
    alter database drop logfile group N;
    #其中N对应GROUP#

    如果redo的状态不是INACTIVE,可以执行如下两条sql切换redo
    alter system switch logfile;
    alter system checkpoint;

     然后删除旧的redo

    alter database drop logfile group 1;
    alter database drop logfile group 2;

    alter database drop logfile group 3; 
    alter database drop logfile group 4;

    数据库中删除之后,物理文件并没有被删除,手动删除对应的redo物理文件

    db1:~# su - grid
    grid@db1:~> asmcmd
    ASMCMD> ls
    redo01.log
    redo02.log
    redo03.log
    redo04.log
    redo05.log
    redo06.log
    redo07.log
    redo08.log
    spfileipcc.ora

    ASMCMD> rm redo01.log
    ASMCMD> rm redo02.log
    ASMCMD> rm redo03.log
    ASMCMD> rm redo04.log

    删除完成后,再增加新的redo

    alter database add logfile thread 1
    group 1 '+DG_ORA/ipcc/redo01.log' size 200M,
    group 2 '+DG_ORA/ipcc/redo02.log' size 200M;

    alter database add logfile thread 2
    group 3 '+DG_ORA/ipcc/redo03.log' size 200M,
    group 4 '+DG_ORA/ipcc/redo04.log' size 200M;

     验证结果

    set lines 200 pages 300
    col member for a60
    select a.thread#,a.group#,b.member,b.type,a.status,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#
    union all
    select a.thread#,a.group#,b.member,b.type, a.status,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;

  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/connected/p/13933047.html
Copyright © 2011-2022 走看看