Oracle Asm Failgroup測試學習


一、測試目標

 疑問? 我們都知道Oracle RAC使用ASM管理存儲;

 對於ASM磁盤組而言冗余模式有三種,EXTERN、NORMALN、HIGH,那么這三種冗余方式有什么作用呢?

  假設磁盤損壞,能丟失多少塊磁盤呢???

 我們在來推斷一下這個東西有什么使用場景!ASM磁盤組是否值得多配置存儲,配置冗余模式。

本篇文檔,帶着這些疑問,進行測試,並進行匯總整理思路,實現自問自答。 本次測試不考慮ocr磁盤組,只測試DATA磁盤組進行思考。

 

二、Oracle ASM磁盤組的冗余策略

EXTERN 磁盤組無冗余,丟失1塊磁盤,磁盤組dismount,磁盤組無法對外提供正常的讀寫;

NORMAL磁盤組數據寫2份,一份主數據,一份備份copy數據,丟失1塊磁盤磁盤組正常,最多丟失同一個failgroup組的所有磁盤;

HIGH 磁盤組數據寫3份,一份主數據,另外2份備份copy數據,丟失2塊磁盤磁盤組正常,最多丟失兩組failgroup組的所有磁盤;

Oracle ASM磁盤為什么需要配置冗余? 底層操作系統RAID 10,5不香嗎?  是否多此一舉。  

正是有着操作系統RAID,因此目前運維駐場的客戶這邊,絕大部分DATA磁盤組均為extern非冗余!  但是這種場景無法進行機房級別的容災,整個機房掉電、其它異常導致無法訪問! 即使操作系統存儲RAID無效果。

如果使用NORMAL,2份存儲,一份存儲A機房,另外一份存儲B機房,分別屬於2個FAILGROUP組,A機房異常,不影響RAC DB的服務!

 

 

三、實驗測試

第一階段:測試實驗DATA1 EXTERN情況下,觀察failgroup情況;
第二階段:測試實驗DATA2 NORMALN情況下,3塊磁盤,觀察failgroup情況;
第三階段:測試實驗DATA2 NORMALN情況下,6塊磁盤,觀察failgroup情況;
第四階段:測試實驗DATA2 HIGH情況下,6塊磁盤,觀察failgroup情況;

 

第一階段:測試實驗DATA1 EXTERN情況下,觀察failgroup情況;

 

SQL> select name,type from v$asm_diskgroup;
NAME											   TYPE
------------------------------------------------------------------------------------------ ------------------
DATA1											   EXTERN 


SQL> select group_number,disk_number,state,failgroup,path from v$asm_disk where group_number=2 order by 2;  
GROUP_NUMBER DISK_NUMBER  STATE		      FAILGROUP 	   PATH
------------ ----------- ----------- ------------------------ -------------------- ----------------------------
	   2	       0     NORMAL		      DATA1_0000	   /dev/oracleasm/disks/ASMDISK10
	   2	       1     NORMAL		      DATA1_0001	   /dev/oracleasm/disks/ASMDISK11
	   2	       2     NORMAL		      DATA1_0002	   /dev/oracleasm/disks/ASMDISK12
	   2	       3     NORMAL		      DATA1_0003	   /dev/oracleasm/disks/ASMDISK7
	   2	       4     NORMAL		      DATA1_0004	   /dev/oracleasm/disks/ASMDISK8
	   2	       5     NORMAL		      DATA1_0005	   /dev/oracleasm/disks/ASMDISK9
	   2	       6     NORMAL		      DATA1_0006	   /dev/oracleasm/disks/ASMDISK13

7 rows selected.

extenal冗余:
--------ASM是以AU為分配單位,1個AU為1M,這里創建一個大小為14M的表空間,理論上講應該分配了14個區.
SQL> create tablespace gao1 datafile '+DATA1' size 14m; 
SQL> create table gaogaogago(id number(20)) tablespace GAO1;
SQL> select file_number,name from v$asm_alias where name like 'GAO%';
FILE_NUMBER NAME
----------- --------------------------
283 GAO1.283.1057142127
v$asm_alias視圖字段解釋: Column Name Description NUMBER_KFFXP ASM file number.
Join with v$asm_file and v$asm_alias COMPOUND_KFFXP File identifier.
Join with compound_index in v$asm_file INCARN_KFFXP File incarnation id.
Join with incarnation in v$asm_file XNUM_KFFXP ASM file extent number (mirrored extent pairs have the same extent value) PXN_KFFXP Progressive file extent number GROUP_KFFXP ASM disk group number.
Join with v$asm_disk and v$asm_diskgroup DISK_KFFXP ASM disk number.
Join with v$asm_disk AU_KFFXP Relative position of the allocation unit from the beginning of the disk.
LXN_KFFXP 0->primary extent,1->mirror extent,
2->2nd mirror copy (high redundancy and metadata)

