中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

如何做網(wǎng)站 優(yōu)幫云班級(jí)優(yōu)化大師官網(wǎng)下載

如何做網(wǎng)站 優(yōu)幫云,班級(jí)優(yōu)化大師官網(wǎng)下載,網(wǎng)站建設(shè)免責(zé)聲明,廊坊網(wǎng)站建設(shè)公司墨子RAC 工作原理和相關(guān)組件 OracleRAC 是多個(gè)單實(shí)例在配置意義上的擴(kuò)展,實(shí)現(xiàn)由兩個(gè)或者多個(gè)節(jié)點(diǎn)(實(shí)例)使用一個(gè)共同的共享數(shù)據(jù)庫(例如,一個(gè)數(shù)據(jù)庫同時(shí)安裝多個(gè)實(shí)例并打開)。在這種情況下,每一個(gè)單獨(dú)…

RAC 工作原理和相關(guān)組件

????? OracleRAC 是多個(gè)單實(shí)例在配置意義上的擴(kuò)展,實(shí)現(xiàn)由兩個(gè)或者多個(gè)節(jié)點(diǎn)(實(shí)例)使用一個(gè)共同的共享數(shù)據(jù)庫(例如,一個(gè)數(shù)據(jù)庫同時(shí)安裝多個(gè)實(shí)例并打開)。在這種情況下,每一個(gè)單獨(dú)的實(shí)例有它自己的 cpu 和物理內(nèi)存,也有自己的 SGA 和后臺(tái)進(jìn)程。和傳統(tǒng)的 oracle 實(shí)例相比,在系統(tǒng)全局區(qū)(SYSTEM CLOBAL AREA,SGA)與后臺(tái)進(jìn)程有著顯著的不同。最大的不同之處在于多了一個(gè)GRD,GRD內(nèi)存塊主要是記錄此rac有多少個(gè)集群數(shù)據(jù)庫與系統(tǒng)資源,同時(shí)也會(huì)記錄數(shù)據(jù)塊的相關(guān)信息,因?yàn)樵?rac 架構(gòu)中,每個(gè)數(shù)據(jù)塊在每一個(gè) SGA 中都有一份副本,而 rac 必須知道這些數(shù)據(jù)塊的位置,版本,分布以及目前的狀態(tài),這些信息就存放在 GRD 中,但 GRD 只負(fù)責(zé)存放不負(fù)責(zé)管理,管理的責(zé)任則交給后臺(tái)進(jìn)程 GCS 和 GES 來進(jìn)行。Oracle 的多個(gè)實(shí)例訪問一個(gè)共同的共享數(shù)據(jù)庫。每個(gè)實(shí)例都有自己的 SGA、PGA 和后臺(tái)進(jìn)程,這些后臺(tái)進(jìn)程應(yīng)該是熟悉的,因?yàn)樵?RAC 配置中,每個(gè)實(shí)例將需要這些后臺(tái)進(jìn)程運(yùn)行支撐的??梢詮囊韵聨讉€(gè)方面了解 RAC工作原理和運(yùn)行機(jī)制。

(一) SCN

????? SCN 是 Oracle 用來跟蹤數(shù)據(jù)庫內(nèi)部變化發(fā)生先后順序的機(jī)制,可以把它想象成一個(gè)高精度的時(shí)鐘,每個(gè) Redo日志條目,Undo Data Block,Data Block 都會(huì)有 SCN 號(hào)。 Oracle 的Consistent-Read, Current-Read,Multiversion-Block 都是依賴 SCN 實(shí)現(xiàn)。在 RAC 中,有 GCS 負(fù)責(zé)全局維護(hù) SCN 的產(chǎn)生,缺省用的是 Lamport SCN 生成算法,該算法大致原理是: 在所有節(jié)點(diǎn)間的通信內(nèi)容中都攜帶 SCN, 每個(gè)節(jié)點(diǎn)把接收到的 SCN 和本機(jī)的 SCN 對(duì)比,如果本機(jī)的 SCN 小,則調(diào)整本機(jī)的 SCN 和接收的一致,如果節(jié)點(diǎn)間通信不多,還會(huì)主動(dòng)地定期相互通報(bào)。 故即使節(jié)點(diǎn)處于 Idle 狀態(tài),還是會(huì)有一些 Redo log 產(chǎn)生。 還有一個(gè)廣播算法(Broadcast),這個(gè)算法是在每個(gè) Commit 操作之后,節(jié)點(diǎn)要想其他節(jié)點(diǎn)廣播 SCN,雖然這種方式會(huì)對(duì)系統(tǒng)造成一定的負(fù)載,但是確保每個(gè)節(jié)點(diǎn)在 Commit 之后都能立即查看到 SCN.這兩種算法各有優(yōu)缺點(diǎn),Lamport 雖然負(fù)載小,但是節(jié)點(diǎn)間會(huì)有延遲,廣播雖然有負(fù)載,但是沒有延遲。Oracle 10g RAC 缺省選用的是 BroadCast 算法,可以從 alert.log 日志中看到相關(guān)信息:Picked broadcast on commit scheme to generate SCNS

(二) RAC 的 GES/GCS 原理

?????? 全局隊(duì)列服務(wù)(GES)主要負(fù)責(zé)維護(hù)字典緩存和庫緩存的一致性。字典緩存是實(shí)例的 SGA 內(nèi)所存儲(chǔ)的對(duì)數(shù)據(jù)字典信息的緩存,用于高速訪問。由于該字典信息存儲(chǔ)在內(nèi)存中,因而在某個(gè)節(jié)點(diǎn)上對(duì)字典進(jìn)行的修改(如DDL)必須立即被傳播至所有節(jié)點(diǎn)上的字典緩存。GES 負(fù)責(zé)處理上述情況,并消除實(shí)例間出現(xiàn)的差異。處于同樣的原因,為了分析影響這些對(duì)象的 SQL 語句,數(shù)據(jù)庫內(nèi)對(duì)象上的庫緩存鎖會(huì)被去掉。這些鎖必須在實(shí)例間進(jìn)行維護(hù),而全局隊(duì)列服務(wù)必須確保請(qǐng)求訪問相同對(duì)象的多個(gè)實(shí)例間不會(huì)出現(xiàn)死鎖。LMON、LCK 和 LMD 進(jìn)程聯(lián)合工作來實(shí)現(xiàn)全局隊(duì)列服務(wù)的功能。GES 是除了數(shù)據(jù)塊本身的維護(hù)和管理(由 GCS 完成)之外,在 RAC 環(huán)境中調(diào)節(jié)節(jié)點(diǎn)間其他資源的重要服務(wù)。為了保證集群中的實(shí)例的同步,兩個(gè)虛擬服務(wù)將被實(shí)現(xiàn):全局排隊(duì)服務(wù)(GES),它負(fù)責(zé)控制對(duì)鎖的訪問。

