zoukankan      html  css  js  c++  java
  • Oracle 12.2报错ORA-15032、ORA-15410或ORA-15411解决

    现象:在Oracle 12.2.0.1 RAC环境,在其ASM实例中,如果添加不同大小或者不同数量的LUN到failgroup中,会报错:

    ORA-15032: not all alterations performed
    ORA-15410: Disks in disk group OCRVT do not have equal size.
    或者
    ORA-15032: not all alterations performed
    ORA-15411: Failure groups in disk group OCRVT have different number of disks.
    

    解决方案:
    动态修改这两个隐藏参数可以解决:

    alter system set "_asm_disable_failgroup_size_checking"=true;
    alter system set "_asm_disable_dangerous_failgroup_checking"=true;
    

    下面举一个实际的例子:
    比如新加的LUN:mpathi,mpathj,mpathk都是200M大小,以前的ASM磁盘组OCRVT由3个LUN:mpatha,mpathb,mpathc都是1G大小组成;现在想把新的LUN加到OCRVT磁盘组中:

    SQL>  select name, failgroup, path, mode_status, voting_file from v$asm_disk;
    
    NAME                                FAILGROUP                      PATH                                          MODE_ST V
    ----------------------------------- ------------------------------ --------------------------------------------- ------- -
                                                                       /dev/mapper/mpathj                            ONLINE  N
                                                                       /dev/mapper/mpathi                            ONLINE  N
                                                                       /public/nfsdisk                               ONLINE  N
                                                                       /dev/mapper/mpathk                            ONLINE  N
    DATA_0001                           DATA_0001                      /dev/mapper/mpathf                            ONLINE  N
    FRA_0000                            FRA_0000                       /dev/mapper/mpathh                            ONLINE  N
    DATA_0002                           DATA_0002                      /dev/mapper/mpathg                            ONLINE  N
    DATA_0000                           DATA_0000                      /dev/mapper/mpathe                            ONLINE  N
    MGMT_0000                           MGMT_0000                      /dev/mapper/mpathd                            ONLINE  N
    OCRVT_0000                          OCRVT_0000                     /dev/mapper/mpathc                            ONLINE  Y
    OCRVT_0002                          OCRVT_0002                     /dev/mapper/mpathb                            ONLINE  Y
    OCRVT_0001                          OCRVT_0001                     /dev/mapper/mpatha                            ONLINE  Y
    
    12 rows selected.
    

    直接尝试添加新的LUN到ASM磁盘组OCRVT中,会报错。依次尝试设置相关的隐藏参数,可以成功添加:

    SQL> alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi';   
    alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'
    *
    ERROR at line 1:
    ORA-15032: not all alterations performed
    ORA-15410: Disks in disk group OCRVT do not have equal size.
    
    SQL> alter system set "_asm_disable_dangerous_failgroup_checking"=true;
    
    System altered.
    
    SQL> alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi';
    alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'
    *
    ERROR at line 1:
    ORA-15032: not all alterations performed
    ORA-15411: Failure groups in disk group OCRVT have different number of disks.
    
    SQL> alter system set "_asm_disable_failgroup_size_checking"=true;
    
    System altered.
    
    SQL>  alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi';
    
    Diskgroup altered.
    

    总结:
    asm中与failgroup相关的隐藏参数:
    _asm_disable_dangerous_failgroup_checking FALSE
    _asm_disable_failgroup_count_checking FALSE
    _asm_disable_failgroup_size_checking FALSE

    SQL> r
      1  SELECT   i.ksppinm name,
      2     i.ksppdesc description,
      3     CV.ksppstvl VALUE
      4  FROM   sys.x$ksppi i, sys.x$ksppcv CV
      5     WHERE   i.inst_id = USERENV ('Instance')
      6     AND CV.inst_id = USERENV ('Instance')
      7     AND i.indx = CV.indx
      8     AND i.ksppinm LIKE '%&param%'
      9* ORDER BY   REPLACE (i.ksppinm, '_', '')
    Enter value for param: failgroup
    old   8:    AND i.ksppinm LIKE '%&param%'
    new   8:    AND i.ksppinm LIKE '%failgroup%'
    
    NAME                                DESCRIPTION                                                        VALUE
    ----------------------------------- ------------------------------------------------------------------ ------------------------------
    _asm_disable_dangerous_failgroup_ch Disable checking for dubious failgroup configurations              FALSE
    ecking
    
    _asm_disable_failgroup_count_checki Disable checking for failure group count                           FALSE
    ng
    
    _asm_disable_failgroup_size_checkin Disable checking for failure group size                            FALSE
    g
    
    --这类参数实测可以动态修改:
    alter system set "_asm_disable_failgroup_size_checking"=true;
    alter system set "_asm_disable_dangerous_failgroup_checking"=true;
    --alter system set "_asm_disable_failgroup_count_checking"=true; 这个参数我没有测出来实际作用,实测只需要上面两个参数设置为true就同样可以允许failgroup的数量不一致。
    
    SQL> show parameter _asm
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    _asm_disable_dangerous_failgroup_che boolean     TRUE
    cking
    _asm_disable_failgroup_size_checking boolean     TRUE
    
    
    --test
    SQL> select name, failgroup, path, mode_status, voting_file from v$asm_disk;
    
    NAME                                FAILGROUP                      PATH                                          MODE_ST V
    ----------------------------------- ------------------------------ --------------------------------------------- ------- -
                                                                       /public/nfsdisk                               ONLINE  N
    OCRVT_0005                          OCRVT_0002                     /dev/mapper/mpathk                            ONLINE  N
    OCRVT_0004                          OCRVT_0001                     /dev/mapper/mpathj                            ONLINE  N
    DATA_0001                           DATA_0001                      /dev/mapper/mpathf                            ONLINE  N
    OCRVT_0003                          OCRVT_0000                     /dev/mapper/mpathi                            ONLINE  N
    FRA_0000                            FRA_0000                       /dev/mapper/mpathh                            ONLINE  N
    DATA_0002                           DATA_0002                      /dev/mapper/mpathg                            ONLINE  N
    DATA_0000                           DATA_0000                      /dev/mapper/mpathe                            ONLINE  N
    MGMT_0000                           MGMT_0000                      /dev/mapper/mpathd                            ONLINE  N
    OCRVT_0000                          OCRVT_0000                     /dev/mapper/mpathc                            ONLINE  Y
    OCRVT_0002                          OCRVT_0002                     /dev/mapper/mpathb                            ONLINE  Y
    OCRVT_0001                          OCRVT_0001                     /dev/mapper/mpatha                            ONLINE  Y
    
    12 rows selected.
    
    --以下操作均可以成功:
    alter diskgroup ocrvt drop disk OCRVT_0003;
    alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi';   
    	   
    --如果不改参数,那么只能同时删除/增加每个failgroup中的成员:
    alter diskgroup ocrvt drop disk OCRVT_0003, OCRVT_0004, OCRVT_0005;
    alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'  
    FAILGROUP OCRVT_0001 disk '/dev/mapper/mpathj'  
    FAILGROUP OCRVT_0002 disk '/dev/mapper/mpathk';
    
    --最后同样可以动态还原配置:
    alter system set "_asm_disable_failgroup_size_checking"=false;
    alter system set "_asm_disable_dangerous_failgroup_checking"=false;
    

    注意:实验发现如果使用asmca添加磁盘,无论是否设置这个参数,都会报错[DBT-30003] The size of the disks selected is not the same as to allow for an equal number of 4MB AU size blocks.
    而使用命令行操作,只要设置这2个隐藏参数为true即可成功。

  • 相关阅读:
    [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载
    凡事预则立,不预则废
    Linux下history命令详解---转载
    12 个最佳的免费网络监控工具--转载
    Linux curl命令参数详解--转载
    从源码角度深入分析ant
    SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转
    使用split进行分割时遇到特殊字符的问题
    ES查看segment大小
    Twitter的流处理器系统Heron——升级的storm,可以利用mesos来进行资源调度
  • 原文地址:https://www.cnblogs.com/jyzhao/p/10668227.html
Copyright © 2011-2022 走看看