DISK_KFFXP:對應v$asm_disk.DISK_NUMBER
NUMBER_KFFXP:對應v$asm_file.FILE_NUMBER
XNUM_KFFXP:ASM文件的extent號
select disk_kffxp disk#, XNUM_KFFXP extent#,
case lxn_kffxp
when 0 then 'Primary Copy'
when 1 then 'Mirrored Copy'
when 2 then '2nd Mirrored Copy or metadata' else 'Unknown'
END TYPE
from x$kffxp
where number_kffxp=283 order by 2;
ASM是以AU為分配單位,1個AU為1M,這里創建一個大小為14M的表空間,分配了14個區.由下面結果可已看到一共14個區,都為primary copy,並沒有mirror copy,也就是說external是只存一份數據的。

DISK# EXTENT# TYPE
---------- ---------- ------------------
0 0 Primary Copy
2 0 Primary Copy
0 1 Primary Copy
6 1 Primary Copy
0 2 Primary Copy
5 2 Primary Copy
4 3 Primary Copy
0 4 Primary Copy
1 5 Primary Copy
3 6 Primary Copy
2 7 Primary Copy
6 8 Primary Copy
5 9 Primary Copy
4 10 Primary Copy
0 11 Primary Copy
1 12 Primary Copy
3 13 Primary Copy
2 14 Primary Copy

18 rows selected.


第二階段:測試實驗DATA2 NORMALN情況下,3塊磁盤,觀察failgroup情況;

刪除表空間gao1,然后創建表空間gao1,指定ASM磁盤組為+DATA2(NORMAL冗余磁盤組)
SQL> drop tablespace gao1 including contents and datafiles;
select group_number,name,TOTAL_MB,free_mb,type from v$asm_diskgroup;
GROUP_NUMBER NAME                  TOTAL_MB      FREE_MB TYPE
------------ ------------------------------ ---------- ---------- ------
       2 DATA1                 17129           53 EXTERN
       3 DATA2                  7341         7005 NORMAL

SQL> select group_number,name,disk_number,failgroup_type,path,failgroup  from v$asm_disk where group_number=3
GROUP_NUMBER NAME          DISK_NUMBER FAILGROUP_TYPE        PATH                     FAILGROUP
------------ -------------------- ----------- --------------------- ---------------------------------------- --------------------
       3 DATA2_0002             2 REGULAR            /dev/oracleasm/disks/ASMDISK6         DATA2_0002
       3 DATA2_0001             1 REGULAR            /dev/oracleasm/disks/ASMDISK5         DATA2_0001
       3 DATA2_0000             0 REGULAR            /dev/oracleasm/disks/ASMDISK4         DATA2_0000

create tablespace GAO1 datafile '+DATA2' size 14m;

select file_number,name from v$asm_alias where name like 'GAO%';
FILE_NUMBER NAME
----------- -------------------------------------------------------------
    257 GAO1.257.1057145865
grid$sqlplus / as sysdba
select GROUP_KFFXP,disk_kffxp disk#,
XNUM_KFFXP extent#,
case lxn_kffxp
  when 0 then 'Primary Copy'
  when 1 then 'Mirrored Copy'
  when 2 then '2nd Mirrored Copy or metadata'
  else 'Unknown' END TYPE
from x$kffxp
where 
number_kffxp=257
and GROUP_KFFXP=3
order by 1,2,3; 

由下圖可見,所有的數據都是有兩份的:Primary Copy 和Mirrored Copy,然后每個區的數據都是被分散在三個failgroup中的,所以無論哪個failgroup里面的磁盤壞了,都不會丟數據,但是只允許同時損壞同一個failgroup里面的磁盤
GROUP_KFFXP     DISK#      EXTENT#      TYPE
----------- ---------- ---------- ------------------------------
Failgroup1
      3         0           1              Primary Copy
      3         0           2              Mirrored Copy
      3         0           3              Mirrored Copy
      3         0           4              Primary Copy
      3         0           7              Primary Copy
      3         0           8              Mirrored Copy
      3         0           9              Mirrored Copy
      3         0           10             Primary Copy
      3         0           13             Primary Copy
      3         0           14             Mirrored Copy
Failgroup2
      3         1           0              Primary Copy
      3         1           3              Primary Copy
      3         1           4              Mirrored Copy
      3         1           5              Mirrored Copy
      3         1           6              Primary Copy
      3         1           9              Primary Copy
      3         1           10             Mirrored Copy
      3         1           11             Mirrored Copy
      3         1           12             Primary Copy