?????? 全局內(nèi)存服務(wù)(GCS),控制對(duì)數(shù)據(jù)塊的訪問。GES 是 分布式鎖管理器(DLM)的擴(kuò)展,它是這樣一個(gè)機(jī)制,可以用來管理 oracle 并行服務(wù)器的鎖和數(shù)據(jù)塊。在一個(gè)群集環(huán)境中,你需要限制對(duì)數(shù)據(jù)庫資源的訪問,這些資源在單 instance 數(shù)據(jù)庫中被 latches 或者 locks 來保護(hù)。比如說,在數(shù)據(jù)庫字典內(nèi)存中的對(duì)象都被隱性鎖所保護(hù),而在庫高速緩存中的對(duì)象在被引用的時(shí)候,必須被 pin 所保護(hù)。在 RAC 群集中,這些對(duì)象代表了被全局鎖所保護(hù)的資源。GES 是一個(gè)完整的 RAC 組件,它負(fù)責(zé)和群集中的實(shí)例全局鎖進(jìn)行溝通,每個(gè)資源有一個(gè)主節(jié)點(diǎn)實(shí)例,這個(gè)實(shí)例記錄了它當(dāng)前的狀態(tài)。而且,資源的當(dāng)前的狀態(tài)也記錄在所有對(duì)這個(gè)資源有興趣的實(shí)例上。GCS,是另一個(gè) RAC 組件,負(fù)責(zé)協(xié)調(diào)不同實(shí)例間對(duì)數(shù)據(jù)塊的訪問。對(duì)這些數(shù)據(jù)塊的訪問以及跟新都記錄在全局目錄中(GRD),這個(gè)全局目錄是一個(gè)虛擬的內(nèi)存結(jié)構(gòu),在所有的實(shí)例中使用擴(kuò)張。每個(gè)塊都有一個(gè)master實(shí)例,這個(gè)實(shí)例負(fù)責(zé)對(duì)GSD的訪問進(jìn)行管理,GSD里記錄了這個(gè)塊的當(dāng)前狀態(tài)信息。GCS 是 oracle 用來實(shí)施 Cache fusion 的機(jī)制。被 GCS 和 GES 管理的塊和鎖叫做資源。對(duì)這些資源的訪問必須在群集的多個(gè)實(shí)例中進(jìn)行協(xié)調(diào)。這個(gè)協(xié)調(diào)在實(shí)例層面和數(shù)據(jù)庫層面都有發(fā)生。實(shí)例層次的資源協(xié)調(diào)叫做本地資源協(xié)調(diào);數(shù)據(jù)庫層次的協(xié)調(diào)叫做全局資源協(xié)調(diào)。

????? 本地資源協(xié)調(diào)的機(jī)制和單實(shí)例 oracle 的資源協(xié)調(diào)機(jī)制類似,包含有塊級(jí)別的訪問,空間管理,dictionary cache、library cache 管理,行級(jí)鎖,SCN 發(fā)生。全局資源協(xié)調(diào)是針對(duì) RAC 的,使用了 SGA 中額外的內(nèi)存組件、算法和后臺(tái)進(jìn)程。GCS 和 GES 從設(shè)計(jì)上就是在對(duì)應(yīng)用透明的情況下設(shè)計(jì)的。換一句話來說,你不需要因?yàn)閿?shù)據(jù)庫是在 RAC上運(yùn)行而修改應(yīng)用,在單實(shí)例的數(shù)據(jù)庫上的并行機(jī)制在 RAC 上也是可靠地。

支持 GCS 和 GES 的后臺(tái)進(jìn)程使用私網(wǎng)心跳來做實(shí)例之間的通訊。這個(gè)網(wǎng)絡(luò)也被 Oracle 的 群集組件使用,也有可能被 群集文件系統(tǒng)(比如 OCFS)所使用。GCS 和 GES 獨(dú)立于 Oracle 群集組件而運(yùn)行。但是,GCS 和GES 依靠 這些群集組件獲得群集中每個(gè)實(shí)例的狀態(tài)。如果這些信息不能從某個(gè)實(shí)例獲得,這個(gè)實(shí)例將被關(guān)閉。這個(gè)關(guān)閉操作的目的是保護(hù)數(shù)據(jù)庫的完整性,因?yàn)槊總€(gè)實(shí)例需要知道其他實(shí)例的情況,這樣可以更好的確定對(duì)數(shù)據(jù)庫的協(xié)調(diào)訪問。GES 控制數(shù)據(jù)庫中所有的 library cache 鎖和 dictionary cache 鎖。這些資源在單實(shí)例數(shù)據(jù)庫中是本地性的,但是到了 RAC 群集中變成了全局資源。全局鎖也被用來保護(hù)數(shù)據(jù)的結(jié)構(gòu),進(jìn)行事務(wù)的管理。一般說來,事務(wù)和表鎖 在 RAC 環(huán)境或是 單實(shí)例環(huán)境中是一致的。

?????? Oracle 的各個(gè)層次使用相同的 GES 功能來獲得,轉(zhuǎn)化以及釋放資源。在數(shù)據(jù)庫啟動(dòng)的時(shí)候,全局隊(duì)列的個(gè)數(shù)將被自動(dòng)計(jì)算。GES 使用后臺(tái)進(jìn)程 LMD0 和 LCK0 來執(zhí)行它的絕大多數(shù)活動(dòng)。一般來說,各種進(jìn)程和本地的 LMD0 后臺(tái)進(jìn)程溝通來管理全局資源。本地的 LMD0 后臺(tái)進(jìn)程與 別的實(shí)例上的 LMD0 進(jìn)程進(jìn)行溝通。

