zoukankan      html  css  js  c++  java
  • Oracle-11g ASM Fast Mirror Resync特性

    ASM Fast Mirror Resync特性

    在oracle 10g ASM 中,如果发生磁盘故障(光纤故障,控制器故障,HBA卡故障或其它故障造成ASM磁盘无法访问)时,ASM实例自动将该故障磁盘drop掉。

    磁盘组冗余模式为Normal或High的环境,当ASM磁盘被drop后,触发ASM磁盘组的重平衡动作,保证被drop的磁盘上涉及的extent的再次冗余。在ASM重平衡非常消耗时间和磁盘IO操作。在某些场景需要短暂offline某些磁盘时,offline时触发重平衡,添加回来的时候再次触发重平衡,这种情形非常不友好。因此,在11g版本,提供了ASM快速磁盘同步特性(ASM Fast Mirror Resync)。

    在11g新引入一个"disk_repair_time"的参数,当磁盘故障时,如果在disk_repair_time指定的时间内,磁盘访问故障解决后重新online,Oracle将故障时间段变更的extent数据写入该磁盘,而不是同步所有的数据。这种特性称为" ASM Fast Mirror Resync"。如果超过disk_repair_time参数指定的时间未修复,就会drop掉这个磁盘。disk_repair_time参数默认值为:3.6小时。

    注意:

    当磁盘自身故障时,如果其所在的磁盘组冗余模式为Normal或High时,这个磁盘必须drop掉后重新添加(此时,需要同步磁盘的所有数据);如果冗余模式为external时,该磁盘组会离线。

    ASM Fast Mirror Resync

    ASM Fast Mirror Resync必要条件

    • 磁盘组的compatible属性值至少为11.1
    • 磁盘组的冗余模式必须时Normal或High级别

    开启ASM Fast Mirror Resync

    开启该功能需要针对磁盘组设置disk_repair_time的值。默认是3.6h

    alter diskgroup DATA set attribute 'disk_repair_time'='3.6h';
    

    调整disk_repair_time参数

    -- sqlplus "/ as sysasm"
    ALTER DISKGROUP DATA SET ATTRIBUTE 'disk_repair_time'= '36h';
    

    查看参数值

    --检查DISK_REPAIR_NAME
    column name format a30
    column value format a30
    select name,value from v$asm_attribute 
    where group_number=1 
    and name = 'disk_repair_time';
    

    实验测试

    查看磁盘组属性配置

    asmcmd lsattr -G DATA -l
    

    设置磁盘组属性

    asmcmd setattr -G DATA compatible.rdbms 11.2.0.0.0
    asmcmd setattr -G DATA compatible.asm 11.2.0.0.0
    

    实验1

    手动offline磁盘模拟故障场景,当未超过disk_repair_time指定的时间后,尝试重新加磁盘。

    查看磁盘组信息
    asmcmd lsdsk -G DATA --statistics
    
    查看磁盘头信息
    su - grid
    kfed read /dev/mapper/asm_data1
    kfed read /dev/mapper/asm_data2
    kfed read /dev/mapper/asm_data3
    
    模拟故障(offline disk)
    asmcmd offline -G DATA -D DATA_0003
    

    在默认disk_repair_time值为3.6h时间内,将磁盘online操作

    尝试online该故障磁盘
    asm实例
    alter diskgroup DATA disk DATA_0003 online;
    
    asmcmd工具操作
    asmcmd online -G DATA -D DATA_0003
    
    检查磁盘组信息
    asmcmd lsdsk -G DATA --statistics
    

    实验2

    手动offline磁盘模拟故障场景,当超过disk_repair_time指定的时间后,尝试重新加磁盘。

    为了缩短测试时间,修改disk_repair_time的值
    asmcmd 设置
    # 设置disk_repair_time为5分钟,m代表分钟,h代表小时
    asmcmd setattr -G DATA disk_repair_time 5m
    
    asm实例
    sqlplus "/ as sysasm" <<EOF
    ALTER DISKGROUP DATA SET ATTRIBUTE 'disk_repair_time' = '5m';
    EOF
    
    查看磁盘组信息
    asmcmd lsdsk -G DATA --statistics
    
    查看磁盘头信息
    su - grid
    kfed read /dev/mapper/asm_data1
    kfed read /dev/mapper/asm_data2
    kfed read /dev/mapper/asm_data3
    
    模拟故障(offline disk)
    asmcmd offline -G DATA -D DATA_0003
    
    sqlplus "/ as sysasm"<<EOF
    -- 将磁盘offline,并指定drop after语句
    alter diskgroup dgroup1 disk data01 drop after 0h; --#asm完成数据重新平衡后将该磁盘删除
    EOF
    
    查看磁盘组信息
    asmcmd lsdg -G DATA
    
    # 查看磁盘头信息
    kfed read /dev/mapper/asm_data3
    
    sqlplus "/ as sysasm" <<EOF
    select name, path from v$asm_disk where group_number=2;
    EOF
    

    经过5分钟后,从asm alert日志发现该磁盘被drop掉。

    尝试online该故障磁盘
    asm实例
    alter diskgroup DATA disk DATA_0003 online;
    
    asmcmd工具操作
    asmcmd online -G DATA -D DATA_0003
    

    发现,并不能将offline的磁z加回来。只能将它像新划的lun磁盘的方式将它加入到DATA磁盘组。

    清除掉该磁盘头数据(11g不用)
    dd if=/dev/zero of=/dev/mapper/asm_disk3 bs=1024k count=100
    
    重新加入磁盘组
    alter diskgroup DATA add disk '/dev/mapper/asm_disk3';
    
  • 相关阅读:
    Building Seam 2.0 Application with NetBeans 6.1
    Better Builds with Maven学习笔记
    NetBeans Globel Translation Team Tshirt!
    Participate in MySQLGlassFish Student Contest and Win $500
    NetBeans Globel Translation Team Tshirt!
    Better Builds with Maven学习笔记
    Building Seam 2.0 Application with NetBeans 6.1
    Maven2 的新特性
    Participate in MySQLGlassFish Student Contest and Win $500
    数据库设计及数据缓存
  • 原文地址:https://www.cnblogs.com/binliubiao/p/15163353.html
Copyright © 2011-2022 走看看