Failgroup3
      3         2           0              Mirrored Copy
      3         2           1              Mirrored Copy
      3         2           2              Primary Copy
      3         2           5              Primary Copy
      3         2           6              Mirrored Copy
      3         2           7              Mirrored Copy
      3         2           8              Primary Copy
      3         2           11             Primary Copy
      3         2           12             Mirrored Copy
      3         2           13             Mirrored Copy
      3         2           14             Primary Copy
30 rows selected.
大家細心對比,可以發現,丟失任何FAILGROUP的2塊磁盤都沒了,但是DB無異常,在其它兩個FAILGROUP都存在記錄。

 


第三階段:測試實驗DATA2 NORMALN情況下,6塊磁盤,觀察failgroup情況;

將DATA1磁盤刪除3塊,添加至DATA2磁盤組!
select group_number,disk_number,name,failgroup,total_mb,free_mb,path,mount_status,header_status,mode_status,state from v$asm_disk order by 1,2,3
GROUP_NUMBER DISK_NUMBER NAME		         FAILGROUP    TOTAL_MB    FREE_MB PATH				   MOUNT_STAT HEADER_STA MODE_STATU STATE
------------ ----------- ------------   -------- ---------- ---------- ---------- ----------------------------------- ---------- ---------- ---------- ------------------------
	   1	       0 ARCH_0000	         ARCH_0000        4016	  1635 /dev/oracleasm/disks/ASMDISK14	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       0 DATA1_0000	         DATA1_0000       2447	    45 /dev/oracleasm/disks/ASMDISK10	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       1 DATA1_0001	         DATA1_0001       2447	    50 /dev/oracleasm/disks/ASMDISK11	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       2 DATA1_0002	         DATA1_0002       2447	    50 /dev/oracleasm/disks/ASMDISK12	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       3 DATA1_0003	         DATA1_0003       2447	    45 /dev/oracleasm/disks/ASMDISK7	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       4 DATA1_0004	         DATA1_0004       2447	    55 /dev/oracleasm/disks/ASMDISK8	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       5 DATA1_0005	         DATA1_0005       2447	    50 /dev/oracleasm/disks/ASMDISK9	   CACHED     MEMBER	 ONLINE     NORMAL
	   2	       6 DATA1_0006	         DATA1_0006       2447	    51 /dev/oracleasm/disks/ASMDISK13	   CACHED     MEMBER	 ONLINE     NORMAL
	   3	       0 DATA2_0000	         DATA2_0000       2447	  2335 /dev/oracleasm/disks/ASMDISK4	   CACHED     MEMBER	 ONLINE     NORMAL
	   3	       1 DATA2_0001	         DATA2_0001       2447	  2336 /dev/oracleasm/disks/ASMDISK5	   CACHED     MEMBER	 ONLINE     NORMAL
	   3	       2 DATA2_0002	         DATA2_0002       2447	  2334 /dev/oracleasm/disks/ASMDISK6	   CACHED     MEMBER	 ONLINE     NORMAL
	   5	       0 OCR_0000	         OCR_0000	       2447	  2138 /dev/oracleasm/disks/ASMDISK1	   CACHED     MEMBER	 ONLINE     NORMAL
	   5	       1 OCR_0001	         OCR_0001	       2447	  2139 /dev/oracleasm/disks/ASMDISK2	   CACHED     MEMBER	 ONLINE     NORMAL
	   5	       2 OCR_0002	         OCR_0002	       2447	  2138 /dev/oracleasm/disks/ASMDISK3	   CACHED     MEMBER	 ONLINE     NORMAL

14 rows selected.

刪除磁盤失敗,提示剩余的空間不滿足rebalance,后續手工刪除table數據,有用的表move,索引rebuild;后resize 數據文件,回收空間。

alter diskgroup DATA1 drop disk 'DATA1_0006','DATA1_0005','DATA1_0004' REBALANCE POWER 0;
ORA-15032: not all alterations performed
ORA-15250: insufficient diskgroup space for rebalance completion

 

SQL> select sum(bytes)/1024/1024/1024,owner from dba_segments group by owner order by 1;
.280517578 SH
1.43621826 SYS
2.13165283 SCOTT
3.82910156 TEST

drop user test cascade;
SQL> select tablespace_name,file_name,bytes/1024/1024/1024,file_id from dba_data_files order by 1,2,3;
TABLESPACE_NAME FILE_NAME BYTES/1024/1024/1024
------------------------------ -------------------------------------------------- -------------------- ----------
USERS +DATA1/dr2_prod4/datafile/users.258.1057140291 10.7202148 4

SQL> select name,total_mb,free_mb from v$asm_diskgroup where name='DATA1';

NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
DATA1 17129 346

 

alter database datafile '+DATA1/dr2_prod4/datafile/users.258.1057140291' resize 1g;
ORA-03297: file contains used data beyond requested RESIZE value

找到block_id 大的,處於file后半段進行處理

