ASM 디스크 상태가 forcing입니다.

5982 단어 asm
결론:
만약 한 diskgroup에failgroup offline이 있다면diskrepair_time가 정의한 시간 후, asm는 이failgroup에drop 작업을 할 것입니다.
만약drop 이후 나머지failgroup가 불필요한 정책의 최저 요구(normal 2,high 3)보다 적거나 불필요한 공간을 충족시키기 위해 남은 공간이 부족하다면
요구 사항, 즉 리밸런스가 정상적으로 진행되지 않으면forcing 상태의 디스크가 나타납니다.
forcing 상태의 디스크가 있다면,alter를 사용하여 디스크를 추가할 때name를 지정해야 합니다.name는forcing 상태의 디스크의 원본name입니다.
예를 들어 ssddg 디스크 ssddg0001디스크가drop에 떨어졌습니다.state는forcing입니다.아래 명령으로 디스크 그룹을 복구한 후 SSDDG0001 상태가 normal:
alter diskgroup ssddg add failgroup rac2 disk '/dev/raw/raw3' name SSDDG_0001 force;

실험 대상은 3개의failgroup가 있는 디스크 그룹입니다. 실험에 필요한diskrepair_time 설정은 5min입니다.
SQL>  select name,failgroup,path from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where  name='SSDDG');
NAME        FAILG PATH
--------------- ----- --------------------------------------------------------------------------------
SSDDG_0001    RAC2  /dev/raw/raw3
SSDDG_0000    RAC1  /dev/raw/raw2
SSDDG_0001_0    RAC3  /dev/raw/raw5
ASMCMD> lsattr -G ssddg -lm
Group_Name  Name                     Value       RO  Sys  
SSDDG       access_control.enabled   FALSE       N   Y    
SSDDG       access_control.umask     066         N   Y    
SSDDG       au_size                  1048576     Y   Y    
SSDDG       cell.smart_scan_capable  FALSE       N   N    
SSDDG       compatible.asm           11.2.0.3.0  N   Y    
SSDDG       compatible.rdbms         11.2.0.3    N   Y    
SSDDG       content.type             data        N   Y    
SSDDG       disk_repair_time         5m          N   Y    
SSDDG       idp.boundary             auto        N   Y    
SSDDG       idp.type                 dynamic     N   Y    
SSDDG       sector_size              512         Y   Y

디스크 그룹에는 아주 적은 데이터만 있습니다.
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576     20480    18245                0           18245              0             N  DATADG/
MOUNTED  EXTERN  N         512   4096  1048576      2048     1653                0            1653              0             Y  OCRVOTE/
MOUNTED  NORMAL  N         512   4096  1048576     24576    24237             8192            8022              0             N  SSDDG/

실험1、수동으로 SSDG0001_0 이 디스크 오프라인:
SQL> select name,failgroup,path,mode_status,state from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where  name='SSDDG');
NAME        FAILG PATH                                           MODE_STATUS    STATE
--------------- ----- -------------------------------------------------------------------------------- -------------- ----------------
SSDDG_0001_0    RAC3                                               OFFLINE          NORMAL
SSDDG_0001    RAC2  /dev/raw/raw3                                       ONLINE          NORMAL
SSDDG_0000    RAC1  /dev/raw/raw2                                       ONLINE          NORMAL

5분 뒤에 디스크가 드롭됩니다.
NAME        FAILG PATH                                           MODE_STATUS    STATE
--------------- ----- -------------------------------------------------------------------------------- -------------- ----------------
_DROPPED_0001_S RAC3                                               OFFLINE          FORCING
SDDG
SSDDG_0001    RAC2  /dev/raw/raw3                                       ONLINE          NORMAL
SSDDG_0000    RAC1  /dev/raw/raw2                                       ONLINE          NORMAL

drop 이후의 최종 결과:
NAME        FAILG PATH                                           MODE_STATUS    STATE
--------------- ----- -------------------------------------------------------------------------------- -------------- ----------------
SSDDG_0001    RAC2  /dev/raw/raw3                                       ONLINE          NORMAL
SSDDG_0000    RAC1  /dev/raw/raw2                                       ONLINE          NORMAL

결론:offline의 디스크가drop에 의해 유지된 후에 디스크 그룹은 2개의failgroup를 유지할 수 있고 공간도normal冗余로 충분하여 디스크의 정보는 더 이상 기록되지 않는다.
실험2. 실험1을 바탕으로 오프라인의failgroup,drop 이후의 최종 결과:
NAME        FAILG PATH                                           MODE_STATUS    STATE
--------------- ----- -------------------------------------------------------------------------------- -------------- ----------------
_DROPPED_0002_S RAC2                                               OFFLINE          FORCING
SDDG
SSDDG_0000    RAC1  /dev/raw/raw2                                       ONLINE          NORMAL

실험3. 환경은 실험과 같이 ssddg에 10G 데이터 파일을 만듭니다. 만약drop에failgroup이 떨어지면diskgroup의 공간은normal의 군더더기를 충족시키지 못합니다.failgroup offline,drop 이후의 최종 결과:
NAME        FAILG PATH                                           MODE_STATUS    STATE
--------------- ----- -------------------------------------------------------------------------------- -------------- ----------------
_DROPPED_0002_S RAC3                                               OFFLINE          FORCING
SDDG
SSDDG_0000    RAC1  /dev/raw/raw2                                       ONLINE          NORMAL
SSDDG_0001    RAC2  /dev/raw/raw3                                       ONLINE          NORMAL

asmcmd lsop 결과:
[grid@node1 ~]$ asmcmd lsop
Group_Name  Dsk_Num  State  Power  EST_WORK  EST_RATE  EST_TIME  
SSDDG       REBAL    ERRS   1

alert 로그 내용:
Thu Mar 31 15:31:00 2016
ERROR: ORA-15041 thrown in ARB0 for group number 3
Errors in file /oracle/11.2.0/grid/log/diag/asm/+asm/+ASM1/trace/+ASM1_arb0_22412.trc:
ORA-15041: diskgroup "SSDDG" space exhausted
Thu Mar 31 15:31:00 2016
NOTE: stopping process ARB0
NOTE: rebalance interrupted for group 3/0xf7e87524 (SSDDG)

좋은 웹페이지 즐겨찾기