????? LCK0 后臺(tái)進(jìn)程用來獲得整個(gè)實(shí)例需要的鎖。比如,LCK0 進(jìn)程負(fù)責(zé)維護(hù) dictionary cache 鎖。影子進(jìn)程(服務(wù)進(jìn)程) 與這些后臺(tái)進(jìn)程通過 AST(異步陷阱)消息來通信。異步消息被用來避免后臺(tái)進(jìn)程的阻塞,這些后臺(tái)進(jìn)程在等待遠(yuǎn)端實(shí)例的的回復(fù)的時(shí)候?qū)⒆枞?。后臺(tái)進(jìn)程也能 發(fā)送 BAST(異步鎖陷阱)來鎖定進(jìn)程,這樣可以要求這些進(jìn)程把當(dāng)前的持有鎖置為較低級(jí)限制的模式。資源是內(nèi)存結(jié)構(gòu),這些結(jié)構(gòu)代表了數(shù)據(jù)庫中的組件,對(duì)這些組件的訪問必須為限制模式或者串行化模式。換一句話說,這個(gè)資源只能被一個(gè)進(jìn)程或者一直實(shí)例并行訪問。如果這個(gè)資源當(dāng)前是處于使用狀態(tài),其他想訪問這個(gè)資源的進(jìn)程必須在隊(duì)列中等待,直到資源變得可用。隊(duì)列是內(nèi)存結(jié)構(gòu),它負(fù)責(zé)并行化對(duì)特殊資源的訪問。如果這些資源只被本地實(shí)例需求,那么這個(gè)隊(duì)列可以本地來獲得,而且不需要協(xié)同。但是如果這個(gè)資源被遠(yuǎn)程實(shí)例所請(qǐng)求,那么本地隊(duì)列必須變成全球化。

回到頂部

ClusterWare 架構(gòu)

????? 在單機(jī)環(huán)境下,Oracle 是運(yùn)行在 OS Kernel 之上的。 OS Kernel 負(fù)責(zé)管理硬件設(shè)備,并提供硬件訪問接口。Oracle 不會(huì)直接操作硬件,而是有 OS Kernel 代替它來完成對(duì)硬件的調(diào)用請(qǐng)求。在集群環(huán)境下, 存儲(chǔ)設(shè)備是共享的。OS Kernel 的設(shè)計(jì)都是針對(duì)單機(jī)的,只能控制單機(jī)上多個(gè)進(jìn)程間的訪問。 如果還依賴 OS Kernel 的服務(wù),就無法保證多個(gè)主機(jī)間的協(xié)調(diào)工作。 這時(shí)就需要引入額外的控制機(jī)制,在RAC 中,這個(gè)機(jī)制就是位于 Oracle 和 OS Kernel 之間的 Clusterware,它會(huì)在 OS Kernel 之前截獲請(qǐng)求,然后和其他結(jié)點(diǎn)上的 Clusterware 協(xié)商,最終完成上層的請(qǐng)求。在 Oracle 10G 之前,RAC 所需要的集群件依賴與硬件廠商,比如 SUN,HP,Veritas. 從 Oracle 10.1版本中,Oracle推出了自己的集群產(chǎn)品. Cluster Ready Service(CRS),從此 RAC 不在依賴與任何廠商的集群軟件。 在 Oracle 10.2版本中,這個(gè)產(chǎn)品改名為:Oracle Clusterware。所以我們可以看出, 在整個(gè) RAC 集群中,實(shí)際上有 2 個(gè)集群環(huán)境的存在,一個(gè)是由 Clusterware 軟件組成的集群,另一個(gè)是由 Database 組成的集群。

(一) Clusterware 的主要進(jìn)程

a) CRSD——負(fù)責(zé)集群的高可用操作,管理的 crs 資源包括數(shù)據(jù)庫、實(shí)例、監(jiān)聽、虛擬 IP,ons,gds 或者其他,操作包括啟動(dòng)、關(guān)閉、監(jiān)控及故障切換。改進(jìn)程由 root 用戶管理和啟動(dòng)。crsd 如果有故障會(huì)導(dǎo)致系統(tǒng)重啟。

b) cssd,管理各節(jié)點(diǎn)的關(guān)系,用于節(jié)點(diǎn)間通信,節(jié)點(diǎn)在加入或離開集群時(shí)通知集群。該進(jìn)程由 oracle 用戶運(yùn)行管理。發(fā)生故障時(shí) cssd 也會(huì)自動(dòng)重啟系統(tǒng)。

c) oprocd – 集群進(jìn)程管理 —Process monitor for the cluster. 用于保護(hù)共享數(shù)據(jù) IO fencing。

d) 僅在沒有使用 vendor 的集群軟件狀態(tài)下運(yùn)行

e) evmd :事件檢測(cè)進(jìn)程,由 oracle 用戶運(yùn)行管理

????? Cluster Ready Service(CRS,集群準(zhǔn)備服務(wù))是管理集群內(nèi)高可用操作的基本程序。Crs 管理的任何事物被稱之為資源,它們可以是一個(gè)數(shù)據(jù)庫、一個(gè)實(shí)例、一個(gè)監(jiān)聽、一個(gè)虛擬 IP(VIP)地址、一個(gè)應(yīng)用進(jìn)程等等。CRS是根據(jù)存儲(chǔ)于 OCR 中的資源配置信息來管理這些資源的。這包括啟動(dòng)、關(guān)閉、監(jiān)控及故障切換(start、stop、monitor 及 failover)操作。當(dāng)一資源的狀態(tài)改變時(shí),CRS 進(jìn)程生成一個(gè)事件。當(dāng)你安裝 RAC 時(shí),CRS 進(jìn)程監(jiān)控Oracle 的實(shí)例、監(jiān)聽等等,并在故障發(fā)生時(shí)自動(dòng)啟動(dòng)這些組件。默認(rèn)情況下,CRS 進(jìn)程會(huì)進(jìn)行 5 次重啟操作,如果資源仍然無法啟動(dòng)則不再嘗試。Event Management(EVM):發(fā)布 CRS 創(chuàng)建事件的后臺(tái)進(jìn)程。Oracle Notification Service(ONS):通信的快速應(yīng)用通知(FAN:Fast Application Notification)事件的發(fā)布及訂閱服務(wù)。RACG:為 clusterware 進(jìn)行功能擴(kuò)展以支持 Oracle 的特定需求及復(fù)雜資源。它在 FAN 事件發(fā)生時(shí)執(zhí)行服務(wù)器端的調(diào)用腳本(server callout script)Process Monitor Daemon(OPROCD):此進(jìn)程被鎖定在內(nèi)存中,用于監(jiān)控集群(cluster)及提供 I/O 防護(hù)(I/Ofencing)。OPROCD 執(zhí)行它的檢查,停止運(yùn)行,且如果喚醒超過它所希望的間隔時(shí),OPROCD 重置處理器及重啟節(jié)點(diǎn)。一個(gè) OPROCD 故障將導(dǎo)致 Clusterware 重啟節(jié)點(diǎn)。

