首先,Oracle ASM file group 是一組文件,它們共享相同的屬性和特征。文件組最主要的好處是在相同的磁盤組里為不同的數(shù)據(jù)庫(kù)文件定義不同的可用性屬性,這一特性讓在多租戶架構(gòu)的pdb (可插拔數(shù)據(jù)庫(kù))尤為適用。
對(duì)于ASM 文件組的屬性集包括冗余度, 負(fù)載均衡優(yōu)先級(jí), 負(fù)載均衡權(quán)重設(shè)置, 客戶端兼容性, 條帶, 配額組, 以及訪問控制列表。
要使用ASM 文件組特性就必須要有柔性磁盤組的支持,讓我們來(lái)看一下柔性磁盤組,這是在12.2以后版本加入的一個(gè)新特性,傳統(tǒng)磁盤組創(chuàng)建時(shí)有高(high), 正常(normal),外部(external)三種冗余方式,12.2中加入了兩種新的冗余方式,柔性磁盤組(FLEX disk group)和擴(kuò)展磁盤組(EXTENDED disk group),擴(kuò)展磁盤組主要用于Extend RAC擴(kuò)展集群平臺(tái),功能是柔性磁盤組的超集,這里我們僅討論柔性磁盤組,以便更簡(jiǎn)明的說(shuō)明問題。
在一個(gè)用正常或高冗余方式創(chuàng)建的磁盤組,我們可以遷移到柔性冗余方式,通過ALTER DISKGROUP 的CONVERT REDUNDANCY TO FLEX 語(yǔ)句就可以遷移到柔性冗余方式。另外,外部冗余的磁盤組不可以轉(zhuǎn)換為柔性冗余方式。
我們可以直接創(chuàng)建柔性磁盤組,如下:
或者我們也可以把一個(gè)存在的磁盤組轉(zhuǎn)換為柔性冗余磁盤組,如下所示:
或者
Oracle 柔性磁盤組支持文件組和配額組,和以前的磁盤組比起來(lái),具有更好的存儲(chǔ)和數(shù)據(jù)庫(kù)級(jí)別的管理能力,數(shù)據(jù)庫(kù)級(jí)別和磁盤組級(jí)別比較而言,數(shù)據(jù)庫(kù)級(jí)別相當(dāng)于一個(gè)更細(xì)粒度的管理能力,此外,柔性磁盤組具有以下特點(diǎn):
1.文件的冗余在數(shù)據(jù)庫(kù)級(jí)別是柔性的,不像高冗余或正常冗余,通常文件數(shù)據(jù)是3份或2份。
2.文件組用來(lái)描述數(shù)據(jù)庫(kù)文件的冗余屬性。每個(gè)數(shù)據(jù)庫(kù)有自己的文件組,可以分別定義不同的柔性冗余屬性。文件組會(huì)關(guān)聯(lián)一個(gè)空間配額組,以簡(jiǎn)化空間大小額度管理。
3.一個(gè)柔性磁盤組要求至少3個(gè)失敗容錯(cuò)組(failure group) , 通常 Oracle 會(huì)為每一塊ASM 候選磁盤創(chuàng)建一個(gè)失敗容錯(cuò)組,以提供1個(gè)或2個(gè)磁盤失敗的容錯(cuò)。如果容忍2塊盤的失敗,則至少需要5個(gè)失敗容錯(cuò)組。
4.缺省的分配單元(AU)是 4M大小。
5.磁盤組的COMPATIBLE.ASM和COMPATIBLE.RDBMS 是 12.2 或更高。
在柔性磁盤組里,我們將為不同的數(shù)據(jù)庫(kù)定義靈活的冗余設(shè)置,這就借助于文件組技術(shù)。
文件組有以下一些重要特點(diǎn):
1.一個(gè)柔性磁盤組中至少包含一個(gè)缺省文件組。
2.一個(gè)柔性磁盤組中包含多個(gè)文件組,可以為每一個(gè)pdb分別創(chuàng)建一個(gè)文件組,以便更好的實(shí)現(xiàn)管理控制。
3.一個(gè)數(shù)據(jù)庫(kù)在一個(gè)柔性磁盤組里只允許一個(gè)文件組。
4.一個(gè)數(shù)據(jù)庫(kù)可存放在多個(gè)柔性磁盤組中,但它們的文件組名稱是相同的。
5.一個(gè)文件組只能屬于一個(gè)柔性或擴(kuò)展磁盤組。
6.一個(gè)文件組只能描述僅一個(gè)數(shù)據(jù)庫(kù),pdb, CDB, volume 和集群。
7.一個(gè)文件組僅屬于一個(gè)空間配額組。自動(dòng)創(chuàng)建的文件組會(huì)關(guān)聯(lián)到通用空間配額組(generic quota group)。
8.每當(dāng)我們創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),pdb,CDB的時(shí)候,如果有一個(gè)客戶 id 相同或名字相同的文件組存在,它將用來(lái)描述數(shù)據(jù)庫(kù),pdb,CDB的文件,否則,Oracle 將創(chuàng)建一個(gè)新的文件組。
9.當(dāng)我們執(zhí)行一個(gè)數(shù)據(jù)庫(kù)創(chuàng)建操作的時(shí)候,Oracle 會(huì)給我們自動(dòng)創(chuàng)建一個(gè)系統(tǒng)命名的文件組,當(dāng)我們刪除數(shù)據(jù)庫(kù)時(shí),該自動(dòng)創(chuàng)建的文件組會(huì)被自動(dòng)刪除,而我們手工創(chuàng)建的文件組,則需要我們手工刪除。
讓我們通過一個(gè)多租戶數(shù)據(jù)庫(kù)環(huán)境的演示,來(lái)更好的解釋相關(guān)概念:
在該演示圖中,文件組pdb1在磁盤組1 和 2 中,專門用來(lái)服務(wù)于 pdb1 插拔數(shù)據(jù)庫(kù),該文件組關(guān)聯(lián)QGRP1配額組,數(shù)據(jù)庫(kù) pdb2,pdb3 在兩個(gè)磁盤組中的文件組名分別是pdb2和 pdb3,它們關(guān)聯(lián)到QGRP2配額組。
我們?cè)倏匆粋€(gè)手工添加文件組的樣例,截圖如下:
就像我們前面提到的,對(duì)于手工添加的文件組,我們必須手工刪除它們。另外,文件組最主要的用途就是給數(shù)據(jù)庫(kù)或pdb,CDB,卷靈活的設(shè)置冗余屬性或特征參數(shù),比如:
文件組具有以下一些重要屬性:
1.COMPATIBLE.CLIENT
磁盤組的COMPATIBLE.RDBMS屬性必須小于或等于每個(gè)文件組的COMPATIBLE.CLIENT屬性,數(shù)據(jù)庫(kù)的兼容性(COMPATIBLE)初始化參數(shù),以及磁盤組的COMPATIBLE.ASM屬性。
2.POWER_LIMIT
大家熟知的負(fù)載均衡權(quán)重參數(shù),取值范圍在1至1024之間,取值越大,rebalance越優(yōu)先。
3.PRIORITY
負(fù)載均衡優(yōu)先級(jí)(rebalance priority), 可選的參數(shù)值包括HIGHEST, HIGH, MEDIUM, LOW, 或LOWEST,缺省值為MEDIUM,相對(duì)POWER_LIMIT參數(shù)而言,先比較優(yōu)先級(jí)屬性。
4.REDUNDANCY (冗余方式)
最核心的屬性,幫助我們?cè)O(shè)置文件冗余方式,缺省文件冗余設(shè)置來(lái)源于系統(tǒng)模板,可以有以下選項(xiàng):
HIGH (高)
對(duì)所有文件提供三路鏡像保護(hù)。
MIRROR (鏡像)
對(duì)所有文件提供兩路鏡像保護(hù)。
PARITY (奇偶性)
對(duì)于不要求日常更新的數(shù)據(jù)庫(kù)文件的一種冗余方式,減少了asm對(duì)數(shù)據(jù)庫(kù)文件冗余維護(hù)的開銷,特別適用于只寫一次的文件,諸如歸檔日志(archive logs)和備份(backup sets)類型的文件。
DOUBLE (雙奇偶性):DOUBLE 說(shuō)明 double parity 和可以容忍2個(gè)失敗。
UNPROTECTED (不保護(hù)):不提供對(duì)文件的鏡像。
5.STRIPING (條帶方式)
大多數(shù)文件類型是粗顆粒(COARSE)條帶,而控制文件通常是細(xì)顆粒(FINE)條帶,通常是128KB大小條帶化處理。
我們可以在一個(gè)文件組里為某種文件類型設(shè)置屬性,示例如下:
這些設(shè)置讓我們感覺非常像以前的asm文件模板,通過文件類型模板,我們可以在normal冗余的磁盤組里對(duì)特定文件提供不保護(hù)冗余的需求,以及大量類似的需求。未來(lái)將以多租戶架構(gòu)為標(biāo)準(zhǔn)架構(gòu),從20c開始,將強(qiáng)制使用多租戶架構(gòu),每個(gè)CDB 可配備3個(gè)pdb 而無(wú)需多租戶選項(xiàng) license, 通過文件組功能,我們可以在pdb 級(jí)別,而不是磁盤組級(jí)別,更加靈活的設(shè)置和管理。
借助于Oracle Database 20c 的文件組模板新特性,我們進(jìn)一步簡(jiǎn)化文件及文件組的管理,通過建立文件組模板,我們可以設(shè)置大量的屬性,新建的文件也可以直接通過模板繼承相關(guān)設(shè)置,從而簡(jiǎn)化我們的管理,如下所示:
注意,一個(gè)數(shù)據(jù)庫(kù)在一個(gè)柔性磁盤組里只允許一個(gè)文件組,不是指文件組模板。
或者更常見的用例,如下:
最后,我們看到文件組模板功能有點(diǎn)類似于文件模板,但是文件組模板更加靈活、強(qiáng)大、更適合多租戶數(shù)據(jù)庫(kù)環(huán)境里對(duì)pdb、CDB, volume的管理。有文件組模板,你能定制缺省文件組的屬性,當(dāng)創(chuàng)建數(shù)據(jù)庫(kù)(PDB)時(shí),能方便的繼承這些屬性,如果不使用文件組模板,當(dāng)你想改變自動(dòng)創(chuàng)建的文件組屬性時(shí),通過它所產(chǎn)生的文件將會(huì)觸發(fā)一個(gè)不必要的負(fù)載均衡動(dòng)作(rebalance),Oracle 20c 的文件組模板新特性給我們提供一個(gè)更好的選擇。
注:部分內(nèi)容引用于Oracle 官方文檔。