select owner,segment_name,tablespace_name,bytes/1024/1024,EXTENT_ID,FILE_ID,block_id from dba_extents where tablespace_name='USERS' AND FILE_ID=4 order by EXTENT_ID;

OE SYS_C0011258 USERS .0625 0 4 512
SCOTT DEPT_BAK USERS .0625 0 4 508144
SCOTT DEPT1 USERS .0625 0 4 508152

OE SYS_C0011258 USERS .0625 0 4 512
SCOTT DEPT_BAK USERS .0625 0 4 508144
SCOTT DEPT1 USERS .0625 0 4 508152
GAO TEST USERS .0625 0 4 315984

alter table SCOTT.DEPT_BAK move;
alter table SCOTT.DEPT1 move;
alter table GAO.TEST move;

alter index SCOTT.PK_DEPT1 rebuild;
drop table test01.a purge;

 

alter database datafile 4 resize 1g;

NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
DATA1 17129 10299

alter diskgroup DATA1 drop disk 'DATA1_0006','DATA1_0005','DATA1_0004' REBALANCE POWER 0;

col mount_status for a10
col header_status for a10
col mode_status for a10
col state for a10
select group_number,disk_number,name,failgroup,total_mb,free_mb,path,mount_status,header_status,mode_status,state from v$asm_disk order by 1,2,3;
GROUP_NUMBER DISK_NUMBER NAME FAILGROUP TOTAL_MB FREE_MB PATH MOUNT_STAT HEADER_STA MODE_STATU STATE
------------ ----------- ---------- ---------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ----------
1 0 ARCH_0000 ARCH_0000 4016 1635 /dev/oracleasm/disks/ASMDISK14 CACHED MEMBER ONLINE NORMAL
2 0 DATA1_0000 DATA1_0000 2447 1467 /dev/oracleasm/disks/ASMDISK10 CACHED MEMBER ONLINE NORMAL
2 1 DATA1_0001 DATA1_0001 2447 1472 /dev/oracleasm/disks/ASMDISK11 CACHED MEMBER ONLINE NORMAL
2 2 DATA1_0002 DATA1_0002 2447 1472 /dev/oracleasm/disks/ASMDISK12 CACHED MEMBER ONLINE NORMAL
2 3 DATA1_0003 DATA1_0003 2447 1467 /dev/oracleasm/disks/ASMDISK7 CACHED MEMBER ONLINE NORMAL
2 4 DATA1_0004 DATA1_0004 2447 1476 /dev/oracleasm/disks/ASMDISK8 CACHED MEMBER ONLINE DROPPING
2 5 DATA1_0005 DATA1_0005 2447 1472 /dev/oracleasm/disks/ASMDISK9 CACHED MEMBER ONLINE DROPPING
2 6 DATA1_0006 DATA1_0006 2447 1473 /dev/oracleasm/disks/ASMDISK13 CACHED MEMBER ONLINE DROPPING
3 0 DATA2_0000 DATA2_0000 2447 2335 /dev/oracleasm/disks/ASMDISK4 CACHED MEMBER ONLINE NORMAL
3 1 DATA2_0001 DATA2_0001 2447 2336 /dev/oracleasm/disks/ASMDISK5 CACHED MEMBER ONLINE NORMAL
3 2 DATA2_0002 DATA2_0002 2447 2334 /dev/oracleasm/disks/ASMDISK6 CACHED MEMBER ONLINE NORMAL
5 0 OCR_0000 OCR_0000 2447 2138 /dev/oracleasm/disks/ASMDISK1 CACHED MEMBER ONLINE NORMAL
5 1 OCR_0001 OCR_0001 2447 2139 /dev/oracleasm/disks/ASMDISK2 CACHED MEMBER ONLINE NORMAL
5 2 OCR_0002 OCR_0002 2447 2138 /dev/oracleasm/disks/ASMDISK3 CACHED MEMBER ONLINE NORMAL

14 rows selected.

被刪除drop的磁盤STATE =DROPPING

