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即可成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM