成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

oracle10grealapplicationclustersintroduction(RAC原理)

 1、什么是cluster

    一個(gè)cluster是由兩個(gè)或是多個(gè)獨(dú)立的、通過網(wǎng)絡(luò)連接的servers組成的。幾個(gè)硬件供應(yīng)商多年以來提供了Cluster性能的各種需求。一些Clusters僅僅為了提供高可用性的,在當(dāng)前活動(dòng)的node發(fā)生故障時(shí)轉(zhuǎn)移到次節(jié)點(diǎn)node。另一些是為了提供分布式的連接、工作的可擴(kuò)展性。另一個(gè)Cluster的共同特點(diǎn)是,對(duì)于一個(gè)應(yīng)用程序,它可以看做是一個(gè)單獨(dú)的server。同樣,管理幾個(gè)servers應(yīng)該盡可能像管理一個(gè)server一樣簡(jiǎn)單。Cluster管理器軟件提供了這種功能。

    如果是single server的nodes,文件必須存儲(chǔ)在其各自node能訪問的位置。存在有幾個(gè)不同拓?fù)浣Y(jié)構(gòu)來解決數(shù)據(jù)訪問的問題,這主要依賴于Cluster設(shè)計(jì)的主要目標(biāo)。

    相互連接時(shí)一個(gè)物理的網(wǎng)絡(luò)連接,作為每個(gè)Cluster節(jié)點(diǎn)直接的交互通信。

    簡(jiǎn)而言之,一個(gè)Cluster就是一組獨(dú)立的servers,它們共同協(xié)作,組成一個(gè)single system。

    2、什么是Oracle real Application Cluster(RAC)

    RAC是一個(gè)軟件可以使你通過運(yùn)行多個(gè)依賴相同Database的Instance,使用Cluster硬件。數(shù)據(jù)庫files被存放在物理或是邏輯上連接每個(gè)節(jié)點(diǎn)的磁盤上。以便于每個(gè)活動(dòng)的Instance都可以對(duì)files進(jìn)行讀寫操作。

    RAC軟件管理著數(shù)據(jù)的訪問。所以更改操作在Instances之間是被相互協(xié)調(diào)的,并且每個(gè)Instance看到的信息和數(shù)據(jù)鏡像都是一致的。

    通過RAC結(jié)構(gòu),可以獲得冗余,從而使得即使在一個(gè)系統(tǒng)crash或是不可訪問時(shí),應(yīng)用程序也可通過其他Instance訪問Database。

    3、為啥使用RAC

    RAC可以高度利用標(biāo)準(zhǔn)的Cluster,降低模塊servers成本。

    RAC自動(dòng)的提供了服務(wù)的工作量管理。應(yīng)用程序的服務(wù)可以被分組或分類,組成商業(yè)組件完成應(yīng)用工作任務(wù)。RAC中的服務(wù)可以是持續(xù)的、不間斷的Database操作,并為多Instance上的多個(gè)服務(wù)提供支持??梢栽O(shè)計(jì)services到一個(gè)或多個(gè)Instance上運(yùn)行,并且交替Instances可以用于備份Instances。如果主Instance失敗,Oracle會(huì)將services從失敗的Instance節(jié)點(diǎn)移動(dòng)到活動(dòng)的可替代的Instance上。Oracle也會(huì)自動(dòng)的通過連接進(jìn)行數(shù)據(jù)裝載的平衡。

    RAC利用多個(gè)廉價(jià)的computers共同提供Database的服務(wù),就像一個(gè)大的computer一樣,服務(wù)于只有大規(guī)模SMP才能提供的各種應(yīng)用。

    RAC是基于共享磁盤結(jié)構(gòu)的,在需求上可以增加或縮減,而不需要人為的在Cluster中進(jìn)行數(shù)據(jù)的分隔。并且RAC可以簡(jiǎn)單的增加、移出Cluster中的servers。

    4、Clusters和可擴(kuò)展性

創(chuàng)新互聯(lián)主營(yíng)額爾古納網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),額爾古納h5小程序開發(fā)搭建,額爾古納網(wǎng)站營(yíng)銷推廣歡迎額爾古納等地區(qū)企業(yè)咨詢