alter diskgroup data1 rebalance power 6;
select * from v$asm_operation;
GROUP_NUMBER OPERATION STATE POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ --------------- ---------- ---------- ---------- ---------- ---------- ---------- ----------- --------------------
2 REBAL RUN 6 6 2465 3384 5602 0
GROUP_NUMBER DISK_NUMBER NAME FAILGROUP TOTAL_MB FREE_MB PATH MOUNT_STAT HEADER_STA MODE_STATU STATE
------------ ----------- ---------- ---------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ----------
0 0 0 0 /dev/oracleasm/disks/ASMDISK13 CLOSED FORMER ONLINE NORMAL
0 1 0 0 /dev/oracleasm/disks/ASMDISK9 CLOSED FORMER ONLINE NORMAL
0 2 0 0 /dev/oracleasm/disks/ASMDISK8 CLOSED FORMER ONLINE NORMAL
1 0 ARCH_0000 ARCH_0000 4016 1635 /dev/oracleasm/disks/ASMDISK14 CACHED MEMBER ONLINE NORMAL
2 0 DATA1_0000 DATA1_0000 2447 741 /dev/oracleasm/disks/ASMDISK10 CACHED MEMBER ONLINE NORMAL
2 1 DATA1_0001 DATA1_0001 2447 740 /dev/oracleasm/disks/ASMDISK11 CACHED MEMBER ONLINE NORMAL
2 2 DATA1_0002 DATA1_0002 2447 743 /dev/oracleasm/disks/ASMDISK12 CACHED MEMBER ONLINE NORMAL
2 3 DATA1_0003 DATA1_0003 2447 740 /dev/oracleasm/disks/ASMDISK7 CACHED MEMBER ONLINE NORMAL
3 0 DATA2_0000 DATA2_0000 2447 2335 /dev/oracleasm/disks/ASMDISK4 CACHED MEMBER ONLINE NORMAL
3 1 DATA2_0001 DATA2_0001 2447 2336 /dev/oracleasm/disks/ASMDISK5 CACHED MEMBER ONLINE NORMAL
3 2 DATA2_0002 DATA2_0002 2447 2334 /dev/oracleasm/disks/ASMDISK6 CACHED MEMBER ONLINE NORMAL
5 0 OCR_0000 OCR_0000 2447 2138 /dev/oracleasm/disks/ASMDISK1 CACHED MEMBER ONLINE NORMAL
5 1 OCR_0001 OCR_0001 2447 2139 /dev/oracleasm/disks/ASMDISK2 CACHED MEMBER ONLINE NORMAL
5 2 OCR_0002 OCR_0002 2447 2138 /dev/oracleasm/disks/ASMDISK3 CACHED MEMBER ONLINE NORMAL

14 rows selected.


添加!
alter diskgroup DATA2 add
FAILGROUP DATA2_0000 DISK '/dev/oracleasm/disks/ASMDISK8'
FAILGROUP DATA2_0001 DISK '/dev/oracleasm/disks/ASMDISK9'
FAILGROUP DATA2_0002 DISK '/dev/oracleasm/disks/ASMDISK13'
rebalance power 0;

SQL> select group_number,disk_number,name,failgroup,total_mb,free_mb,path,mount_status,header_status,mode_status,state from v$asm_disk order by 1,2,3;

GROUP_NUMBER DISK_NUMBER NAME FAILGROUP TOTAL_MB FREE_MB PATH MOUNT_STAT HEADER_STA MODE_STATU STATE
------------ ----------- ---------- ---------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ----------
1 0 ARCH_0000 ARCH_0000 4016 1635 /dev/oracleasm/disks/ASMDISK14 CACHED MEMBER ONLINE NORMAL
2 0 DATA1_0000 DATA1_0000 2447 741 /dev/oracleasm/disks/ASMDISK10 CACHED MEMBER ONLINE NORMAL
2 1 DATA1_0001 DATA1_0001 2447 740 /dev/oracleasm/disks/ASMDISK11 CACHED MEMBER ONLINE NORMAL
2 2 DATA1_0002 DATA1_0002 2447 743 /dev/oracleasm/disks/ASMDISK12 CACHED MEMBER ONLINE NORMAL
2 3 DATA1_0003 DATA1_0003 2447 740 /dev/oracleasm/disks/ASMDISK7 CACHED MEMBER ONLINE NORMAL
3 0 DATA2_0000 DATA2_0000 2447 2388 /dev/oracleasm/disks/ASMDISK4 CACHED MEMBER ONLINE NORMAL
3 1 DATA2_0001 DATA2_0001 2447 2386 /dev/oracleasm/disks/ASMDISK5 CACHED MEMBER ONLINE NORMAL
3 2 DATA2_0002 DATA2_0002 2447 2388 /dev/oracleasm/disks/ASMDISK6 CACHED MEMBER ONLINE NORMAL
3 3 DATA2_0003 DATA2_0000 2447 2393 /dev/oracleasm/disks/ASMDISK8 CACHED MEMBER ONLINE NORMAL
3 4 DATA2_0004 DATA2_0001 2447 2391 /dev/oracleasm/disks/ASMDISK9 CACHED MEMBER ONLINE NORMAL
3 5 DATA2_0005 DATA2_0002 2447 2394 /dev/oracleasm/disks/ASMDISK13 CACHED MEMBER ONLINE NORMAL
5 0 OCR_0000 OCR_0000 2447 2138 /dev/oracleasm/disks/ASMDISK1 CACHED MEMBER ONLINE NORMAL
5 1 OCR_0001 OCR_0001 2447 2139 /dev/oracleasm/disks/ASMDISK2 CACHED MEMBER ONLINE NORMAL
5 2 OCR_0002 OCR_0002 2447 2138 /dev/oracleasm/disks/ASMDISK3 CACHED MEMBER ONLINE NORMAL

