阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

测试一体机ASM failgroup的相关问题处理

144次阅读
没有评论

共计 5399 个字符,预计需要花费 14 分钟才能阅读完成。

环境:3 台虚拟机 RHEL 7.3 + Oracle RAC 11.2.0.4
问题现象:RAC 运行正常,ASM 磁盘组 Normal 冗余,有 failgroup 整体故障,有 failgroup 配置错误。
温馨提示:本文并不是市场上任何一款商业的一体机产品,只是我为了学习这类分布式存储架构自己模拟的实验环境,为了区分我暂时称之为 xData 吧 ^_^。

1. 问题现象确认

2. 重新加入 CELL01 的盘

3. 修改 failgroup 的配置

1. 问题现象确认
SQL> select group_number, name, total_mb, free_mb, USABLE_FILE_MB, offline_disks, state, type from v$asm_diskgroup;

GROUP_NUMBER NAME                            TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS STATE                  TYPE
———— —————————— ———- ———- ————– ————- ———————- ———-
          1 CRS                                  2000      1170            585            0 MOUNTED                NORMAL
          2 DATA                                40960      35652          7586            0 MOUNTED                NORMAL

SQL>  select group_number, disk_number, name, path, failgroup, mode_status, voting_file  from v$asm_disk order by 1, 2;

GROUP_NUMBER DISK_NUMBER NAME                          PATH                    FAILGROUP            MODE_STATUS    VO
———— ———– —————————— ———————– ——————– ————– —
          0          0                                /dev/CELL01-data2                            ONLINE        N
          0          1                                /dev/CELL01-data1                            ONLINE        N
          0          2                                /dev/CELL01-crs1                            ONLINE        Y
          1          1 CRS_0001                      /dev/CELL02-crs2        CRS_0001            ONLINE        Y
          1          2 CRS_0002                      /dev/CELL03-crs3        CRS_0002            ONLINE        Y
          2          0 DATA_0000                      /dev/CELL03-data1      DATA_0000            ONLINE        N
          2          1 DATA_0001                      /dev/CELL03-data2      DATA_0001            ONLINE        N
          2          2 DATA_0002                      /dev/CELL02-data1      CELL02              ONLINE        N
          2          3 DATA_0003                      /dev/CELL02-data2      CELL02              ONLINE        N

9 rows selected.

可以看到不但 CELL01 节点的所有盘被删除,而且 CELL03 节点的数据盘,failgroup 目前也配置不正确!

2. 重新加入 CELL01 的盘
由于时间超过默认的 3.6h,offline 的盘已经被删除,只有重新加入 CELL01 的盘才可以。
alter diskgroup CRS add disk ‘/dev/CELL01-crs1’;
alter diskgroup DATA ADD FAILGROUP CELL01 disk ‘/dev/CELL01-data1’, ‘/dev/CELL01-data2’ rebalance power 5;

直接这样加盘很可能会遇到下面这类错误,因为这些盘之前是被使用过的:
SQL> alter diskgroup CRS add disk ‘/dev/CELL01-crs1’;
alter diskgroup CRS add disk ‘/dev/CELL01-crs1’
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15033: disk ‘/dev/CELL01-crs1’ belongs to diskgroup “CRS”

这个问题可以通过 dd 盘头,也可以加盘尝试加 force 参数来解决,我这里选择 dd 盘头的方式:
[root@db01 ~]# dd if=/dev/zero of=/dev/CELL01-crs1 bs=8k count=1000
1000+0 records in
1000+0 records out
8192000 bytes (8.2 MB) copied, 0.0691801 s, 118 MB/s

dd 盘头之后再次尝试添加就可以顺利完成:
SQL> alter diskgroup CRS add disk ‘/dev/CELL01-crs1’;

Diskgroup altered.

同样的,将 CELL01 的数据盘也重新加入到 DATA 磁盘组中,failgroup 名称为 CELL01:
SQL> alter diskgroup DATA ADD FAILGROUP CELL01 disk ‘/dev/CELL01-data1’, ‘/dev/CELL01-data2’ rebalance power 5;