oracle 10g real application clusters introduction (RAC原理)

    如果使用對(duì)稱多處理(symmetric multiprocessing SMP)機(jī)制能夠?qū)?yīng)用程序提供透明的服務(wù),則應(yīng)該使用RAC也可以得到同樣的效果,而不需要進(jìn)行應(yīng)用程序代碼的任何改動(dòng)。

    當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生失敗,RAC可以排除該Database Instance和node本身,從而保證Database的完整。

    下面是一些可擴(kuò)展性的例子:

    *  允許更多并發(fā)的批處理。

    *  允許更大程度的并發(fā)執(zhí)行。

    *  在OLTP系統(tǒng)中可以是連接的用戶大增。

    1)可擴(kuò)展性的層次:主要有四個(gè)層次

    *  hardware 的可擴(kuò)展性:相互連接性是它的關(guān)鍵,這一般依賴于較高的帶寬和較低的延遲。

    *  OS的可擴(kuò)展性:在OS中,同步方法可以決定系統(tǒng)的可擴(kuò)展性。在一些情況下,硬件的潛在可擴(kuò)展性會(huì)因?yàn)镺S無力并發(fā)維持請(qǐng)求的多個(gè)資源而被丟失。

    *  Database管理系統(tǒng)的可擴(kuò)展性:在并發(fā)結(jié)構(gòu)中的一個(gè)關(guān)鍵因素是并發(fā)是由內(nèi)部影響的還是外部進(jìn)程影響的。此問題的答案影響了同步的機(jī)制。

    *  應(yīng)用層次上的可擴(kuò)展性:應(yīng)用程序必須被明確的設(shè)計(jì)為可擴(kuò)展的。當(dāng)系統(tǒng)中如果多數(shù)情況下,每個(gè)session都在更新相同的data,則可能產(chǎn)生瓶頸。這不僅是指RAC,對(duì)于single-instance系統(tǒng)也是一樣。

    需要明確的是,如果任何一個(gè)層次沒有達(dá)到可擴(kuò)展性,不管其他層次可擴(kuò)展性多強(qiáng),并發(fā)的Cluster進(jìn)程都可能失敗??蓴U(kuò)展性不足的典型原因是共享資源的訪問。這使得并發(fā)的操作在此瓶頸上序列化執(zhí)行。這不僅僅是RAC中的局限,而是所有結(jié)構(gòu)中的局限性。

    2)scaleup和speedup

oracle 10g real application clusters introduction (RAC原理)

    *  scaleup是工作量和資源都成比例增加時(shí)能維持相同性能水平的能力(相應(yīng)時(shí)間)

    Scaleup=(volume parallel)/(volume original)–time for ipc

    *  speedup是指通過增加資源的數(shù)量完成固定的工作量,獲得執(zhí)行時(shí)間成比例的縮減的效果。

    Speedup=(time original)/(time parallel)–time for ipc 

    其中,ipc是進(jìn)程間通信的簡(jiǎn)寫——interprocess communication
 

oracle 10g real application clusters introduction (RAC原理)


   RAC Architecture and Concepts

oracle 10g real application clusters introduction (RAC原理)

    1、RAC軟件原理

oracle 10g real application clusters introduction (RAC原理)

    在一個(gè)RAC Instance中,會(huì)見到一些普通Instance中不存在的后臺(tái)進(jìn)程,它們主要是用于維持Database在每個(gè)Instance中的一致性。管理全局資源,具體如下:

    *  LMON:全局隊(duì)列服務(wù)監(jiān)控進(jìn)程——Global Enqueue Service Monitor
    *  LMD0:全局隊(duì)列服務(wù)守護(hù)進(jìn)程——Global Enqueue Service Daemon
    *  LMSx:全局緩沖服務(wù)進(jìn)程,x可以從0到j(luò)——Global Cache Service Processes
    *  LCK0:鎖進(jìn)程——Lock process
    *  DIAG:診斷進(jìn)程——Diagnosibility process

    在Cluster層,可以找到Cluster Ready Services軟件的主要進(jìn)程,它們?cè)谒衅脚_(tái)上提供標(biāo)準(zhǔn)的Cluster接口,并實(shí)現(xiàn)高可用性的操作。在每個(gè)Cluster node上都可以看到如下的進(jìn)程:

    *  CRSD和RACGIMON:用于高可用性操作的引擎。
    *  OCSSD:提供成員節(jié)點(diǎn)和服務(wù)組的訪問
    *  EVMD:事件檢測(cè)進(jìn)程,由oracle用戶運(yùn)行管理
    *  OPROCD:Cluster的監(jiān)控進(jìn)程

    此外還存在幾個(gè)工具用于管理Cluster中全局層次上的各種資源。這些資源是ASM Instance、RAC Database、Services和CRS應(yīng)用節(jié)點(diǎn)。本書中涉及的工具主要有Server Control(SRVCTL)、DBCA和Enterprise Manager。

    2、RAC軟件存儲(chǔ)原理