14 rows selected.

 

對比一下normal冗余模式下三塊盤和六塊盤的異同:
相同點:都是存放兩份數據,打散在不同的failgroup里面
不同點:三塊盤的normal冗余模式,指定三個failgroup,只允許損壞一個failgroup,也就是只允許損壞一個磁盤(因為一個failgroup里面只含有一個磁盤)
六塊盤的normal冗余模式,同樣指定三個failgroup,只允許損壞一個failgroup,也就是只允許損壞(同一個failgroup里面的)兩塊盤.

SQL> select group_number,disk_number,failgroup from v$asm_disk where group_number=3 order by 1,3;
GROUP_NUMBER DISK_NUMBER FAILGROUP
------------ ----------- ------------------------------
3 3 DATA2_0000
3 0 DATA2_0000
3 1 DATA2_0001
3 4 DATA2_0001
3 2 DATA2_0002
3 5 DATA2_0002
6 rows selected.
GROUP_KFFXP DISK# EXTENT# TYPE
----------- ---------- ---------- ---------------------------
FAILGROUP1
3 0 2 Mirrored Copy
3 0 4 Primary Copy
3 0 9 Mirrored Copy
3 0 10 Primary Copy
3 3 1 Primary Copy
3 3 3 Mirrored Copy
3 3 6 Mirrored Copy
3 3 8 Primary Copy
3 3 14 Primary Copy
FAILGROUP2
3 1 0 Primary Copy
3 1 3 Primary Copy
3 1 4 Mirrored Copy
3 1 5 Mirrored Copy
3 1 9 Primary Copy
3 1 14 Mirrored Copy
3 4 1 Mirrored Copy
3 4 2 Primary Copy
3 4 7 Primary Copy
3 4 10 Mirrored Copy
3 4 11 Mirrored Copy
3 4 12 Mirrored Copy
3 4 13 Primary Copy
FAILGROUP3
3 2 5 Primary Copy
3 2 7 Mirrored Copy
3 2 11 Primary Copy
3 2 13 Mirrored Copy
3 5 0 Mirrored Copy
3 5 6 Primary Copy
3 5 8 Mirrored Copy
3 5 12 Primary Copy
30 rows selected.

  


第四階段:測試實驗DATA2 HIGH情況下,6塊磁盤,觀察failgroup情況;

drop tablespace GAO1 including contents and datafiles;
SQL> alter diskgroup data2 dismount;
alter diskgroup data2 mount;
drop diskgroup data2;

col path for a30
col name for a15
col failgroup for a14
col mount_status for a10
col header_status for a10
col mode_status for a10
col state for a10
set linesize 200
set pagesize 200
select group_number,disk_number,name,failgroup,total_mb,free_mb,path,mount_status,header_status,mode_status,state from v$asm_disk order by 1,2,3;
GROUP_NUMBER DISK_NUMBER NAME         FAILGROUP      TOTAL_MB    FREE_MB PATH                 MOUNT_STAT HEADER_STA MODE_STATU STATE
------------ ----------- --------------- -------------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ----------
       0           0                     0        0 /dev/oracleasm/disks/ASMDISK13 CLOSED    FORMER       ONLINE     NORMAL
       0           1                     0        0 /dev/oracleasm/disks/ASMDISK9  CLOSED    FORMER       ONLINE     NORMAL
       0           2                     0        0 /dev/oracleasm/disks/ASMDISK8  CLOSED    FORMER       ONLINE     NORMAL
       0           3                     0        0 /dev/oracleasm/disks/ASMDISK6  CLOSED    FORMER       ONLINE     NORMAL
       0           4                     0        0 /dev/oracleasm/disks/ASMDISK5  CLOSED    FORMER       ONLINE     NORMAL
       0           5                     0        0 /dev/oracleasm/disks/ASMDISK4  CLOSED    FORMER       ONLINE     NORMAL
       1           0 ARCH_0000     ARCH_0000          4016     1635 /dev/oracleasm/disks/ASMDISK14 CACHED    MEMBER       ONLINE     NORMAL
       2           0 DATA1_0000     DATA1_0000          2447      741 /dev/oracleasm/disks/ASMDISK10 CACHED    MEMBER       ONLINE     NORMAL
       2           1 DATA1_0001     DATA1_0001          2447      740 /dev/oracleasm/disks/ASMDISK11 CACHED    MEMBER       ONLINE     NORMAL
       2           2 DATA1_0002     DATA1_0002          2447      743 /dev/oracleasm/disks/ASMDISK12 CACHED    MEMBER       ONLINE     NORMAL
       2           3 DATA1_0003     DATA1_0003          2447      740 /dev/oracleasm/disks/ASMDISK7  CACHED    MEMBER       ONLINE     NORMAL
       5           0 OCR_0000     OCR_0000          2447     2138 /dev/oracleasm/disks/ASMDISK1  CACHED    MEMBER       ONLINE     NORMAL
       5           1 OCR_0001     OCR_0001          2447     2139 /dev/oracleasm/disks/ASMDISK2  CACHED    MEMBER       ONLINE     NORMAL
       5           2 OCR_0002     OCR_0002          2447     2138 /dev/oracleasm/disks/ASMDISK3  CACHED    MEMBER       ONLINE     NORMAL