Diskgroup altered.

通过 v$asm_operation 视图可以查看磁盘重新平衡的进度,直到下面的查询不再返回结果说明重平衡完成:
SQL> select * from v$asm_operation;

GROUP_NUMBER OPERATION  STATE        POWER    ACTUAL      SOFAR  EST_WORK  EST_RATE EST_MINUTES ERROR_CODE
———— ———- ——– ———- ———- ———- ———- ———- ———– ——————–
          2 REBAL      RUN              5          5        366        529        348          0
SQL> select * from v$asm_operation;

no rows selected

3. 修改 failgroup 的配置

CELL03 的数据盘,failgroup 目前配置还不正确。
SQL> alter diskgroup DATA drop disk DATA_0000, DATA_0001;

Diskgroup altered.

查询 v$asm_operation 视图可以查看磁盘重新平衡的进度,完成后再重新加回磁盘组,指定确切的 failgroup(CELL03):
SQL> alter diskgroup DATA ADD FAILGROUP CELL03 disk ‘/dev/CELL03-data1’, ‘/dev/CELL03-data2’ rebalance power 5;

Diskgroup altered.

再次关注重平衡进度,最后查询一切正常,结果如下:
SQL> col path for a50
SQL> select group_number, disk_number, name, path, failgroup, mode_status, voting_file  from v$asm_disk order by 1, 2;

GROUP_NUMBER DISK_NUMBER NAME                          PATH                    FAILGROUP            MODE_STATUS    VO
———— ———– —————————— ———————– ——————– ————– —
          1          0 CRS_0000                      /dev/CELL01-crs1        CRS_0000            ONLINE        Y
          1          1 CRS_0001                      /dev/CELL02-crs2        CRS_0001            ONLINE        Y
          1          2 CRS_0002                      /dev/CELL03-crs3        CRS_0002            ONLINE        Y
          2          0 DATA_0000                      /dev/CELL03-data1      CELL03              ONLINE        N
          2          1 DATA_0001                      /dev/CELL03-data2      CELL03              ONLINE        N
          2          2 DATA_0002                      /dev/CELL02-data1      CELL02              ONLINE        N
          2          3 DATA_0003                      /dev/CELL02-data2      CELL02              ONLINE        N
          2          4 DATA_0004                      /dev/CELL01-data1      CELL01              ONLINE        N
          2          5 DATA_0005                      /dev/CELL01-data2      CELL01              ONLINE        N

9 rows selected.

SQL> select group_number, name, total_mb, free_mb, USABLE_FILE_MB, offline_disks, state, type from v$asm_diskgroup;

GROUP_NUMBER NAME                            TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS STATE                  TYPE
———— —————————— ———- ———- ————– ————- ———————- ———-
          1 CRS                                  3000      2033            516            0 MOUNTED                NORMAL
          2 DATA                                61440      56012          17766            0 MOUNTED                NORMAL

说明:一般我会将磁盘组的兼容性参数设置为 11.2,如有特殊需求,还可以设置 disk_repair_time(默认 3.6h)。
SQL> col COMPATIBILITY for a30
SQL> col DATABASE_COMPATIBILITY for a30
SQL> select NAME, COMPATIBILITY, DATABASE_COMPATIBILITY from v$asm_diskgroup;

NAME                          COMPATIBILITY                  DATABASE_COMPATIBILITY
—————————— —————————— ——————————
CRS                            11.2.0.0.0                    11.2.0.0.0
DATA                          11.2.0.0.0                    11.2.0.0.0

– 设置 DATA 磁盘组 disk_repair_time(可理解为磁盘离线删除的时间)属性为 4.5h
SQL> ALTER DISKGROUP data SET ATTRIBUTE ‘disk_repair_time’ = ‘4.5h’;
Diskgroup altered.

更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5399字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中