oracle 10g real application clusters introduction (RAC原理)

    Oracle10g的RAC安裝分為兩個(gè)階段。第一階段是安裝CRS,其次是安裝帶有RAC組件的Database軟件并創(chuàng)建Cluster數(shù)據(jù)庫。CRS軟件使用的Oracle home必須不同于RAC軟件使用的home。盡管可以將Cluster中CRS和RAC軟件通過使用Cluster文件系統(tǒng)共享存儲(chǔ),但是軟件總是按一定規(guī)則安裝在每個(gè)節(jié)點(diǎn)的本地文件系統(tǒng)中。這支持在線補(bǔ)丁的升級(jí),并消除了單節(jié)點(diǎn)軟件造成的失敗。另外有兩個(gè)必須存儲(chǔ)在共享的存儲(chǔ)設(shè)備中:

    *  voting file:其本質(zhì)上是用于Cluster synchronization Services守護(hù)進(jìn)程進(jìn)行節(jié)點(diǎn)信息的監(jiān)控。大小約為20MB。

    *  Oracle Cluster Registry(OCR)文件:也是CRS關(guān)鍵的組成部分。用于維護(hù)在Cluster中高可用性組件的信息。例如,Cluster節(jié)點(diǎn)列表,Cluster數(shù)據(jù)庫Instance到節(jié)點(diǎn)的映射和CRS應(yīng)用資源的列表(如Services、虛擬內(nèi)部鏈接協(xié)議地址等)。此文件是通過SRVCTL類似的管理工具自動(dòng)維護(hù)的。其大小約100MB。

    voting file和OCR file是不能被存儲(chǔ)在ASM中的,因?yàn)樗鼈儽仨氃谌魏蜲racle Instance啟動(dòng)前就可以被訪問。并且,兩者必須是在冗余的、可靠的存儲(chǔ)設(shè)備中存放,如RAID。推薦最好的做法是將這些文件放在裸磁盤上。

    3、OCR的結(jié)構(gòu)

oracle 10g real application clusters introduction (RAC原理)

    Cluster的配置信息是在OCR中維護(hù)的。OCR依賴分布式的共享緩存結(jié)構(gòu)用于優(yōu)化關(guān)于Cluster知識(shí)庫的查詢。在Cluster中的每個(gè)節(jié)點(diǎn)都通過OCR進(jìn)程訪問OCR緩存在其內(nèi)存中維護(hù)著一個(gè)副本。事實(shí)上在Cluster中,只有一個(gè)OCR進(jìn)程對(duì)共享存儲(chǔ)中的OCR進(jìn)行讀寫操作。此進(jìn)程負(fù)責(zé)刷新(refresh)其自己擁有的本地緩存以及Cluster中其他節(jié)點(diǎn)的OCR cache。對(duì)于涉及到Cluster知識(shí)庫的訪問,OCR客戶端直接訪問本地OCR進(jìn)程。當(dāng)客戶端需要更新OCR時(shí),它們將通過本地OCR進(jìn)程與那個(gè)扮演讀寫OCR文件的進(jìn)程進(jìn)行交互。

    OCR客戶端應(yīng)用有:Oracle通用安裝器(OUI)、SRVCTL、企業(yè)管理器(EM)、DBCA、DBUA、NetCA和虛擬網(wǎng)絡(luò)協(xié)議助理(VIPCA)。此外,OCR維護(hù)管理著CRS內(nèi)部中定義的各種應(yīng)用程序的資源的依賴和狀態(tài)信息,特別是Database、Instance、Services和節(jié)點(diǎn)的應(yīng)用程序。

    配置文件的名字是ocr.loc,并且配置文件變量是ocrconfig_loc。Cluster 知識(shí)庫的位置是不受限于裸設(shè)備的??梢詫CR放置在由Cluster file system管理的共享存儲(chǔ)設(shè)備上。

    note:OCR也可用于在ASM的單Instance中作為配置文件,每個(gè)節(jié)點(diǎn)有一個(gè)OCR。

    4、RAC Database存儲(chǔ)原理