14 rows selected.


--alter diskgroup data1 rebalance power 6;
select * from v$asm_operation;


create diskgroup DATA2 high redundancy
FAILGROUP fgroup1 disk '/dev/oracleasm/disks/ASMDISK13','/dev/oracleasm/disks/ASMDISK9'
FAILGROUP fgroup2 disk '/dev/oracleasm/disks/ASMDISK8','/dev/oracleasm/disks/ASMDISK6'
FAILGROUP fgroup3 disk '/dev/oracleasm/disks/ASMDISK5','/dev/oracleasm/disks/ASMDISK4'
;


GROUP_NUMBER DISK_NUMBER NAME         FAILGROUP      TOTAL_MB    FREE_MB PATH                 MOUNT_STAT HEADER_STA MODE_STATU STATE
------------ ----------- --------------- -------------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ----------
       1           0 ARCH_0000     ARCH_0000          4016     1635 /dev/oracleasm/disks/ASMDISK14 CACHED    MEMBER       ONLINE     NORMAL
       2           0 DATA1_0000     DATA1_0000          2447      741 /dev/oracleasm/disks/ASMDISK10 CACHED    MEMBER       ONLINE     NORMAL
       2           1 DATA1_0001     DATA1_0001          2447      740 /dev/oracleasm/disks/ASMDISK11 CACHED    MEMBER       ONLINE     NORMAL
       2           2 DATA1_0002     DATA1_0002          2447      743 /dev/oracleasm/disks/ASMDISK12 CACHED    MEMBER       ONLINE     NORMAL
       2           3 DATA1_0003     DATA1_0003          2447      740 /dev/oracleasm/disks/ASMDISK7  CACHED    MEMBER       ONLINE     NORMAL
       3           0 DATA2_0000     FGROUP1          2447     2420 /dev/oracleasm/disks/ASMDISK13 CACHED    MEMBER       ONLINE     NORMAL
       3           1 DATA2_0001     FGROUP1          2447     2421 /dev/oracleasm/disks/ASMDISK9  CACHED    MEMBER       ONLINE     NORMAL
       3           2 DATA2_0002     FGROUP2          2447     2420 /dev/oracleasm/disks/ASMDISK8  CACHED    MEMBER       ONLINE     NORMAL
       3           3 DATA2_0003     FGROUP2          2447     2421 /dev/oracleasm/disks/ASMDISK6  CACHED    MEMBER       ONLINE     NORMAL
       3           4 DATA2_0004     FGROUP3          2447     2420 /dev/oracleasm/disks/ASMDISK5  CACHED    MEMBER       ONLINE     NORMAL
       3           5 DATA2_0005     FGROUP3          2447     2421 /dev/oracleasm/disks/ASMDISK4  CACHED    MEMBER       ONLINE     NORMAL
       5           0 OCR_0000     OCR_0000          2447     2138 /dev/oracleasm/disks/ASMDISK1  CACHED    MEMBER       ONLINE     NORMAL
       5           1 OCR_0001     OCR_0001          2447     2139 /dev/oracleasm/disks/ASMDISK2  CACHED    MEMBER       ONLINE     NORMAL
       5           2 OCR_0002     OCR_0002          2447     2138 /dev/oracleasm/disks/ASMDISK3  CACHED    MEMBER       ONLINE     NORMAL

14 rows selected.

select group_number,name,type,COMPATIBILITY from v$asm_diskgroup

GROUP_NUMBER NAME         TYPE        COMPATIBILITY
------------ --------------- ------------------ --------------------
       1 ARCH         EXTERN        11.2.0.0.0
       2 DATA1         EXTERN        11.2.0.0.0
       3 DATA2         HIGH        10.1.0.0.0
       5 OCR         NORMAL        11.2.0.0.0
       
       
high冗余三份數據:
failgroup為單位,只允許壞掉兩個failgroup里面的數據,是不會造成數據丟失的。

       
       
       
       
       