????? Cluster Synchronization Service(CSS):CSS 集群同步服務(wù),管理集群配置,誰是成員、誰來、誰走,通知成員,是集群環(huán)境中進(jìn)程間通信的基礎(chǔ)。同樣,CSS 也可以用于在單實(shí)例環(huán)境中處理 ASM 實(shí)例與常規(guī) RDBMS 實(shí)例之間的交互作用。在集群環(huán)境中,CSS 還提供了組服務(wù),即關(guān)于在任意給定時(shí)間內(nèi)哪些節(jié)點(diǎn)和實(shí)例構(gòu)成集群的動(dòng)態(tài)信息,以及諸如節(jié)點(diǎn)的名稱和節(jié)點(diǎn)靜態(tài)信息(這些信息在節(jié)點(diǎn)被加入或者移除時(shí)被修改)。CSS 維護(hù)集群內(nèi)的基本鎖功能(盡管大多數(shù)鎖有 RDBMS 內(nèi)部的集成分布式鎖管理來維護(hù))。除了執(zhí)行其他作業(yè)外,CSS 還負(fù)責(zé)在集群內(nèi)節(jié)點(diǎn)間維持一個(gè)心跳的程序,并監(jiān)控投票磁盤的 split-brain 故障。在安裝 clusterware 的最后階段,會(huì)要求在每個(gè)節(jié)點(diǎn)執(zhí)行 root.sh 腳本,這個(gè)腳本會(huì)在/etc/inittab 文件的最后把這 3 個(gè)進(jìn)程加入啟動(dòng)項(xiàng),這樣以后每次系統(tǒng)啟動(dòng)時(shí),clusterware 也會(huì)自動(dòng)啟動(dòng),其中 EVMD 和 CRSD 兩個(gè)進(jìn)程如果出現(xiàn)異常,則系統(tǒng)會(huì)自動(dòng)重啟這兩個(gè)進(jìn)程,如果是 CSSD 進(jìn)程異常,系統(tǒng)會(huì)立即重啟。

注意:

1、Voting Disk 和 OCR 必須保存在存儲(chǔ)設(shè)備上供各個(gè)節(jié)點(diǎn)訪問。

2、Voting Disk、OCR 和網(wǎng)絡(luò)是安裝的過程中或者安裝前必須要指定或者配置的。安裝完成后可以通過一些工具進(jìn)行配置和修改。

回到頂部

RAC 軟件結(jié)構(gòu)

RAC 軟件結(jié)構(gòu)可以分為四部分。

  1. 操作系統(tǒng)相關(guān)的軟件
  2. RAC 共享磁盤部分
  3. RAC 中特別的后臺(tái)進(jìn)程和實(shí)例進(jìn)程
  4. 全局緩沖區(qū)服務(wù)和全局隊(duì)列服務(wù)

(一) Operation System-Dependent(OSD)

???? RAC 通過操作系統(tǒng)的相關(guān)軟件來訪問操作系統(tǒng)和一些與 Cluster 相關(guān)的服務(wù)進(jìn)程。OSD 軟件可能由 Oracle 提供(windows 平臺(tái))或由硬件廠商提供(unix 平臺(tái))。OSD 包括三個(gè)自部分:

  • l? The Cluster Manager(CM):集群監(jiān)視器監(jiān)視節(jié)點(diǎn)間通信,并通過 interconnect 來協(xié)調(diào)節(jié)點(diǎn)操作。同時(shí)還提供 CLUSTER 中所有節(jié)點(diǎn)和實(shí)例的統(tǒng)一視圖。CM 還控制 CLUSTER 的成員資格。
  • l? The Node Monitor(節(jié)點(diǎn)監(jiān)視器):節(jié)點(diǎn)監(jiān)視器提供節(jié)點(diǎn)內(nèi)各種資源的狀態(tài),包括節(jié)點(diǎn)、interconnect 硬件和軟件和共享磁盤等。
  • l? The Interconnect 節(jié)點(diǎn)間心跳(兩種心跳機(jī)制,一種是通過私有網(wǎng)絡(luò)的 network heartbeat;另一種是通過 voting disk 的 disk heartbeat)

(二) Real Application Cluster Shard Disk Component

?????? RAC 中這部分組件和單實(shí)例 Oracle 數(shù)據(jù)庫中的組件沒有什么區(qū)別。包括一個(gè)或者多個(gè)控制文件、一些列聯(lián)機(jī)重做日志文件、可選的歸檔日志文件、數(shù)據(jù)文件等。在 RAC 中使用服務(wù)器參數(shù)文件會(huì)簡(jiǎn)化參數(shù)文件的管理,可以將全局參數(shù)和實(shí)例特定的參數(shù)存儲(chǔ)在同一個(gè)文件中。

(三) Real Application Cluster-Specific Daemon and Instance Processes包括以下部分:

  1. The Global Service Daemon(GSD):在每個(gè)節(jié)點(diǎn)上都運(yùn)行一個(gè)全局服務(wù)后臺(tái)進(jìn)程,用于接收客戶端如DBCA、EM 等發(fā)出的管理消息,并完成相應(yīng)的管理任務(wù),比如實(shí)例的啟動(dòng)和關(guān)閉。
  2. RAC 中特別的實(shí)例進(jìn)程: Global Cache Service Processes(LMSn):控制到遠(yuǎn)端實(shí)例的消息的流量,管理全局?jǐn)?shù)據(jù)塊的訪問。還用于在不同實(shí)例的緩沖區(qū)之間傳遞 BLOCK 的映射。
  3. Global Enqueue Service Monitor(LMON):監(jiān)視全局隊(duì)列和集群間的資源交互,執(zhí)行全局隊(duì)列的恢復(fù)操作。
  4. Global Enqueue Service Daemon(LMD):管理全局隊(duì)列和全局資源訪問。對(duì)于每個(gè)實(shí)例,LMD 管理來自遠(yuǎn)端的資源請(qǐng)求。
  5. Lock Processes(LCK):管理除 Cache Fusion 以外的非數(shù)據(jù)塊資源請(qǐng)求,比如數(shù)據(jù)文件,控制文件,數(shù)據(jù)字典試圖,library 和 row cache 的請(qǐng)求。
  6. Diagnosability Daemon(DIAG):在實(shí)例中捕獲進(jìn)程失敗的診斷數(shù)據(jù)。