oracle 10g real application clusters introduction (RAC原理)

    與single-Instance Oracle的存儲(chǔ)方式最主要的不同之處在于RAC存儲(chǔ)必須將所有RAC中數(shù)據(jù)文件存放在共享設(shè)備中(裸設(shè)備或是Cluster文件系統(tǒng))以便于訪問相同Database的Instance能夠共享。必須為每個(gè)Instance創(chuàng)建至少兩個(gè)redo log組,并且所有的redo log組必須也存儲(chǔ)在共享設(shè)備中,從而為了crash恢復(fù)的目的。每個(gè)Instance的在線redo log groups被稱作一個(gè)Instance的在線redo 線程。

    此外,必須為每個(gè)Instance創(chuàng)建一個(gè)共享的undo表空間用于Oracle推薦的undo自動(dòng)管理特點(diǎn)。每個(gè)undo表空間必須是對(duì)所有Instance共享的,主要用于恢復(fù)的目的。

    歸檔日志不能被存放在裸設(shè)備上,因?yàn)槠涿亲詣?dòng)產(chǎn)生的,并且每個(gè)是不一致的。因此需要存儲(chǔ)在一個(gè)文件系統(tǒng)中。如果使用Cluster file system(CFS),則可以在任何時(shí)間在任何node上訪問這些歸檔文件。如果沒有使用CFS,就不得不使其他Cluster成員在恢復(fù)時(shí)那些歸檔日志是可用的,例如通過網(wǎng)絡(luò)文件系統(tǒng)(NFS)來實(shí)現(xiàn)。如果使用推薦的flash recovery area特性,則其必須被存儲(chǔ)在共享目錄下,以便于所有的Instance能夠訪問。(共享目錄可以是一個(gè)ASM磁盤組,或是一個(gè)CFS)。

    5、RAC和共享存儲(chǔ)技術(shù)

    存儲(chǔ)是網(wǎng)格技術(shù)中的關(guān)鍵組成部分。傳統(tǒng)上,存儲(chǔ)都直接依附在每個(gè)Server(directly attached to each individual Server DAS)上。在過去的幾年來,更靈活的存儲(chǔ)出現(xiàn)并得到應(yīng)用,主要是通過存儲(chǔ)空間網(wǎng)絡(luò)或是正規(guī)的以太網(wǎng)來實(shí)現(xiàn)訪問。這些新的存儲(chǔ)方式使得多個(gè)Servers訪問相同的磁盤集合成為可能,在分布式環(huán)境中,可以獲得簡(jiǎn)單的存取。

    storage area network(SAN)代表了數(shù)據(jù)存儲(chǔ)技術(shù)在這一點(diǎn)的演進(jìn)。傳統(tǒng)上,C/S系統(tǒng)中,數(shù)據(jù)被存儲(chǔ)在Server內(nèi)部或是依附它的設(shè)備中。隨后,進(jìn)入了network attached storage(NAS)階段,這使得存儲(chǔ)設(shè)備與Server和直接連接它們的網(wǎng)絡(luò)向分離。它在SAN遵循的原則進(jìn)一步允許存儲(chǔ)設(shè)備存在于各自的網(wǎng)絡(luò)中,并直接通過高速的媒介進(jìn)行交換。用戶可以通過Server系統(tǒng)對(duì)存儲(chǔ)設(shè)備的數(shù)據(jù)進(jìn)行訪問,Server 系統(tǒng)與本地網(wǎng)絡(luò)(LAN)和SAN相互連接。

    文件系統(tǒng)的選擇是RAC的關(guān)鍵。傳統(tǒng)的文件系統(tǒng)不支持多系統(tǒng)的并行掛載。因此,必須將文件存儲(chǔ)在沒有任何文件系統(tǒng)的裸卷標(biāo)或是支持多系統(tǒng)并發(fā)訪問的文件系統(tǒng)中。

    因此,三個(gè)主要的方法用于RAC的共享存儲(chǔ)有:

    *  裸卷標(biāo):既是一些直接附加的裸設(shè)備,需要用于存儲(chǔ),并以block模式進(jìn)程操作。

    *  Cluster file system:也需要以block模式進(jìn)程存取。一個(gè)或多個(gè)Cluster file 系統(tǒng)可以被用于存儲(chǔ)所有的RAC文件。

    *  自動(dòng)存儲(chǔ)管理(ASM):對(duì)于Oracle Database files,ASM是一個(gè)輕便的、專用的、最佳化的Cluster file system。

    6、Oracle Cluster file system

    Oracle Cluster file system(OCFS)是一個(gè)共享文件系統(tǒng),專門為Oracle RAC設(shè)計(jì)。OCFS排除了Oracle Database files被連接到邏輯磁盤上的需要,并使得所有的節(jié)點(diǎn)共享一個(gè)ORACLE Home,而不需每個(gè)node在本地有一個(gè)副本。OCFS卷標(biāo)可以橫跨一個(gè)或多共享disks,用于冗余和性能的增強(qiáng)。

    下面時(shí)可放入OCFS中的文件類表:
  
    *  Oracle software的安裝文件:在10g中,此設(shè)置只在windows 2000中支持。說是后面的版本會(huì)提供在Linux中的支持,但我還沒具體看。

    *  Oracle 文件(控制文件、數(shù)據(jù)文件、redo logs文件,bfiles等)

    *  共享配置文件(spfile)

    *  在Oracle運(yùn)行期間,由Oracle創(chuàng)建的文件。

    *  voting和OCR文件

    Oracle Cluster file system對(duì)開發(fā)人員和用戶時(shí)免費(fèi)的。可從官方網(wǎng)站下載。

    7、自動(dòng)存儲(chǔ)管理(ASM)

    是10g的新特性。它提供了一個(gè)縱向的統(tǒng)一管理的文件系統(tǒng)和卷標(biāo)管理器,專門用于建立Oracle Database 文件。ASM可以提供單個(gè)SMP機(jī)器的管理或是貫穿多個(gè)Oracle RAC的Cluster節(jié)點(diǎn)。

    ASM無需再手動(dòng)調(diào)節(jié)I/O,會(huì)自動(dòng)的分配 I/O 負(fù)載到所有的可用資源中,從而優(yōu)化性能。通過允許增加Database大小而不需shutdown數(shù)據(jù)庫來調(diào)節(jié)存儲(chǔ)分配,來輔助DBA管理動(dòng)態(tài)數(shù)據(jù)庫環(huán)境。

    ASM可以維護(hù)數(shù)據(jù)的冗余備份,從而提高故障的容錯(cuò)。它也可以被安裝到可靠的存儲(chǔ)機(jī)制中。

    8、選擇RAW或CFS

    *  CFS的優(yōu)點(diǎn):對(duì)于RAC的安裝和管理非常簡(jiǎn)單;對(duì)RAC使用Oracle managed files(OMF);single Oracle軟件安裝;在Oracle data files上可以自動(dòng)擴(kuò)展;當(dāng)物理節(jié)點(diǎn)失敗時(shí),對(duì)歸檔日志的統(tǒng)一訪問。

    *  裸設(shè)備的使用:一般會(huì)用于CFS不可用或是不被Oracle支持的情況下;它提供了最好的性能,不需要在Oracle和磁盤之間的中間層;如果空間被耗盡,裸設(shè)備上的自動(dòng)擴(kuò)展將失??;ASM、邏輯存儲(chǔ)管理器或是邏輯卷標(biāo)管理其可以簡(jiǎn)化裸設(shè)備的工作,它們也允許加載空間到在線的裸設(shè)備上,可為裸設(shè)備創(chuàng)建名字,從而便于管理。


    

 


    9、RAC的典型Cluster棧