從oracle 11g版本開始,asm磁盤組會有兩個新屬性來兼容asm版本和數據庫版本
http://blog.itpub.net/31397003/viewspace-2132859/
COMPATIBLE.ASM - The minimum version of the ASM software that can access the disk group. In 11g, the default setting is 10.1.
COMPATIBLE.RDBMS - The minimum COMPATIBLE database initialization parameter setting for any database instance that uses the disk group. In 11g, the default setting is 10.1.
       
SELECT group_number, name, value FROM v$asm_attribute
 where NAME like 'compatible%' ORDER BY group_number, name;
 GROUP_NUMBER NAME                      VALUE
------------ ---------------------------------------- ------------------------------
       1 compatible.asm                  11.2.0.0.0
       1 compatible.rdbms              10.1.0.0.0
       2 compatible.asm                  11.2.0.0.0
       2 compatible.rdbms              10.1.0.0.0
       5 compatible.asm                  11.2.0.0.0
       5 compatible.rdbms              10.1.0.0.0

6 rows selected.

SELECT group_number, name, compatibility, database_compatibility FROM v$asm_diskgroup;
GROUP_NUMBER NAME    COMPATIBILITY         DATABASE_COMPATIBILI
------------ ---------- -------------------- --------------------
       1 ARCH    11.2.0.0.0         10.1.0.0.0
       2 DATA1    11.2.0.0.0         10.1.0.0.0
       3 DATA2    10.1.0.0.0         10.1.0.0.0
       5 OCR    11.2.0.0.0         10.1.0.0.0

create tablespace GAO1 datafile '+DATA2' size 14m
SQL> select file_number,name from v$asm_alias where name like 'GAO%';
FILE_NUMBER NAME
----------- ----------------------------------------------------------------------
    256 GAO1.256.1057165987

   0 DATA2_0000     FGROUP1
   1 DATA2_0001     FGROUP1    
   2 DATA2_0002     FGROUP2    
   3 DATA2_0003     FGROUP2    
   4 DATA2_0004     FGROUP3    
   5 DATA2_0005     FGROUP3    
       
select GROUP_KFFXP,disk_kffxp disk#,
XNUM_KFFXP extent#,
case lxn_kffxp
  when 0 then 'Primary Copy'
  when 1 then 'Mirrored Copy'
  when 2 then '2nd Mirrored Copy or metadata'
  else 'Unknown' END TYPE
from x$kffxp
where 
number_kffxp=256
and GROUP_KFFXP=3
order by 1,2,3; 
GROUP_KFFXP     DISK#            EXTENT#             TYPE
----------- ---------- ---------- -----------------------------------
      3            0              0                 Mirrored Copy
      3            0              5                 Primary Copy
      3            0              8                 Mirrored Copy
      3            0              9                 2nd Mirrored Copy or metadata
      3            0             10                 Mirrored Copy
      3            0             11                 Primary Copy
      3            0             12                 Mirrored Copy
      3            1              1                 Primary Copy
      3            1              2                 Mirrored Copy
      3            1              3                 Mirrored Copy
      3            1              4                 2nd Mirrored Copy or metadata
      3            1              6                 2nd Mirrored Copy or metadata
      3            1              7                 Primary Copy
      3            1             13                 Primary Copy
      3            1             14                 Mirrored Copy
      
      
      
      
      3            2              3                 Primary Copy
      3            2              4                 Mirrored Copy
      3            2              5                 2nd Mirrored Copy or metadata
      3            2              7                 2nd Mirrored Copy or metadata
      3            2              8                 2nd Mirrored Copy or metadata
      3            2              9                 Primary Copy
      3            3              0                 Primary Copy
      3            3              1                 2nd Mirrored Copy or metadata
      3            3              2                 2nd Mirrored Copy or metadata
      3            3              6                 Primary Copy
      3            3             10                 2nd Mirrored Copy or metadata
      3            3             11                 Mirrored Copy
      3            3             12                 Primary Copy
      3            3             13                 2nd Mirrored Copy or metadata
      3            3             14                 2nd Mirrored Copy or metadata
      
      
      
      3            4              1                 Mirrored Copy
      3            4              4                 Primary Copy
      3            4              6                 Mirrored Copy
      3            4              9                 Mirrored Copy
      3            4             10                 Primary Copy
      3            4             11                 2nd Mirrored Copy or metadata
      3            4             13                 Mirrored Copy
      3            5              0                 2nd Mirrored Copy or metadata
      3            5              2                 Primary Copy
      3            5              3                 2nd Mirrored Copy or metadata
      3            5              5                 Mirrored Copy
      3            5              7                 Mirrored Copy
      3            5              8                 Primary Copy
      3            5             12                 2nd Mirrored Copy or metadata
      3            5             14                 Primary Copy

45 rows selected.

可以發現每個FAILGROUP組存有45/3=15條記錄!   整個數據文件占用15個AU即15個extents分配,被3份冗余! 因此high可以丟失2份所有Failgroup數據。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM