暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle 19C数据库存储替换问题--ORA-59327 ORA-59048

原创 泡泡龙 2021-12-31
3750

一、背景: 公司客户一套oracle19c数据库ASM磁盘组使用了normal冗余双存储, 防止存储单点故障, ASM磁盘组建立两个Failgroup :F1 F2 ,磁盘分别来自两个不同存储。 

客户需要更换一套存储F2.


二、实施方案: 

为磁盘组创建第三个Failgroup F3, F3中的磁盘来自新的存储, 待数据做完rebalance后删除Failgroup F2, 从而完成新存储替换老存储。 


三、正式实施:

1.向DATA磁盘组加盘。--顺利完成


2.等待磁盘组rebalance. --顺利完成

3.从磁盘组中删除Failgroup F2 中的磁盘。--问题从此开始


报错: 

ORA-15032: not all alterations performed
ORA-59327: Dropping more fail groups is not allowed with disk group redundancy.


尝试修改以下隐含参数: 

SQL> alter system set "_asm_disable_failgroup_size_checking"=true scope=both sid='*';

System altered.

SQL> alter system set "_asm_disable_dangerous_failgroup_checking"=true scope=both sid='*';

System altered.


再次drop 磁盘  ,磁盘drop 命令顺利执行

SQL> alter diskgroup ARCH drop disk ARCH_0001 rebalance power 5;

Diskgroup altered.

但随后问题来了,磁盘组rebalance过程中 报错: ORA-59048  无法完成rebance. 所删除的磁盘一致处于dropping状态无法结束。 



问题就此陷入僵局


参考MOS 文档:

有如下解释

CAUSE

In 12.1.0.2 ASM and higher releases, it is not allowed to Normal Drop the Failgroup in a Normal/High Redundancy Diskgroup if it lowers the Failgroup count below 3 for Normal Redundancy Diskgroup and below 5 for High Redundancy Diskgroup.

Any attempt to force drop Failgroup will not expel the disks completely and leave the disks in "FORCING" state.

This is an expected behaviour imposed by the fix of unpublished Bug 25810704.

This is to alert users that the Normal/High Redundancy Diskgroup is running with less than requisite number of Failgroups.

翻译出来就是: 在12.1.0.2 以上版本asm中,如果normal冗余的磁盘组Failgroup少于3个或者High冗余的Failgroup少于5个是不允许删除Failgroup的 。


但是实践证明创建的时候normal冗余的磁盘组Failgroup可以为两个或者High冗余的Failgroup可以为3个。

一句话就是创建时可以 ,删时就别想删了 ,是为了解决Bug 25810704 而制造出来的。   


4. 解决方案。 

根据文档

方法1) 添加第四个Failgroup后再删除一个。(这种方式需要划分大量的额外存储,pass掉) 

方法2)添加一个仲裁Failgroup。(这种方法对仲裁磁盘的大小没有要求,仅需要划分一块小盘即可完成)

方法3) 重建磁盘组(生产上实现很困难) 

SOLUTION

 If the Failgroup is dropped with force option and there are "_DROPPED" entries in v$asm_disk then following below solutions:

1)Add more Failgroups to the Normal/High Redundancy Diskgroup.

       SQL> alter diskgroup <DGNAME> add failgroup <FAILGROUP_NAME> disk '<path>','<path>'.....;

                        = OR =

2)Add Quorum Failgroups to the Normal/High Redundancy Diskgroup.  

       SQL>alter diskgroup <dgname> add quorum failgroup <Quorum_Failgroup_name> disk '<NFS path>';

 

   Highly recommended for Exadata environments having High Redundancy Diskgroup with only 3 Cell Servers and 2 Database Nodes.

   Add quorum disks in Exadata:
        /opt/oracle.SupportTools/quorumdiskmgr --create --config --owner=<GI_owner> --group=<GI_Group> --network-iface-list="ibx,ibx"
        /opt/oracle.SupportTools/quorumdiskmgr --create --target --asm-disk-group=<dgname> --visible-to="<compute Node IP's>"
        /opt/oracle.SupportTools/quorumdiskmgr --create --device --target-ip-list="<compute Node IP's>"

 

   Note: Quorum Disk Manager utility is introduced in Oracle Exadata release 12.1.2.3.0.

             Please refer Engineered Systems documentation for more details on the quorumdiskmgr configuration steps and syntax.

https://docs.oracle.com/en/engineered-systems/exadata-database-machine/dbmmn/maintaining-exadata-database-servers.html#GUID-6F322D77-F1DF-41A3-B807-131A9ABD4FBC

                        = OR  =

3)Recreate the Normal/High Redundancy Diskgroups with requisite number of Failgroups ( Normal Redundancy -3 Failgroups , High Redundancy - 5 Failgroups).

       SQL> create Diskgroup <DGNAME> normal redundancy
                failgroup <FAILGROUP1> disk '<path>','<path>'...
                failgroup <FAILGROUP2> disk '<path>','<path>'....
                failgroup <FAILGROUP2> disk '<path>','<path>'...;


5.最终解决。

划分了一块10G 大小的仲裁盘,创建quorum failgroup q1后 顺利删除F2


至此完成新老存储的替换。 


四、总结

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

但12.1.0.2 以上版本引入了以下隐含参数: 对Failgroup 的个数、磁盘大小、磁盘个数进行check.

"_asm_disable_failgroup_size_checking"
 "_asm_disable_dangerous_failgroup_checking"
"_asm_disable_failgroup_count_checking".

12C以上的ASM增删Failgroup 时需要注意 《在12.1.0.2 以上版本asm中,如果normal冗余的磁盘组Failgroup少于3个或者High冗余的Failgroup少于5个是不允许删除Failgroup的 。》

最后修改时间:2022-01-21 11:59:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论