oracle 10g real application clusters introduction (RAC原理)


    在Cluster中的每個(gè)節(jié)點(diǎn)都需要一個(gè)被支持的相互連接的軟件協(xié)議來支持內(nèi)部Instance的交互,同時(shí)需要TCP/IP支持CRS的輪詢。所有的UNIX平臺(tái)在千兆以太網(wǎng)上使用user datagram protocol(UDP)作為主要的協(xié)議并進(jìn)行RAC內(nèi)部Instance 的IPC交互。其他支持的特有協(xié)議包括用于SCI和Sunfire的連接交互的遠(yuǎn)程共享內(nèi)存協(xié)議和超文本協(xié)議,用于超光纖交互。在任何情況下,交互必須能被平臺(tái)的Oracle所辨識(shí)。

    使用Oracle clusterware,可以降低安裝并支持并發(fā)癥。但如果用戶使用非以太交互,或開發(fā)了依賴clusterware的應(yīng)用程序在RAC上,可能需要vendor clusterware。

    同交互連接一樣,共享存儲(chǔ)方案必須被當(dāng)前平臺(tái)的Oracle所辨識(shí)。如果在目標(biāo)平臺(tái)上,CFS可用,Database area和flash recovery area都可以被創(chuàng)建到CFS或ASM上。如果在目標(biāo)平臺(tái)上,CFS不可用,則Database area可以創(chuàng)建在ASM或是裸設(shè)備上(需要卷標(biāo)管理器)并且flash recovery area必須被創(chuàng)建在ASM中。

    10、RAC certification Matrix:它設(shè)計(jì)用于處理任何認(rèn)證問題。可以使用matrix回答任何RAC相關(guān)的認(rèn)證問題。具體使用步驟如下:

    *  連接并登陸 http://metalink.oracle.com
    *  點(diǎn)擊菜單欄的“certify and availability”按鈕
    *  點(diǎn)擊“view certifications by product”連接
    *  選擇RAC
    *  選擇正確的平臺(tái)

    11、必要的全局資源

oracle 10g real application clusters introduction (RAC原理)

    一個(gè)single-Instance環(huán)境,鎖坐標(biāo)通向一個(gè)共享的資源就像表中的一行。lock避免了兩個(gè)進(jìn)程同事修改相同的資源。

    在RAC環(huán)境中,內(nèi)部節(jié)點(diǎn)的同步時(shí)關(guān)鍵,因?yàn)樗S持著不同節(jié)點(diǎn)中各自進(jìn)程的一致性,避免其在同時(shí)修改相同的資源數(shù)據(jù)。內(nèi)部節(jié)點(diǎn)的同步確保每個(gè)Instance看到buffer cache中block的最近的版本。上圖中顯示了當(dāng)不存在加鎖的情況。

    1)全局資源的協(xié)調(diào)

oracle 10g real application clusters introduction (RAC原理)

    cluster操作要求在所有Instance中對(duì)控制共享資源的訪問進(jìn)行同步。RAC使用Global Resource Directory來記錄cluster Database中資源的使用信息。Global Cache Service(GCS)和Global Enqueue Service(GES)管理GRD中的信息。

    每個(gè)Instance在其本地的SGA中維護(hù)GRD的一部分。GCS和GES指定一個(gè)Instance管理特殊資源的所有信息,它被稱為資源的master。每個(gè)Instance都知道resource的Instance masters。

    維護(hù)RAC的活動(dòng)中的cache的依附性(cache coherency)是非常重要的。所謂cache coherency是保持在不同Oracle Instances中的多個(gè)block版本的一致性的技術(shù)。GCS通過所謂的cache融合算法來實(shí)現(xiàn)cache coherency。

    GES管理所有非cache 融合算法的內(nèi)部Instance資源操作和Oracle入隊(duì)機(jī)制的狀態(tài)軌跡。GES主要的控制的資源是字典cache locks和library cache locks。同時(shí),它還對(duì)所有死鎖敏感的隊(duì)列和資源起到死鎖檢測(cè)的作用。

    2)Global cache coordination實(shí)例

