ASM normal冗余,损坏一个失败组,是否可以通过增加新失败组修复

ASM normal冗余,损坏一个失败组,是否可以通过增加新失败组修复

1、创建3个失败组,每个失败组1个磁盘,大小1g

create diskgroup test normal redundancy 
failgroup fg1 disk '/dev/asm_1g_1' size 1g 
failgroup fg2 disk '/dev/asm_1g_2' size 1g  
failgroup fg3 disk '/dev/asm_1g_3' size 1g 
ATTRIBUTE 'au_size'='4M';

SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where name like 'TEST%' order by path;

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE    NAME                 FAILG PATH                 FAILGRO
------------ ----------- ------- ------------ ------- -------- -------------------- ----- -------------------- -------
           4           0 CACHED  MEMBER       ONLINE  NORMAL   TEST_0000            FG1   /dev/asm_1g_1        REGULAR
           4           1 CACHED  MEMBER       ONLINE  NORMAL   TEST_0001            FG2   /dev/asm_1g_2        REGULAR
           4           2 CACHED  MEMBER       ONLINE  NORMAL   TEST_0002            FG3   /dev/asm_1g_3        REGULAR

2、创建表空间,数据文件撑满asm磁盘组

create tablespace test datafile '+test' size 1400m;
create table test(id number) tablespace test;
insert into test values(1);
commit;
select * from test;

3、dd其中一个失败组磁盘

dd if=/dev/zero of=/dev/asm_1g_1 bs=1024 count=1

SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where name like 'TEST%' order by path;

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE    NAME       FAILG PATH                 FAILGRO
------------ ----------- ------- ------------ ------- -------- ---------- ----- -------------------- -------
           4           0 CACHED  CANDIDATE    ONLINE  NORMAL   TEST_0000  FG1   /dev/asm_1g_1        REGULAR
           4           1 CACHED  MEMBER       ONLINE  NORMAL   TEST_0001  FG2   /dev/asm_1g_2        REGULAR
           4           2 CACHED  MEMBER       ONLINE  NORMAL   TEST_0002  FG3   /dev/asm_1g_3        REGULAR

4、手动卸载asm磁盘组

SQL> alter diskgroup test dismount force;

5、清除buffer

SQL> alter system flush buffer_cache;

System altered.

ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 35670
Session ID: 1 Serial number: 5

数据库已宕机

6、尝试mount

SQL> alter diskgroup test mount;
alter diskgroup test mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk "0" is missing from group number "4"

7、尝试增加失败组fg1

SQL> alter diskgroup test add failgroup fg1 disk '/dev/asm_1g_1' size 1g; 
alter diskgroup test add failgroup fg1 disk '/dev/asm_1g_1' size 1g
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15001: diskgroup "TEST" does not exist or is not mounted

发现asm磁盘组没有mount,就无法增加失败组

8、force挂载asm磁盘组

alter diskgroup test mount force;

SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk order by path;

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE    NAME                 FAILG PATH                 FAILGRO
------------ ----------- ------- ------------ ------- -------- -------------------- ----- -------------------- -------
           0           8 CLOSED  CANDIDATE    ONLINE  NORMAL                              /dev/asm_1g_1                    REGULAR
           4           1 CACHED  MEMBER       ONLINE  NORMAL   TEST_0001            FG2   /dev/asm_1g_2        REGULAR
           4           2 CACHED  MEMBER       ONLINE  NORMAL   TEST_0002            FG3   /dev/asm_1g_3        REGULAR
           4           0 MISSING UNKNOWN      OFFLINE NORMAL   TEST_0000            FG1                                  REGULAR
强制挂载之后,受损fg1失败组已经离线

9、重新增加失败组fg1

SQL> alter diskgroup test add failgroup fg1 disk '/dev/asm_1g_1' size 1g; 
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk order by path;

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE    NAME                 FAILG PATH                 FAILGRO
------------ ----------- ------- ------------ ------- -------- -------------------- ----- -------------------- -------
           4           3 CACHED  MEMBER       ONLINE  NORMAL   TEST_0003            FG1   /dev/asm_1g_1        REGULAR
           4           1 CACHED  MEMBER       ONLINE  NORMAL   TEST_0001            FG2   /dev/asm_1g_2        REGULAR
           4           2 CACHED  MEMBER       ONLINE  NORMAL   TEST_0002            FG3   /dev/asm_1g_3        REGULAR

重新增加失败组fg1成功,又重新恢复成3个失败组

注意一个细节,可以发现原本失败组fg1 /dev/asm_1g_1 对应的名字为TEST_0000,现在变为了TEST_0003

总结:只要asm磁盘组还能mount force,可以通过增加失败组的方式恢复原冗余结构(失败组名称可以与之前失效失败组名称相同)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值