(四) The Global Cache and Global Enqueue Service

全局緩存服務(wù)(GCS)和全局隊(duì)列服務(wù)(GES)是 RAC 的集成組件,用于協(xié)調(diào)對(duì)共享數(shù)據(jù)庫和數(shù)據(jù)庫內(nèi)的共享資源的同時(shí)訪問。

GCS 和 GES 包括以下特性:

  1. 應(yīng)用透明性。
  2. 分布式結(jié)構(gòu)
  3. 分布式結(jié)構(gòu)的全局資源目錄:只要還存在一個(gè)節(jié)點(diǎn),即使出現(xiàn)一個(gè)或多個(gè)節(jié)點(diǎn)失敗,GCS 和 GES 仍然可以保證全局資源目錄的完整性。
  4. 資源控制:GCS 和 GES 會(huì)選擇一個(gè)實(shí)例來管理所有的資源信息,這個(gè)實(shí)例叫做 resource master。GCS和 GES 會(huì)根據(jù)數(shù)據(jù)訪問方式階段性的評(píng)估和修改 resource master。這種方式會(huì)減少網(wǎng)絡(luò)流量和資源獲取時(shí)間。
  5. GCS 和 GES 與 CM 之間的交互:GCS 和 GES 獨(dú)立于 CM。但同時(shí) GCS 和 GES 依賴于 CM 提供的各個(gè)節(jié)點(diǎn)上實(shí)例的狀態(tài)信息。一旦無法取得某個(gè)實(shí)例的信息,則 Oracle 會(huì)馬上關(guān)閉沒有響應(yīng)的實(shí)例,來保證整個(gè) RAC 的完整性。

回到頂部

集群注冊(cè)(OCR)

??????? 健忘問題是由于每個(gè)節(jié)點(diǎn)都有配置信息的拷貝,修改節(jié)點(diǎn)的配置信息不同步引起的。Oracle 采用的解決方法就是把這個(gè)配置文件放在共享的存儲(chǔ)上,這個(gè)文件就是 OCR Disk。OCR 中保存整個(gè)集群的配置信息,配置信息以”Key-Value” 的形式保存其中。在 Oracle 10g 以前,這個(gè)文件叫作 Server Manageability Repository(SRVM). 在 Oracle 10g,這部分內(nèi)容被重新設(shè)計(jì),并重名為 OCR.在 Oracle Clusterware 安裝的過程中,安裝程序會(huì)提示用戶指定 OCR 位置。并且用戶指定的這個(gè)位置會(huì)被記錄在/etc/oracle/ocr.Loc(LinuxSystem) 或者/var/opt/oracle/ocr.Loc(SolarisSystem)文件中。而在 Oracle 9i RAC 中,對(duì)等的是 srvConfig.Loc 文件。Oracle Clusterware 在啟動(dòng)時(shí)會(huì)根據(jù)這里面的內(nèi)容從指定位置讀入 OCR 內(nèi)容。

(一) OCR key

整個(gè) OCR 的信息是樹形結(jié)構(gòu),有 3 個(gè)大分支。分別是 SYSTEM,DATABASE 和 CRS。每個(gè)分支下面又有許多小分支。這些記錄的信息只能由 root 用戶修改。

(二) OCR process

????? Oracle Clusterware 在 OCR 中存放集群配置信息,故 OCR 的內(nèi)容非常的重要,所有對(duì) OCR 的操作必須確保OCR 內(nèi)容完整性,所以在 ORACLE Clusterware 運(yùn)行過程中,并不是所有結(jié)點(diǎn)都能操作 OCR Disk.在每個(gè)節(jié)點(diǎn)的內(nèi)存中都有一份 OCR 內(nèi)容的拷貝,這份拷貝叫作 OCR Cache。每個(gè)結(jié)點(diǎn)都有一個(gè) OCR Process來讀寫 OCR Cache,但只有一個(gè)節(jié)點(diǎn)的 OCR process 能讀寫 OCR Disk 中的內(nèi)容,這個(gè)節(jié)點(diǎn)叫作 OCR Master 結(jié)點(diǎn)。這個(gè)節(jié)點(diǎn)的 OCR process 負(fù)責(zé)更新本地和其他結(jié)點(diǎn)的 OCR Cache 內(nèi)容。所有需要OCR 內(nèi)容的其他進(jìn)程,比如OCSSD,EVM等都叫作Client Process,這些進(jìn)程不會(huì)直接訪問OCR Cache,而是像 OCR Process發(fā)送請(qǐng)求,借助 OCR Process獲得內(nèi)容,如果想要修改 OCR 內(nèi)容,也要由該節(jié)點(diǎn)的 OCR Process像 Master node 的 OCR process 提交申請(qǐng),由 Master OCR Process 完成物理讀寫,并同步所有節(jié)點(diǎn) OCR Cache 中的內(nèi)容。

回到頂部

Oracle 仲裁盤(Voting Disk)

????? Voting Disk 這個(gè)文件主要用于記錄節(jié)點(diǎn)成員狀態(tài),在出現(xiàn)腦裂時(shí),決定那個(gè) Partion 獲得控制權(quán),其他的Partion 必須從集群中剔除。在安裝 Clusterware 時(shí)也會(huì)提示指定這個(gè)位置。安裝完成后可以通過如下命令來查看Voting Disk 位置。$Crsctl query css votedisk

回到頂部

集群的網(wǎng)絡(luò)連接

一、專用網(wǎng)絡(luò)