oracle 10g real application clusters introduction (RAC原理)

    假設(shè)某data block被第一個(gè)節(jié)點(diǎn)修改,成為臟數(shù)據(jù)。并且在clusterwide中,只有一個(gè)block copy版本,其內(nèi)容用SCN號(hào)代替了。則具體的步驟如下:

    ① 第二個(gè)Instance視圖修改該block,向GCS提出請(qǐng)求。

    ② GCS向block的holder(持有者)提交請(qǐng)求。在此,第一個(gè)Instance就是holder。

    ③ 第一個(gè)Instance接到消息,并將block發(fā)送給第二個(gè)Instance。第一個(gè)Instance保存臟buffer用于恢復(fù)的目的。block的臟鏡像被稱作block的past p_w_picpath。一個(gè)past p_w_picpath block將不能進(jìn)一步被改變。

    ④收到block后,第二個(gè)Instance通知GCS,告知已經(jīng)holds該block。

    3)write to disk coordination:example
 

oracle 10g real application clusters introduction (RAC原理)

    在cluster結(jié)構(gòu)中的Instances中的caches中,可能存在同一個(gè)block的不同的修改版本。由GCS管理的寫協(xié)議確保了只有最近一個(gè)版本被寫入磁盤中。它同時(shí)需要確保其他之前的版本從其他cache中被清洗。一個(gè)寫磁盤的請(qǐng)求可以從任意一個(gè)Instance上發(fā)起,無論它是保存了block的當(dāng)前版本還是過去的版本。假設(shè)第一個(gè)Instance hold過去的block鏡像,請(qǐng)求Oracle將buffer寫入磁盤,如上圖,過程如下:

    ①第一個(gè)Instance發(fā)送一個(gè)寫請(qǐng)求給GCS

    ②GCS將請(qǐng)求轉(zhuǎn)給第二個(gè)Instance,當(dāng)前該block的holder

    ③第二個(gè)Instance接到寫請(qǐng)求后將block寫入磁盤

    ④第二個(gè)Instance通知GCS,告知其寫操作完成

    ⑤當(dāng)接到GCS接到通知后,GCS命令所有的過去的鏡像的holders刪除其過去的鏡像。此鏡像將不會(huì)在因恢復(fù)而需要。


    12、RAC和Instance/crash recovery

    1)當(dāng)一個(gè)Instance失敗,當(dāng)該失敗被其他Instance檢測(cè)到,第二個(gè)Instance將會(huì)執(zhí)行下面的恢復(fù)操作:

    ①在恢復(fù)的第一階段,GES重新灌入隊(duì)列

    ②GCS也重新灌入其資源。GCS進(jìn)程只重新灌入那些失去其控制的資源。在這期間,所有的GCS資源請(qǐng)求和寫請(qǐng)求都臨時(shí)被掛起。然而,事務(wù)可以繼續(xù)修改data blocks,只要這些事務(wù)已經(jīng)獲得了必要的資源。

    ③當(dāng)隊(duì)列被重新配置后,一個(gè)活動(dòng)的Instance可以獲得占有該Instance恢復(fù)隊(duì)列。因此,當(dāng)GCS資源被重新灌入的同時(shí),SMON確定需要被恢復(fù)的blocks的集合。這個(gè)集合被稱作恢復(fù)集。因?yàn)椋褂胏ache 融合算法,一個(gè)Instance傳送這些blocks的內(nèi)容到請(qǐng)求的Instance,而不需要將這些blocks寫入磁盤。這些blocks在磁盤上的版本可能不包含其他Instance進(jìn)程的data的修改操作的blocks。這意味著SMON需要合并所有失敗的Instance的redo logs來確定恢復(fù)集。這是因?yàn)橐粋€(gè)失敗的線程可能導(dǎo)致一個(gè)在redo 中的hole(洞)需要用指定的block填補(bǔ)。所以失敗的Instance的redo 線程不能被連續(xù)的應(yīng)用。同時(shí),活動(dòng)的Instances的redo 線程不需恢復(fù),因?yàn)镾MON可以使用過去和當(dāng)前的通信緩沖的鏡像。

    ④用于恢復(fù)的緩沖空間被分配,并且那些之前讀取redo logs被辨識(shí)的資源被聲明為恢復(fù)資源。這避免了其他Instance訪問這些資源。

    ⑤所有在隨后的恢復(fù)操作中需要的資源被獲得,并且GRD當(dāng)前是不凍結(jié)的。任何不需恢復(fù)的data block現(xiàn)在可以被訪問。所以當(dāng)前系統(tǒng)時(shí)部分可用的。此時(shí),假設(shè)有過去或當(dāng)前的blocks鏡像需要被恢復(fù),而其在cluster Database中的其他caches中,對(duì)于這些特殊的blocks,最近的鏡像是開始恢復(fù)點(diǎn)。如果對(duì)于要恢復(fù)的block,過去鏡像和當(dāng)前鏡像緩沖都不在活動(dòng)的Instance的caches中,則SMON將寫入一個(gè)log,表明合并失敗。SMON會(huì)對(duì)第三步中辨識(shí)的每個(gè)block進(jìn)行恢復(fù)和寫入,在恢復(fù)之后會(huì)馬上釋放資源,從而使更多的資源在恢復(fù)時(shí)可以被使用。

    當(dāng)所有的block被恢復(fù),占用的恢復(fù)資源被釋放,則系統(tǒng)再次可用。

    note:在恢復(fù)中,log合并的開支和失敗的Instances的數(shù)目是成比例的,并且與每個(gè)Instance的redo logs的大小有關(guān)。

    2)Instance recovery和Database availability

