首页 » ORACLE [C]系列, ORACLE 9i-23c » Oracle ASM rebanlance fail with ORA-59048 when drop failgroup disk

Oracle ASM rebanlance fail with ORA-59048 when drop failgroup disk

Oracle数据库在12.1.0.2 以上版本asm中,如果normal冗余的磁盘组Failgroup少于3个或者High冗余的Failgroup少于5个是不允许删除Failgroup的 。或配置Normal或Flex冗余 ASM 磁盘组,具有 3 个常规故障组和至少 1 个仲裁故障组, 当Drop 1 个常规故障组时, rebalance 结束时,在 v$asm_operation 中可以看到 ORA-59048。

检查 gv$asm_operation

SQL> 

GROUP_NUMBER OPERA PASS       STAT POWER      ERROR_CODE
------------ ----- ---------  ---- ---------- ---------- 
            2 REBAL COMPACT   WAIT 11
            2 REBAL REBALANCE ERRS 11         ORA-59048 <<<<<<<<<
            2 REBAL REBUILD   WAIT 11
            2 REBAL RESYNC    WAIT 11

不同的ASM版本影响

小于ASM 12.1.0.2 版本的ASM 对每个Failgroup 中的磁盘大小、个数,没有强制要求。

ASM 12.1.0.2及以上版本引入了以下隐含参数: 对Failgroup 的个数、磁盘大小、磁盘个数进行check.
“_asm_disable_failgroup_size_checking”
“_asm_disable_dangerous_failgroup_checking”
“_asm_disable_failgroup_count_checking”.

12.1.0.2 – 18c :

SQL> create diskgroup TEST19 normal redundancy disk '/dev/asm0' disk '/dev/asm1' disk '/dev/asm2' 
attribute 'compatible.asm'='12.2.0.2';

SQL> alter diskgroup TEST19 drop disks in failgroup TEST19_0000;

alter diskgroup TEST19 drop disks in failgroup TEST19_0000
*
ERROR at line 1:
ORA-15067: command or option incompatible with diskgroup redundancy    

19c and later:

SQL>create diskgroup TEST19 normal redundancy disk '/dev/asm0' disk '/dev/asm1' disk '/dev/asm2' 
attribute 'compatible.asm'='19.3.0.0';

SQL> alter diskgroup TEST19 drop disks in failgroup TEST19_0000;
alter diskgroup TEST19 drop disks in failgroup TEST19_0000
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-59327: Dropping more fail groups is not allowed with disk group redundancy 

删除时因为有上面提到的新引入的check参数会提示,但是如果增加force选项删除,虽然删除成功,但是会REBANACE失败ORA-59048因为不满足故障组数据要求,同时ASM DISK处理forcing状态, ALERT日志中会提示“WARNING: grp 2 disk _DROPPED_<DISK#>_ still has contents ”

SQL> alter diskgroup TEST19 drop disks in failgroup TEST19_0001 force;

SQL> select group_number,substr(path,1,12) Path,substr(name,1,15) Name, substr(failgroup,1,12) Failgroup,header_status,state 
from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name='TEST19');

GROUP_NUMBER   PATH        NAME                 FAILGROUP    HEADER_STATU STATE
------------ ------------ ---------------------- ------------ ----------------- -----------
2                        _DROPPED_0001_T        TEST19_0001 UNKNOWN FORCING       
2              /dev/asm2 TEST19_0002            TEST19_0002 MEMBER    NORMAL
2              /dev/asm0 TEST19_0000            TEST19_0000 MEMBER    NORMAL

在EXADATA中根据设计,高冗余磁盘组预计有 5 个故障组,其中三个单元节点中的每一个将服务 3 个故障组,其余两个故障组为仲裁磁盘。查询可能如下

SQL> select FAILGROUP,FAILGROUP_TYPE,count(*) from v$asm_disk group by FAILGROUP,FAILGROUP_TYPE order by 1,2;
FAILGROUP           FAILGRO               COUNT(*)
------------   -------------- --------------------
EXADBADM01             QUORUM                  1
EXADBADM02             QUORUM                  1  
celladm1              REGULAR                 24
celladm2              REGULAR                 24
celladm3              REGULAR                 24  

同样如果上面删除仲裁磁盘QUORUM FG也是不允许的,修复ORA-59048,需要增加新的quorum disks 进来,如:

SQL> ALTER DISKGROUP DATAC1 ADD
QUORUM FAILGROUP db01 DISK '/dev/exadata_quorum/QD_DATAC1_DB01'
QUORUM FAILGROUP db02 DISK '/dev/exadata_quorum/QD_DATAC1_DB02';

常规的解决方法:

方法1) 添加新Failgroup后RB

SQL> alter diskgroup  add failgroup  disk '',''.....;

方法2)添加一个仲裁Failgroup。(对仲裁磁盘的大小没有要求,或NFS)

SQL>alter diskgroup  add quorum failgroup  disk '';

方法3) 重建磁盘组. copy文件或 RMAN 备份恢复的方式移动到新的ASMDG。

在Bug 32382021 Rebalance Operation in RECO Diskgroup is Failing With ORA-59048提到了一种方法,

alter system set events '15441 trace name context forever, level 0x8000000'
 Then run run rebalance to expel the dropping disk. 
 Unset event.
 alter system set events '15441 trace name context off'

15441, 00000, “Internal ASM testing event number 15441”
// *Document: NO
// *Cause: Set this event only under the supervision of Oracle development.
// *Action: The level controls which ASM rebalance phase must be skipped.
//

Reference
Exadata/SuperCluster/ODA/RAC/SIHA: Dropping Failgroup in Normal/High Redundancy Diskgroup fails with ORA-15067 or ORA-59327 or ORA-59048 (Doc ID 2594359.1)

打赏

,

对不起,这篇文章暂时关闭评论。