張洪進 翁平
(聯(lián)勤保障部隊第九〇七醫(yī)院信息科 福建省南平市353000)
Oracle RAC集群的定義是從Oracle 9i逐漸演變而來的。它是高可用性規(guī)劃方案之一,是oracle數(shù)據(jù)庫支持網(wǎng)絡(luò)計算環(huán)境的核心技術(shù)。從RAC的產(chǎn)生到11G版本,集群運行模式是傳統(tǒng)的標準集群模式。直到Oracle 12C,集群中引入了很多新特性,主要是Flex集群的新模式的誕生。在Flex集群中,增加很多新的功能:Flex Cluster、Flex ASM、Hub Node(中心節(jié)點)、Leaf Node(葉節(jié)點)等,下面我們就Flex集群模式新增特性和轉(zhuǎn)換操作進行探討。
Oracle Real Application Cluster(RAC實時應(yīng)用集群)用來在集群環(huán)境下實現(xiàn)多機共享數(shù)據(jù)庫,以保證應(yīng)用的高可用性(HA),隨著節(jié)點數(shù)越高,系統(tǒng)可靠性就越高;同時可以自動實現(xiàn)并行處理及負載均衡,在系統(tǒng)負載時,RAC可以自動在多個節(jié)點之間平衡負載,減輕單個實例的計算壓力,并能實現(xiàn)數(shù)據(jù)庫在故障時的容錯和無斷點恢復。Rac基本架構(gòu)圖如圖1所示。
圖1:Rac基本架構(gòu)圖
Asm:Automatic Storage Management,是Oracle主推的一種面向Oracle的數(shù)據(jù)文件存儲機制,ASM和數(shù)據(jù)庫管理系統(tǒng)非常相似,數(shù)據(jù)庫管理員不用花精力去管理磁盤的讀寫性能問題,也不需要知道具體的文件名稱。Asm具有自動調(diào)整讀寫負載、條帶化存儲、在線自動負載均衡、自動管理數(shù)據(jù)庫文件、數(shù)據(jù)冗余、支持各種Oracle數(shù)據(jù)文件等特點。ASM是由實例和數(shù)據(jù)文件組成,同數(shù)據(jù)庫一樣也可以通過sqlplus進行維護。Asm實例由SGA和后臺進程組成,Asm實例和數(shù)據(jù)庫實例的關(guān)系可以是一對一或一對多的關(guān)系,如果是一對多,最好為Asm安裝單獨的ASM_HOME。
數(shù)據(jù)庫實例使用Asm作為存儲管理時,數(shù)據(jù)庫實例在啟動時必須先從Asm實例獲得表空間中的區(qū)地圖(Extent Map),以后對磁盤組的操作記錄,Asm實例會把區(qū)地圖的調(diào)整信息發(fā)送給數(shù)據(jù)庫實例,并且由ASMB進程保持這兩個實例間維護信息的同步和交換。所以我們在啟動數(shù)據(jù)庫實例時必須先啟動Asm實例,然后兩個實例同步運行,反過來當要關(guān)閉Asm實例時必須先數(shù)據(jù)庫實例關(guān)閉。如圖2所示,顯示了ASM的體系結(jié)構(gòu)。
圖2:ASM的基本架構(gòu)
在進行oracle集群安裝時,Oracle 12c同時提供兩種集群類型配置:標準集群和Flex集群。傳統(tǒng)標準集群中,集群中的所有節(jié)點都必須連接到兩個網(wǎng)絡(luò)上:公共網(wǎng)絡(luò)和私有網(wǎng)絡(luò);公共網(wǎng)絡(luò)用于客戶端應(yīng)用程序的連接,私有網(wǎng)絡(luò)用于節(jié)點間的通信和維護SGA的數(shù)據(jù)一致性。而Flex集群引進了兩種新類型的節(jié)點——Hub節(jié)點(中心節(jié)點)和Leaf節(jié)點(葉節(jié)點)。Hub類型的節(jié)點和傳統(tǒng)標準節(jié)點類似,它們之間通過私網(wǎng)互連,必須連接共享存儲,Hub節(jié)點可以直接存取集群注冊表(OCR)和表決磁盤(VD),在Flex集群中最多可配置64個Hub節(jié)點,同時也可以配置很多Leaf節(jié)點。在Flex集群中,Leaf節(jié)點屬于輕節(jié)點,彼此互不相連,也不能像Hub節(jié)點一樣訪問共享存儲,每個Leaf節(jié)點不能脫離Hub節(jié)點而獨立存在,必須與Hub節(jié)點保持通信,并通過所連接的Hub節(jié)點連接到集群,應(yīng)用程序訪問數(shù)據(jù)庫也是通過Leaf節(jié)點。Flex集群架構(gòu)如圖3所示。
圖3:Flex集群架構(gòu)
12C之前的oracle版本,每個節(jié)點都必須獨立運行本節(jié)點的ASM實例,且集群中所有節(jié)點的ASM實例必須處于運行狀態(tài),當ASM磁盤組mount成功后,節(jié)點的數(shù)據(jù)庫實例才能運行。對于這種架構(gòu),會存在一定的單節(jié)點故障的風險,如果ASM實例未運行,那么數(shù)據(jù)庫實例不能啟動,這種架構(gòu)的數(shù)據(jù)庫實例和ASM實例必須是一對一綁定的關(guān)系。
12c開始,推出了Flex ASM,解除了這種限制,允許數(shù)據(jù)庫實例獨立于ASM實例存在,允許RAC節(jié)點訪問遠程節(jié)點的ASM實例,而自身無需運行ASM實例。一般在Flex集群,中心節(jié)點運行ASM實例,葉節(jié)點遠程訪問中心節(jié)點的ASM實例。當中心節(jié)點的Asm實例故障時,Oracle Clusterware可以通過一個替代ASM實例將故障節(jié)點的連接將無縫轉(zhuǎn)移到另一個成員節(jié)點,中心節(jié)點數(shù)據(jù)庫實例可以通過訪問其他節(jié)點上的ASM實例,保證系統(tǒng)的正常運行。由于存在當節(jié)點ASM實例故障,集群將當前ASM實例切換到其他節(jié)點上運行的情況,因此,網(wǎng)絡(luò)類型由原來的公共網(wǎng)絡(luò)(public network)和私有網(wǎng)絡(luò)(private network)兩種,又新增了一種ASM網(wǎng)絡(luò),ASM網(wǎng)絡(luò)主要用于訪問其他節(jié)點的ASM實例,ASM網(wǎng)絡(luò)可與節(jié)點間的私有網(wǎng)絡(luò)共用,也可獨立安裝。
Flex Asm架構(gòu)如圖4所示。
圖4:Flex Asm架構(gòu)
如圖5所示,中心A節(jié)點通過訪問B節(jié)點的ASM實例,獲取metadata,然后通過獲取的metadata就能訪問到存儲了。訪問其他節(jié)點的ASM實例可以通過部署專用的ASM網(wǎng)絡(luò)或者使用節(jié)點內(nèi)部的私有網(wǎng)絡(luò),oracle官方是更推薦使用專用的ASM網(wǎng)絡(luò),提高系統(tǒng)的穩(wěn)定性和吞吐量。
圖5:ASM故障轉(zhuǎn)移
除了上述的新特性外,12c還提供了很多功能的增加,例如:PL/SQL開發(fā)性能增強、改善Defaults、擴大了多種數(shù)據(jù)類型長度、TOP N的語句實現(xiàn)(在SELECT語句中可以指定前N條或前百分之多少的記錄)、行模式匹配(分析函數(shù)的功能,可以在行間進行匹配判斷并進行計算)、對多分區(qū)同時進行維護操作、Adaptive執(zhí)行計劃(擁有學習功能的執(zhí)行計劃)、臨時UNDO(減少UNDO產(chǎn)生的數(shù)量;減少REDO產(chǎn)生的數(shù)量;在ACTIVE DATA GUARD上允許對臨時表進行DML操作。)、數(shù)據(jù)優(yōu)化(可以自動實現(xiàn)數(shù)據(jù)的在線壓縮和數(shù)據(jù)分級)、應(yīng)用連續(xù)性(12c之前版本當RAC的故障轉(zhuǎn)移只做到SESSION和SELECT層面,對還未結(jié)束的DML事務(wù)會自動回滾,而Oracle Database 12c中Oracle終于支持整個事務(wù)故障轉(zhuǎn)移)、實現(xiàn)云數(shù)據(jù)庫的支持,提供云平臺管理,這是之前版本所沒有的功能、提出了數(shù)據(jù)庫容器(CDB)和可插拔數(shù)據(jù)庫(PDB)的概念,實現(xiàn)實例與數(shù)據(jù)庫是一對多的關(guān)系,功能更加齊全。
有兩種方法部署Flex集群:
(1)配置一個全新Flex集群。安裝過程中步驟三選擇集群配置的類型時,選擇配置一個Flex Cluster選項,然后,你必須在步驟六將節(jié)點分為Hub節(jié)點和Leaf節(jié)點,針對每個節(jié)點,選擇角色:Hub或Leaf。
(2)從一個標準集群更改為Flex集群,具體步驟如下:
①確認當前集群的集群模式
$ crsctl get cluster mode status
②確認集群的GNS配置
$ srvctlconfiggns
③如果GNS沒有配置Flexed-VIP,則需要在root用戶底下創(chuàng)建一個,注意要與集群公網(wǎng)在同一網(wǎng)段
# srvctl add gns -vipvip_name | ip_address
④啟動GNS
# srvctl start gns
⑤使用Automatic Storage Management Configuration Assistant(ASMCA)將ASM存儲轉(zhuǎn)換為Flex Asm
⑥在root用戶模式下,配置當前集群模式為Flex
# crsctl set cluster mode Flex
⑦在root用戶模式下,在其中一個節(jié)點執(zhí)行停止crs的命令
# crsctl stop crs
⑧在root用戶模式下,在其中一個節(jié)點執(zhí)行啟動crs的命令,即重啟集群
# crsctl start crs -wait
綜合上文所述,Oracle 12C RAC相比之前的版本增加了很多強大的功能,通過對標準集群模式和Flex集群模式對比科學研究,讓我們可以更好的根據(jù)自己的需求選擇進行系統(tǒng)的規(guī)劃和升級。