oracle 10g real application clusters introduction (RAC原理)

    上圖顯示了在進(jìn)行Instance恢復(fù)時(shí),每一步執(zhí)行時(shí)數(shù)據(jù)庫的可用程度:

    A.  RAC運(yùn)行在多節(jié)點(diǎn)上

    B.  有節(jié)點(diǎn)失敗被檢測(cè)到

    C.  GRD的隊(duì)列部分被重新設(shè)置;資源管理被重新分配到活動(dòng)的nodes。此操作的執(zhí)行比較快

    D.  GRD的緩沖部分被重新設(shè)置,SMON讀取失敗Instance的redo logs辨識(shí)那些需要恢復(fù)的blocks的集合

    E.  SMON向GRD發(fā)起請(qǐng)求,獲得所有在需要恢復(fù)的blocks集合中的Database blocks。當(dāng)請(qǐng)求結(jié)束,所有的其他的blocks都可被訪問了

    F.  Oracle執(zhí)行滾動(dòng)的向前恢復(fù)。失敗線程的redo logs被應(yīng)用到Database,并且那些被完全恢復(fù)的blocks將馬上可以被訪問

    G.  Oracle執(zhí)行滾回恢復(fù)。對(duì)于尚未提交的事務(wù),undo blocks被應(yīng)用到Database中

    H.  Instance的恢復(fù)完成,所有的data可以被訪問

    13、有效的內(nèi)部節(jié)點(diǎn)行級(jí)鎖

oracle 10g real application clusters introduction (RAC原理)

    Oracle支持有效的行級(jí)鎖。這些行級(jí)鎖主要是在DML操作時(shí)被創(chuàng)建,例如UPDATE。這些鎖被持有,直到事務(wù)被提交或回滾。任何請(qǐng)求同行的lock的進(jìn)程都將被掛起。

    cache融合算法的塊傳輸獨(dú)立于這些user可見的行級(jí)鎖。GCS對(duì)blocks的傳輸是一個(gè)底層的操作,無需當(dāng)代行級(jí)鎖被釋放就開始進(jìn)行。blocks可能被從一個(gè)Instance傳輸?shù)狡渌渌鸌nstances,同時(shí)該blocks可能被加鎖。

    GCS提供對(duì)data blocks的訪問,允許多個(gè)事務(wù)的并發(fā)進(jìn)行。

    14、RAC的額外的內(nèi)存需求

    RAC特有的內(nèi)存多數(shù)是在SGA創(chuàng)建時(shí)從shared pool中分配的。因?yàn)閎locks可能跨越Instances被緩沖,必須要求更大的緩沖區(qū)。因此,當(dāng)將single Instance的Database遷移到RAC中時(shí),保持每個(gè)Instance的請(qǐng)求工作量都能通single-instance時(shí)的情況,則需要對(duì)運(yùn)行RAC的Instance增大10%的buffer cache和15%的shared pool。這些值只是基于RAC大小的經(jīng)驗(yàn),一個(gè)初始的嘗試值。一般會(huì)大于此值。

    如果正在使用推薦的自動(dòng)內(nèi)存管理特性,可以通過修改SGA_TARGET初始參數(shù)來設(shè)置。但考慮到同樣數(shù)量的user訪問被分散到多個(gè)nodes中,每個(gè)Instance的內(nèi)存需求可以被降低。

    實(shí)際資源的使用可以通過查詢每個(gè)Instance中的GCS和GES實(shí)體中的視圖V$RESOURCE_LIMIT視圖CURRENT_UTILIZATION和MAX_UTILIZATION字段,具體語句為:

    SELECT resource_name, current_utilization, max_utilization FROM v$resource_limit WHERE resource_name like ‘g%s_%’;



 


    15、RAC與并發(fā)執(zhí)行