????? 每個(gè)集群節(jié)點(diǎn)通過專用高速網(wǎng)絡(luò)連接到所有其他節(jié)點(diǎn),這種專用高速網(wǎng)絡(luò)也稱為集群互聯(lián)或高速互聯(lián) (HSI)。Oracle 的 Cache Fusion 技術(shù)使用這種網(wǎng)絡(luò)將每個(gè)主機(jī)的物理內(nèi)存 (RAM) 有效地組合成一個(gè)高速緩存。 OracleCache Fusion 通過在專用網(wǎng)絡(luò)上傳輸某個(gè) Oracle 實(shí)例高速緩存中存儲(chǔ)的數(shù)據(jù)允許其他任何實(shí)例訪問這些數(shù)據(jù)。它還通過在集群節(jié)點(diǎn)中傳輸鎖定和其他同步信息保持?jǐn)?shù)據(jù)完整性和高速緩存一致性。專用網(wǎng)絡(luò)通常是用千兆以太網(wǎng)構(gòu)建的,但是對(duì)于高容量的環(huán)境,很多廠商提供了專門為 Oracle RAC 設(shè)計(jì)的低延遲、高帶寬的專有解決方案。 Linux 還提供一種將多個(gè)物理 NIC 綁定為一個(gè)虛擬 NIC 的方法(此處不涉及)來增加帶寬和提高可用性。

二、公共網(wǎng)絡(luò)

???? 為維持高可用性,為每個(gè)集群節(jié)點(diǎn)分配了一個(gè)虛擬 IP 地址 (VIP)。 如果主機(jī)發(fā)生故障,則可以將故障節(jié)點(diǎn)的 IP 地址重新分配給一個(gè)可用節(jié)點(diǎn),從而允許應(yīng)用程序通過相同的 IP 地址繼續(xù)訪問數(shù)據(jù)庫。

三、Virtual lP(VIP)

????? 即虛擬 IP,Oracle 推薦客戶端連接時(shí)通過指定的虛擬 IP 連接,這也是 Oracle10g 新推出的一個(gè)特性。其本質(zhì)目的是為了實(shí)現(xiàn)應(yīng)用的無停頓(雖然目前還是有點(diǎn)小問題,但離目標(biāo)已經(jīng)非常接近)。用戶連接虛 IP,這個(gè) IP并非綁定于網(wǎng)卡,而是由 oracle 進(jìn)程管理,一旦某個(gè)用戶連接的虛 IP 所在實(shí)例宕機(jī),oracle 會(huì)自動(dòng)將該 IP 映射到狀態(tài)正常的實(shí)例,這樣就不會(huì)影響到用戶對(duì)數(shù)據(jù)庫的訪問,也無須用戶修改應(yīng)用。Oracle 的 TAF 建立在 VIP 技術(shù)之上。IP 和 VIP 區(qū)別在與: IP 是利用 TCP 層超時(shí), VIP 利用的是應(yīng)用層的立即響應(yīng)。VIP 它是浮動(dòng)的 IP. 當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)問題時(shí)會(huì)自動(dòng)的轉(zhuǎn)到另一個(gè)節(jié)點(diǎn)上。

回到頂部

透明應(yīng)用切換(TAF)

透明應(yīng)用故障轉(zhuǎn)移(Transport Application Failover,TAF)是 oracle 數(shù)據(jù)提供的一項(xiàng),普遍應(yīng)用于 RAC 環(huán)境中,當(dāng)然也可以用于 Data Guard 和傳統(tǒng)的 HA 實(shí)現(xiàn)的主從熱備的環(huán)境中。TAF 中的 Transparent 和 Failover,點(diǎn)出了這個(gè)高可用特性的兩大特點(diǎn):

  1. TAF 是用于故障轉(zhuǎn)移的,也就是切換。當(dāng) Oracle 連接的會(huì)話由于數(shù)據(jù)庫發(fā)生故障不可用時(shí),會(huì)話能夠自動(dòng)切換到 RAC 中的其他可用的節(jié)點(diǎn)上,或者切換到 Standby 上面,或者切換到 HA 方式中的另一個(gè)可用的節(jié)點(diǎn)上面。
  2. TAF 的故障轉(zhuǎn)移,對(duì)應(yīng)用來說是透明的,應(yīng)用系統(tǒng)不需要進(jìn)行特別的處理就能夠自動(dòng)進(jìn)行故障轉(zhuǎn)移。

但是,TAF 是完美的嗎?是不是使用了 TAF,應(yīng)用就能真的無縫地進(jìn)行切換呢?對(duì)應(yīng)用和數(shù)據(jù)庫有沒有其他什么要求?要回答這些問題,我們需要全面地了解、掌握 TAF。我始終認(rèn)為,要用好一個(gè)東西,首先得掌握這個(gè)東西背后的工作原理與機(jī)制。首先來看看 Failover。Failover 有兩種,一種是連接時(shí) Failover,另一種則是運(yùn)行時(shí) Failover。前者的作用在于,應(yīng)用(客戶端)在連接數(shù)據(jù)庫時(shí),如果由于網(wǎng)絡(luò)、實(shí)例故障等原因,連接不上時(shí),能夠連接數(shù)據(jù)庫中的其他實(shí)例。后者的作用在于,對(duì)于一個(gè)已經(jīng)在工作的會(huì)話(也就是連接已經(jīng)建立),如果這個(gè)會(huì)話的實(shí)例異常中止等,應(yīng)用(客戶端)能夠連接到數(shù)據(jù)庫的其他實(shí)例(或備用庫)。

回到頂部

連接負(fù)載均衡

????? 負(fù)載均衡(Load-Banlance)是指連接的負(fù)載均衡。RAC 的負(fù)載均衡主要指的是新會(huì)話連接到 RAC 數(shù)據(jù)庫時(shí),根據(jù)服務(wù)器節(jié)點(diǎn)的 CPU 負(fù)載判定這個(gè)新的連接要連接到哪個(gè)節(jié)點(diǎn)進(jìn)行工作。Oracle RAC 可以提供動(dòng)態(tài)的數(shù)據(jù)服務(wù),負(fù)載均衡分為兩種,一種是基于客戶端連接的,一種是基于服務(wù)器端的。

回到頂部

VIP 的原理和特點(diǎn)

?????? Oracle 的 TAF 建立在 VIP 的技術(shù)之上。IP 和 VIP 區(qū)別在于:IP 是利用 TCP 層超時(shí),VIP 利用的是應(yīng)用層的立即響應(yīng)。VIP 是是浮動(dòng)的 IP,當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)問題的時(shí)候,會(huì)自動(dòng)的轉(zhuǎn)到另一個(gè)節(jié)點(diǎn)上。假設(shè)有一個(gè)兩節(jié)點(diǎn)的 RAC,正常運(yùn)行時(shí)每個(gè)節(jié)點(diǎn)上都有一個(gè) VIP,即 VIP1 和 VIP2。當(dāng)節(jié)點(diǎn) 2 發(fā)生故障,比如異常關(guān)系。RAC 會(huì)做如下操作:

(一) CRS 在檢測(cè)到 rac2 節(jié)點(diǎn)異常后,會(huì)觸發(fā) Clusterware 重構(gòu),最后把 rac2 節(jié)點(diǎn)剔除集群,由節(jié)點(diǎn) 1 組成新的集群。

(二) RAC 的 Failover 機(jī)制會(huì)把節(jié)點(diǎn) 2 的 VIP 轉(zhuǎn)移到節(jié)點(diǎn) 1 上,這時(shí)節(jié)點(diǎn) 1 的 PUBLIC 網(wǎng)卡上就有 3 個(gè) IP 地址:VIP1,VIP2, PUBLIC IP1.

(三) 用戶對(duì) VIP2 的連接請(qǐng)求會(huì)被 IP 層路由轉(zhuǎn)到節(jié)點(diǎn) 1

(四) 因?yàn)樵诠?jié)點(diǎn) 1 上有 VIP2 的地址,所有數(shù)據(jù)包會(huì)順利通過路由層,網(wǎng)絡(luò)層,傳輸層。

(五) 但是,節(jié)點(diǎn) 1 上只監(jiān)聽 VIP1 和 public IP1 的兩個(gè) IP 地址。并沒有監(jiān)聽 VIP2,故應(yīng)用層沒有對(duì)應(yīng)的程序接收這個(gè)數(shù)據(jù)包,這個(gè)錯(cuò)誤立即被捕獲。

(六) 客戶端能夠立即接收到這個(gè)錯(cuò)誤,然后客戶端會(huì)重新發(fā)起向 VIP1 的連接請(qǐng)求。VIP 特點(diǎn):

  • l? ? VIP 是通過 VIPCA 腳本創(chuàng)建的。
  • l? ? VIP 作為 Nodeapps 類型的 CRS Resource 注冊(cè)到 OCR 中,并由 CRS 維護(hù)狀態(tài)。
  • l? ? VIP 會(huì)綁定到節(jié)點(diǎn)的 public 網(wǎng)卡上,故 public 網(wǎng)卡有 2 個(gè)地址。
  • l? ? 當(dāng)某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),CRS 會(huì)把故障節(jié)點(diǎn)的 VIP 轉(zhuǎn)移到其他節(jié)點(diǎn)上。
  • l? ? 每個(gè)節(jié)點(diǎn)的 Listener 會(huì)同時(shí)監(jiān)聽 public 網(wǎng)卡上的 public ip 和 VIP.
  • l? ? 客戶端的 tnsnames.Ora 一般會(huì)配置指向節(jié)點(diǎn)的 VIP.

回到頂部

日志體系

Redo Thread

?????? RAC 環(huán)境下有多個(gè)實(shí)例,每個(gè)實(shí)例都需要有自己的一套 Redo Log 文件來記錄日志。這套 Redo Log 就叫做 RedoThread,其實(shí)單實(shí)例下也是 Redo Thread,只是這個(gè)詞很少被提及,每個(gè)實(shí)例一套 Redo Thread 的設(shè)計(jì)就是為了避免資源競(jìng)爭(zhēng)造成的性能瓶頸。Redo Thread 有兩種,一種是 Private,創(chuàng)建語法 alter database add logfile ......thread n;另一種是 public,創(chuàng)建語法:alter database add logfile......;RAC 中每個(gè)實(shí)例都要設(shè)置 thread 參數(shù),該參數(shù)默認(rèn)值為 0。如果設(shè)置了這個(gè)參數(shù),則使用缺省值 0,啟動(dòng)實(shí)例后選擇使用 Public Redo Thread,并且實(shí)例會(huì)用獨(dú)占的方式使用該 Redo Thread。RAC 中每個(gè)實(shí)例都需要一個(gè) Redo Thread,每個(gè) Redo Log Thread 至少需要兩個(gè) Redo Log Group,每個(gè) Log Group成員大小應(yīng)該相等,沒組最好有 2 個(gè)以上成員,這些成員應(yīng)放在不同的磁盤上,防止單點(diǎn)故障。

注意:在 RAC 環(huán)境下,Redo Log Group 是在整個(gè)數(shù)據(jù)庫級(jí)別進(jìn)行編號(hào),如果實(shí)例 1 有 1,2 兩個(gè)日志組,那么實(shí)例 2 的日志組編號(hào)就應(yīng)該從 3 開始,不能使用 1,2 編號(hào)了。在 RAC 環(huán)境上,所有實(shí)例的聯(lián)機(jī)日志必須放在共享存儲(chǔ)上,因?yàn)槿绻硞€(gè)節(jié)點(diǎn)異常關(guān)閉,剩下的節(jié)點(diǎn)要進(jìn)行 crash recovery,執(zhí)行 crash recovery 的這個(gè)節(jié)點(diǎn)必須能夠訪問到故障節(jié)點(diǎn)的連接日志,只有把聯(lián)機(jī)日志放在共享存儲(chǔ)上才能滿足這個(gè)要求。

Archive log

????? RAC 中的每個(gè)實(shí)例都會(huì)產(chǎn)生自己的歸檔日志,歸檔日志只有在執(zhí)行 Media Recovery 時(shí)才會(huì)用到,所以歸檔日志不必放在共享存儲(chǔ)上,每個(gè)實(shí)例可以在本地存放歸檔日志。但是如果在單個(gè)實(shí)例上進(jìn)行備份歸檔日志或者進(jìn)行 Media Recovery 操作,又要求在這個(gè)節(jié)點(diǎn)必須能夠訪問到所有實(shí)例的歸檔日志,在 RAC 幻境下,配置歸檔日志可以有多種選擇。

  1. 使用 NFS

使用 NFS 的方式將日志直接歸檔到存儲(chǔ),例如兩個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有 2 個(gè)目錄,Arch1,Arch2 分別對(duì)應(yīng)實(shí)例 1 和實(shí)例 2 產(chǎn)生的歸檔日志。每個(gè)實(shí)例都配置一個(gè)歸檔位置,歸檔到本地,然后通過 NFS 把對(duì)方的目錄掛到本地。

  1. 實(shí)例間歸檔(Cross Instance Archive CIA)

實(shí)例間歸檔(Cross Instance Archive)是上一種方式的變種,也是比較常見的一種配置方法。兩個(gè)節(jié)點(diǎn)都創(chuàng)建 2 個(gè)目錄 Arch1 和 Arch2 分別對(duì)應(yīng)實(shí)例 1 和實(shí)例 2 產(chǎn)生的歸檔日志。每個(gè)實(shí)例都配置兩個(gè)歸檔位置。位置 1對(duì)應(yīng)本地歸檔目錄,位置 2 對(duì)應(yīng)另一個(gè)實(shí)例

  1. 使用 ASM

使用 ASM 將日志歸檔到共享存儲(chǔ),只是通過 Oracle 提供的 ASM,把上面的復(fù)雜性隱藏了,但是原理都一樣。

Trace 日志

Oracle Clusterware 的輔助診斷,只能從 log 和 trace 進(jìn)行。 而且它的日志體系比較復(fù)雜。 alert.log:$ORA_CRS_HOME/log/hostname/alert.Log, 這是首選的查看文件。

Clusterware 后臺(tái)進(jìn)程日志

  • l? crsd.Log: $ORA_CRS_HOME/log/hostname/crsd/crsd.Log
  • l? ocssd.Log: $ORA_CRS_HOME/log/hostname/cssd/ocsd.Log
  • l? evmd.Log: $ORA_CRS_HOME/log/hostname/evmd/evmd.Log

Nodeapp 日志位置

ORACRSHOME/log/hostname/racg/這里面放的是nodeapp的日志,包括ONS和VIP,比如:ora.Rac1.ons.Log工具執(zhí)行日志:

ORA_CRS_HOME/log/hostname/client/

Clusterware 提供了許多命令行工具 比如 ocrcheck, ocrconfig,ocrdump,oifcfg 和 clscfg, 這些工具產(chǎn)生的日志就放在這個(gè)目錄下,還有ORACLEHOME/log/hostname/client/和

ORACLE_HOME/log/hostname/racg 也有相關(guān)的日志。

回到頂部

參考文獻(xiàn)


  1. Oracle的三種高可用集群方案
  2. 集群概念介紹:栢圖教育 Oracle 高級(jí)課程——理論教材
  3. Oracle 11 RAC生存指南
  4. Oracle 11gR2 RAC管理與性能優(yōu)化
http://www.risenshineclean.com/news/12143.html

相關(guān)文章:

  • 天元建設(shè)集團(tuán)有限公司天元天筑網(wǎng)百度seo排名培訓(xùn)
  • 建設(shè)網(wǎng)站要做的工作總結(jié)網(wǎng)頁模板免費(fèi)下載網(wǎng)站
  • 中企動(dòng)力科技股份有限公司銷售seo網(wǎng)站診斷方案
  • 網(wǎng)站特效代碼html無錫百度推廣平臺(tái)
  • 網(wǎng)站空間域名購買電商平臺(tái)開發(fā)
  • 網(wǎng)站接任務(wù)來做收錄查詢api
  • 洋洋點(diǎn)建站鄭州網(wǎng)
  • 北京微信網(wǎng)站建設(shè)公司大連企業(yè)網(wǎng)站建站模板
  • 品牌查詢網(wǎng)站seo關(guān)鍵詞排名優(yōu)化報(bào)價(jià)
  • 做b網(wǎng)站怎么快速優(yōu)化網(wǎng)站
  • 軟件行業(yè) 網(wǎng)站建設(shè) 模塊搜索引擎快速優(yōu)化排名
  • 成品網(wǎng)站 修改首頁做網(wǎng)絡(luò)推廣可以通過哪些渠道推廣
  • 怎么看一個(gè)網(wǎng)站做沒做競(jìng)價(jià)app推廣地推接單網(wǎng)
  • 網(wǎng)站優(yōu)化設(shè)計(jì)方案鄭州seo線上推廣技術(shù)
  • 石家莊做網(wǎng)站最好的公司百度小說風(fēng)云榜排名完結(jié)
  • 網(wǎng)站標(biāo)題權(quán)重個(gè)人網(wǎng)站網(wǎng)址
  • 河北石家莊網(wǎng)站免費(fèi)推廣廣告鏈接
  • 做網(wǎng)站的風(fēng)險(xiǎn)英文站友情鏈接去哪里查
  • 網(wǎng)站開發(fā)職業(yè)崗位站長(zhǎng)工具官網(wǎng)
  • 辦個(gè)人網(wǎng)站租空間免費(fèi)推廣平臺(tái)有哪些
  • 建設(shè)一下網(wǎng)站要求提供源碼百度查詢網(wǎng)
  • 網(wǎng)站建設(shè)談客戶說什么網(wǎng)絡(luò)營(yíng)銷有哪些形式
  • 建站網(wǎng)站怎么上傳代碼奉節(jié)縣關(guān)鍵詞seo排名優(yōu)化
  • 學(xué)生可以做的網(wǎng)站兼職百度論壇發(fā)帖
  • 廣州網(wǎng)站設(shè)計(jì)價(jià)格手機(jī)優(yōu)化大師官方版
  • wordpress注冊(cè)郵箱發(fā)送網(wǎng)站 seo
  • 網(wǎng)站做外鏈的技巧天津seo網(wǎng)絡(luò)
  • 建一個(gè)團(tuán)購網(wǎng)站要多少錢網(wǎng)站建設(shè) 網(wǎng)站制作
  • 做什么網(wǎng)站能吸引流量免費(fèi)正規(guī)大數(shù)據(jù)查詢平臺(tái)
  • 鶴壁網(wǎng)站建設(shè)公司佛山網(wǎng)站建設(shè)模板