更换RAC中OCR磁盘组中的磁盘(ORA-15410)
缘由
最近在客户这安装了一套12.2.0.1 的rac,配置的时候,设置了OCR磁盘组150g,共3块50G的盘,已经安装完成了,结果客户说盘太大了,需要减少,无奈,只能按照客户的要求来,减少到共50G,分为5个10g的盘。
起初想着是创建一个新的磁盘组,然后替换OCR磁盘组,后来突然想到,为啥不能直接添加磁盘,然后删除老的磁盘呢,所以就尝试了一下,结果碰到一个错误,经过百度,可以解决,特此记录。
参考:https://www.cnblogs.com/jyzhao/p/10668227.html
碰到的问题
现象:在Oracle 12.2.0.1 RAC环境,在其ASM实例中,如果添加不同大小或者不同数量的LUN到failgroup中,会报错:
1 2 3 4 5 | 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. |
解决方案:
动态修改这两个隐藏参数可以解决:
1 2 | 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磁盘组中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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中,会报错。依次尝试设置相关的隐藏参数,可以成功添加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | SQL> 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 '%¶m%' 9* ORDER BY REPLACE (i.ksppinm, '_', '') Enter value for param: failgroup old 8: AND i.ksppinm LIKE '%¶m%' new 8: AND i.ksppinm LIKE '%failgroup%' NAME DESCRIPTION VALUE ----------------------------------------- ---------------------------------------------------------------- ------------------------------ _asm_disable_dangerous_failgroup_checking Disable checking for dubious failgroup configurations FALSE _asm_disable_failgroup_count_checking Disable checking for failure group count FALSE _asm_disable_failgroup_size_checking Disable checking for failure group size FALSE --这类参数实测可以动态修改: 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_checking boolean TRUE _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即可成功。
?为什么看不了呢
可以看呢,你看不了是报啥错吗,可以私聊我微信,远程截图看看