ASM的FAILGROUP
其實這是錯誤的,FAILGROUP是用於將磁碟分組,以保證丟失任何一組FAILGROUP磁碟,資料還是完整的
多用於多陣列,通過ASM來完成冗餘的環境。(EXTERNAL只能有一個FAILGROUP)
假設有4個陣列,每個陣列3塊盤,使用NORMAL REDUNDANCY建立DISKGROUP,4個FAILGROUP
CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY FAILGROUP controller1 DISK 'ORCL:ASM01', 'ORCL:ASM02', 'ORCL:ASM03' FAILGROUP controller2 DISK 'ORCL:ASM04', 'ORCL:ASM05', 'ORCL:ASM06' FAILGROUP controller3 DISK 'ORCL:ASM07', 'ORCL:ASM08', 'ORCL:ASM09' FAILGROUP controller4 DISK 'ORCL:ASM10', 'ORCL:ASM11', 'ORCL:ASM12'; |
然後在上面建立一個1G的資料檔案
CREATE TABLESPACE asmtest DATAFILE '+DGROUP1' SIZE 1024M |
然後看看資料的冗餘程度
SQL> SELECT COUNT(DISTINCT PXN_KFFXP),COUNT(DISTINCT XNUM_KFFXP) 2 FROM X$KFFXP 3 WHERE GROUP_KFFXP = 3 4 AND NUMBER_KFFXP =256 5 AND xnum_kffxp <> 2147483648;
COUNT(DISTINCTPXN_KFFXP) COUNT(DISTINCTXNUM_KFFXP) ------------------------ ------------------------- 2050 1025 --資料檔案為1024M,加上一個BLOCK0,一共1025M,2個冗餘
SQL> SELECT COUNT(DISTINCT PXN_KFFXP),COUNT(DISTINCT XNUM_KFFXP) 2 FROM X$KFFXP 3 WHERE GROUP_KFFXP = 3 4 AND NUMBER_KFFXP =256 5 AND xnum_kffxp = 2147483648;
COUNT(DISTINCTPXN_KFFXP) COUNT(DISTINCTXNUM_KFFXP) ------------------------ ------------------------- 3 1 --記錄塊分配的後設資料冗餘3份,其他後設資料也是冗餘3份 |
假設出現某個failgroup損壞
SQL> SELECT COUNT (DISTINCT xnum_kffxp) 2 FROM X$KFFXP a,v$asm_disk b 3 WHERE GROUP_KFFXP = 3 4 AND b.group_number=3 5 AND NUMBER_KFFXP =256 6 AND a.disk_kffxp = disk_number 7 AND b.failgroup <> 'CONTROLLER&i' 8 ; Enter value for i: 1 old 7: AND b.failgroup <> 'CONTROLLER&i' new 7: AND b.failgroup <> 'CONTROLLER1'
COUNT(DISTINCTXNUM_KFFXP) ------------------------- 1026
SQL> / Enter value for i: 2 old 7: AND b.failgroup <> 'CONTROLLER&i' new 7: AND b.failgroup <> 'CONTROLLER2'
COUNT(DISTINCTXNUM_KFFXP) ------------------------- 1026
SQL> / Enter value for i: 3 old 7: AND b.failgroup <> 'CONTROLLER&i' new 7: AND b.failgroup <> 'CONTROLLER3'
COUNT(DISTINCTXNUM_KFFXP) ------------------------- 1026
SQL> / Enter value for i: 4 old 7: AND b.failgroup <> 'CONTROLLER&i' new 7: AND b.failgroup <> 'CONTROLLER4'
COUNT(DISTINCTXNUM_KFFXP) ------------------------- 1026 |
其相關的1026個AU都是可訪問的
在看看後設資料,後設資料每個冗餘3份,任何一個FAILGROUP損壞,都能保證資料是完整的
SQL> SELECT NUMBER_KFFXP, XNUM_KFFXP, COUNT(*) 2 FROM X$KFFXP 3 WHERE GROUP_KFFXP = 3 4 AND NUMBER_KFFXP < 100 5 GROUP BY NUMBER_KFFXP, XNUM_KFFXP 6 ORDER BY 1, 2;
NUMBER_KFFXP XNUM_KFFXP COUNT(*) ------------ ---------- ---------- 1 0 3 1 1 3 2 0 3 3 0 3 3 1 3 3 2 3 3 3 3 3 4 3 3 5 3 3 6 3 3 7 3 3 8 3 3 9 3 3 10 3 3 11 3 3 12 3 3 13 3 3 14 3 3 15 3 3 16 3 3 17 3 3 18 3 3 19 3 3 20 3 3 21 3 3 22 3 3 23 3 3 24 3 3 25 3 3 26 3 3 27 3 3 28 3 3 29 3 3 30 3 3 31 3 3 32 3 3 33 3 3 34 3 3 35 3 3 36 3 3 37 3 3 38 3 3 39 3 3 40 3 3 41 3 3 2147483648 3 4 0 3 4 1 3 5 0 3 6 0 3
50 rows selected.
SQL> SELECT COUNT(*) 2 FROM (SELECT DISTINCT NUMBER_KFFXP, XNUM_KFFXP 3 FROM X$KFFXP A, V$ASM_DISK B 4 WHERE GROUP_KFFXP = 3 5 AND B.GROUP_NUMBER = 3 6 AND NUMBER_KFFXP < 100 7 AND A.DISK_KFFXP = DISK_NUMBER 8 AND B.FAILGROUP <> 'CONTROLLER&i') ; Enter value for i: 1 old 8: AND B.FAILGROUP <> 'CONTROLLER&i') new 8: AND B.FAILGROUP <> 'CONTROLLER1')
COUNT(*) ---------- 50
SQL> / Enter value for i: 2 old 8: AND B.FAILGROUP <> 'CONTROLLER&i') new 8: AND B.FAILGROUP <> 'CONTROLLER2')
COUNT(*) ---------- 50
SQL> / Enter value for i: 3 old 8: AND B.FAILGROUP <> 'CONTROLLER&i') new 8: AND B.FAILGROUP <> 'CONTROLLER3')
COUNT(*) ---------- 50
SQL> / Enter value for i: 4 old 8: AND B.FAILGROUP <> 'CONTROLLER&i') new 8: AND B.FAILGROUP <> 'CONTROLLER4')
COUNT(*) ---------- 50 |
注意,預設建立的DISKGROUP,每個磁碟就是一個單獨的FAILGROUP
如上面的例子,4個陣列,在沒有指定failgroup的情況下,只要一組陣列出現了當機,資料就可能無法訪問,如果指定了failgroup,一組陣列損壞後,資料仍然能保證完整
在來看看冗餘報告:
SQL> SELECT NAME, 2 TYPE, 3 TOTAL_MB, 4 FREE_MB, 5 REQUIRED_MIRROR_FREE_MB, 6 USABLE_FILE_MB 7 FROM V$ASM_DISKGROUP 8 WHERE GROUP_NUMBER = 3;
NAME TYPE TOTAL_MB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB ---------- ------------ ---------- ---------- ----------------------- -------------- DGROUP1 NORMAL 12228 12054 3057 4498 |
如果failgroup失敗,那麼需要3057M的空間來恢復,大概3塊盤
如果是不指定failgroup建立DISKGROUP了?
CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY DISK 'ORCL:ASM01', 'ORCL:ASM02', 'ORCL:ASM03', 'ORCL:ASM04', 'ORCL:ASM05', 'ORCL:ASM06', 'ORCL:ASM07', 'ORCL:ASM08', 'ORCL:ASM09', 'ORCL:ASM10', 'ORCL:ASM11', 'ORCL:ASM12'; |
SQL> /
NAME TYPE TOTAL_MB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB ---------- ------------ ---------- ---------- ----------------------- -------------- DGROUP1 NORMAL 12228 12057 1111 5473 |
如果不指定,只允許一個盤損壞,需要1111M來恢復,大概1塊盤
USABLE_FILE_MB 不代表能使用的磁碟限制,但當該列小於0時,不能正常DROP DISK,無法完成rebalance
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-671590/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASM AMDU工具的使用OracleASM
- 遇到ASM的兩個BUGASM
- 【ASM】Oracle asm刪除磁碟組注意事項ASMOracle
- 【ASM】ASM磁碟頭被重寫,如何修復ASM
- goldengate + asm + racGoASM
- gnu inline asminlineASM
- 【ASM】ASM啟動無法找到spfile問題原因ASM
- 從定位資料塊所在ASM磁碟到ASM strippingASM
- ASM叢集檔案系統ACFS(ASM Cluster File System)ASM
- ASM Metadata Dump UtilityASM
- ASM磁碟組限制ASM
- 4.5.1.1 srvctl add asmASM
- Android Transform + ASM 初探AndroidORMASM
- RAC+ASM+DATAGUARDASM
- ASM Fast Mirror ResyncASMAST
- ASM(Automatic Storage Management)ASM
- ASM單例項安裝後,需要手動設定ASM的引數檔案ASM單例
- ASM 磁碟組的建立及擴容ASM
- 【ASM】asm常用命令及主要功能介紹ASM
- Oracle ASM神書《撥雲見日 解密Oracle ASM核心》出版了OracleASM解密
- 【ASM】Oracle asm磁碟被格式化,如何掛載該磁碟組ASMOracle
- 關於ASM的一些理論ASM
- 使Ultraedit支援ASM語法高亮的方法ASM
- ORACLE ASM的SSD磁碟空間回收分析OracleASM
- 一次ASM新增新的磁碟組ASM
- ASM下遷移spfileASM
- 遷移ASM磁碟組ASM
- Java ASM學習(2)JavaASM
- Automatic Storage Management (ASM)(轉)ASM
- Multi-path handling for asmASM
- Oracle ASM擴容(NFS)OracleASMNFS
- ASM 翻譯系列第十三彈:ASM 高階知識 - Forcing the issueASM
- 【ASM】ASM資料檔案和OS檔案(FILESYSTEM)轉移方法總結ASM
- 【ASM】ORA-27504 ORA-27300 ORA-27303 while starting ASM (Doc ID 2281441.1)ASMWhile
- 設計模式 - ASM 中的訪問者模式設計模式ASM
- ASM磁碟組更換磁碟的操作方法ASM
- 【RMAN】RMAN備份至ASMASM
- 【RAC】asm_diskgroups 引數ASM
- Oracle ASM Cluster File Systems (ACOracleASM