oracle 10g real application clusters introduction (RAC原理)

    Oracle的優(yōu)化器是基于執(zhí)行訪問代價(jià)的,這就考慮了并發(fā)執(zhí)行的代價(jià),并將其作為獲得理想的執(zhí)行計(jì)劃的一個(gè)部件。

    在RAC環(huán)境中,優(yōu)化器的并發(fā)選擇是由內(nèi)部節(jié)點(diǎn)和外部節(jié)點(diǎn)并發(fā)兩類組成的。例如,一個(gè)特殊的查詢請(qǐng)求需要六個(gè)查詢進(jìn)程完成,并且在本地節(jié)點(diǎn)有六個(gè)并發(fā)的從屬執(zhí)行進(jìn)程都是idle的,則查詢通過使用本地資源執(zhí)行,從而獲得結(jié)果。這闡述了有效地內(nèi)部節(jié)點(diǎn)并發(fā),也無需多節(jié)點(diǎn)并發(fā)的查詢協(xié)調(diào)的開支。如果本地節(jié)點(diǎn)中只有兩個(gè)并發(fā)執(zhí)行從屬進(jìn)程可用,則這兩個(gè)進(jìn)程和其他節(jié)點(diǎn)的四個(gè)進(jìn)程共同執(zhí)行查詢。在這種情況下,內(nèi)部節(jié)點(diǎn)和外部節(jié)點(diǎn)并發(fā)都被使用到,從而加速查詢。

    在真實(shí)環(huán)境的決策支持應(yīng)用程序中,查詢不能通過各種查詢servers得到較好的劃分。所以有些并發(fā)執(zhí)行servers完成其任務(wù)后先于其他servers變?yōu)閕dle狀態(tài)。Oracle并發(fā)執(zhí)行技術(shù)動(dòng)態(tài)監(jiān)測(cè)idle的進(jìn)程,并將超載進(jìn)程的隊(duì)列表中的任務(wù)分配任務(wù)給處于idle狀態(tài)的進(jìn)程。這樣,Oracle有效的再分配了所有進(jìn)程的查詢工作量。RAC進(jìn)一步擴(kuò)展這個(gè)效率到整個(gè)cluster上。

    16、全局動(dòng)態(tài)性能視圖

    全局動(dòng)態(tài)性能視圖顯示所有開啟并訪問RAC Database的Instances相關(guān)的信息。而標(biāo)準(zhǔn)動(dòng)態(tài)性能視圖只顯示了本地Instance的相關(guān)信息。

    對(duì)于所有V$類型的視圖,都會(huì)對(duì)應(yīng)一個(gè)GV$視圖,除了幾個(gè)別的特殊情況。除了V$視圖中的columns,GV$視圖中包含了一個(gè)名為INST_ID的額外的column,顯示了RAC中的Instance number??梢栽谌魏伍_啟的Instance上訪問GV$。

    為了查詢GV$視圖,每個(gè)Instance上的初始PARALLEL_MAX_SERVERS初始化參數(shù)至少設(shè)置為1 。這是由于對(duì)GV$的查詢使用了特殊的并發(fā)執(zhí)行。并發(fā)執(zhí)行的協(xié)調(diào)者運(yùn)行在客戶端連接的Instance上,并且每個(gè)Instance上分配一個(gè)slave用于查詢其潛在的V$視圖。如果有一個(gè)Instance上的PARALLEL_MAX_SERVERS被設(shè)置為0,則無法獲得該node的信息,同理,如果所有的并發(fā)servers非常忙,則也無法獲得結(jié)果。在以上兩種情況下,不會(huì)獲得提示或錯(cuò)誤信息。

    17、RAC和Service

oracle 10g real application clusters introduction (RAC原理)

    18、虛擬IP地址和RAC

oracle 10g real application clusters introduction (RAC原理)

    當(dāng)一個(gè)node完全失敗,虛擬IP地址(VIP)是關(guān)于所有有效應(yīng)用的。當(dāng)一個(gè)節(jié)點(diǎn)失敗,其相關(guān)的VIP自動(dòng)的分派到cluster中的其他node上。當(dāng)這種情況出現(xiàn)時(shí):

    * crs在另外一個(gè)node的網(wǎng)卡的MAC地址上綁定這個(gè)ip,對(duì)用戶來說是透明的。對(duì)于直接連接的客戶端,會(huì)顯示errors。

    *  隨后發(fā)往VIP的數(shù)據(jù)包都將轉(zhuǎn)向新的節(jié)點(diǎn),它將給客戶端發(fā)送error RST返回包。從而使客戶端快速的獲得errors信息,進(jìn)行對(duì)其他節(jié)點(diǎn)的連接重試。

    如果不使用VIP,則一個(gè)node失敗后,發(fā)往該節(jié)點(diǎn)的連接將等待10分鐘的TCP過期時(shí)間。

文章名稱:oracle10grealapplicationclustersintroduction(RAC原理)
標(biāo)題鏈接:http://jinyejixie.com/article6/poeeog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化域名注冊(cè)、微信公眾號(hào)、軟件開發(fā)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
揭西县| 武穴市| 景谷| 崇明县| 古交市| 砚山县| 垣曲县| 米易县| 台湾省| 台前县| 信丰县| 循化| 陆河县| 兴海县| 碌曲县| 苏尼特左旗| 建平县| 星子县| 涿鹿县| 高台县| 桓台县| 阜南县| 孟村| 夏邑县| 贡山| 双鸭山市| 普兰店市| 梁平县| 甘孜| 鄂托克前旗| 沁源县| 玉山县| 武鸣县| 奎屯市| 嘉义县| 沙河市| 乌审旗| 梅河口市| 平远县| 永新县| 法库县|