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#;

  • 相关阅读:
    李连杰开始做慈善事业了!
    世界是平的,这本书主要是写给美国人看的
    [问题征解]请解释下ubuntu 510 firefox的flash不发音的问题
    中医治疗慢性病很有效
    清理downloader病毒几百个,2个小时
    firefox2.0的拖放式搜索怎么不行了?是设置问题吗?
    spring live上有个入门的整合SSH的例子
    cctv的健康之路节目知识性和可看性都不错!
    跟你分享一下养生的经验
    cctv: 西医拒绝治疗的小孩,中医三天见效
  • 原文地址:https://www.cnblogs.com/connected/p/13933047.html
Copyright © 2011-2022 走看看