oracle 10g real application clusters introduction (RAC原理)
?1、什么是cluster
??? 一個cluster是由兩個或是多個獨立的、通過網絡連接的servers組成的。幾個硬件供應商多年以來提供了Cluster性能的各種需求。一些Clusters僅僅為了提供高可用性的,在當前活動的node發生故障時轉移到次節點node。另一些是為了提供分布式的連接、工作的可擴展性。另一個Cluster的共同特點是,對于一個應用程序,它可以看做是一個單獨的server。同樣,管理幾個servers應該盡可能像管理一個server一樣簡單。Cluster管理器軟件提供了這種功能。
??? 如果是single server的nodes,文件必須存儲在其各自node能訪問的位置。存在有幾個不同拓撲結構來解決數據訪問的問題,這主要依賴于Cluster設計的主要目標。
??? 相互連接時一個物理的網絡連接,作為每個Cluster節點直接的交互通信。
??? 簡而言之,一個Cluster就是一組獨立的servers,它們共同協作,組成一個single system。
????2、什么是Oracle real Application Cluster(RAC)
??? RAC是一個軟件可以使你通過運行多個依賴相同Database的Instance,使用Cluster硬件。數據庫files被存放在物理或是邏輯上連接每個節點的磁盤上。以便于每個活動的Instance都可以對files進行讀寫操作。
??? RAC軟件管理著數據的訪問。所以更改操作在Instances之間是被相互協調的,并且每個Instance看到的信息和數據鏡像都是一致的。
??? 通過RAC結構,可以獲得冗余,從而使得即使在一個系統crash或是不可訪問時,應用程序也可通過其他Instance訪問Database。
????3、為啥使用RAC
??? RAC可以高度利用標準的Cluster,降低模塊servers成本。
??? RAC自動的提供了服務的工作量管理。應用程序的服務可以被分組或分類,組成商業組件完成應用工作任務。RAC中的服務可以是持續的、不間斷的Database操作,并為多Instance上的多個服務提供支持。可以設計services到一個或多個Instance上運行,并且交替Instances可以用于備份Instances。如果主Instance失敗,Oracle會將services從失敗的Instance節點移動到活動的可替代的Instance上。Oracle也會自動的通過連接進行數據裝載的平衡。
??? RAC利用多個廉價的computers共同提供Database的服務,就像一個大的computer一樣,服務于只有大規模SMP才能提供的各種應用。
??? RAC是基于共享磁盤結構的,在需求上可以增加或縮減,而不需要人為的在Cluster中進行數據的分隔。并且RAC可以簡單的增加、移出Cluster中的servers。
??? 4、Clusters和可擴展性
??? 如果使用對稱多處理(symmetric multiprocessing SMP)機制能夠對應用程序提供透明的服務,則應該使用RAC也可以得到同樣的效果,而不需要進行應用程序代碼的任何改動。
??? 當一個節點發生失敗,RAC可以排除該Database Instance和node本身,從而保證Database的完整。
????下面是一些可擴展性的例子:
??? *? 允許更多并發的批處理。
??? *? 允許更大程度的并發執行。
??? *? 在OLTP系統中可以是連接的用戶大增。
????1)可擴展性的層次:主要有四個層次
??? *? hardware 的可擴展性:相互連接性是它的關鍵,這一般依賴于較高的帶寬和較低的延遲。
??? *? OS的可擴展性:在OS中,同步方法可以決定系統的可擴展性。在一些情況下,硬件的潛在可擴展性會因為OS無力并發維持請求的多個資源而被丟失。
??? *? Database管理系統的可擴展性:在并發結構中的一個關鍵因素是并發是由內部影響的還是外部進程影響的。此問題的答案影響了同步的機制。
??? *? 應用層次上的可擴展性:應用程序必須被明確的設計為可擴展的。當系統中如果多數情況下,每個session都在更新相同的data,則可能產生瓶頸。這不僅是指RAC,對于single-instance系統也是一樣。
??? 需要明確的是,如果任何一個層次沒有達到可擴展性,不管其他層次可擴展性多強,并發的Cluster進程都可能失敗。可擴展性不足的典型原因是共享資源的訪問。這使得并發的操作在此瓶頸上序列化執行。這不僅僅是RAC中的局限,而是所有結構中的局限性。
??? 2)scaleup和speedup
??? *? scaleup是工作量和資源都成比例增加時能維持相同性能水平的能力(相應時間)
??? Scaleup=(volume parallel)/(volume original)–time for ipc
??? *? speedup是指通過增加資源的數量完成固定的工作量,獲得執行時間成比例的縮減的效果。
??? Speedup=(time original)/(time parallel)–time for ipc?
??? 其中,ipc是進程間通信的簡寫——interprocess communication
?
???RAC Architecture and Concepts
??? 1、RAC軟件原理
??? 在一個RAC Instance中,會見到一些普通Instance中不存在的后臺進程,它們主要是用于維持Database在每個Instance中的一致性。管理全局資源,具體如下:
??? *? LMON:全局隊列服務監控進程——Global Enqueue Service Monitor
??? *? LMD0:全局隊列服務守護進程——Global Enqueue Service Daemon
??? *? LMSx:全局緩沖服務進程,x可以從0到j——Global Cache Service Processes
??? *? LCK0:鎖進程——Lock process
??? *? DIAG:診斷進程——Diagnosibility process
??? 在Cluster層,可以找到Cluster Ready Services軟件的主要進程,它們在所有平臺上提供標準的Cluster接口,并實現高可用性的操作。在每個Cluster node上都可以看到如下的進程:
??? *? CRSD和RACGIMON:用于高可用性操作的引擎。
??? *? OCSSD:提供成員節點和服務組的訪問
??? *? EVMD:事件檢測進程,由oracle用戶運行管理
??? *? OPROCD:Cluster的監控進程
??? 此外還存在幾個工具用于管理Cluster中全局層次上的各種資源。這些資源是ASM Instance、RAC Database、Services和CRS應用節點。本書中涉及的工具主要有Server Control(SRVCTL)、DBCA和Enterprise Manager。
??? 2、RAC軟件存儲原理
??? Oracle10g的RAC安裝分為兩個階段。第一階段是安裝CRS,其次是安裝帶有RAC組件的Database軟件并創建Cluster數據庫。CRS軟件使用的Oracle home必須不同于RAC軟件使用的home。盡管可以將Cluster中CRS和RAC軟件通過使用Cluster文件系統共享存儲,但是軟件總是按一定規則安裝在每個節點的本地文件系統中。這支持在線補丁的升級,并消除了單節點軟件造成的失敗。另外有兩個必須存儲在共享的存儲設備中:
??? *? voting file:其本質上是用于Cluster synchronization Services守護進程進行節點信息的監控。大小約為20MB。
??? *? Oracle Cluster Registry(OCR)文件:也是CRS關鍵的組成部分。用于維護在Cluster中高可用性組件的信息。例如,Cluster節點列表,Cluster數據庫Instance到節點的映射和CRS應用資源的列表(如Services、虛擬內部鏈接協議地址等)。此文件是通過SRVCTL類似的管理工具自動維護的。其大小約100MB。
??? voting file和OCR file是不能被存儲在ASM中的,因為它們必須在任何Oracle Instance啟動前就可以被訪問。并且,兩者必須是在冗余的、可靠的存儲設備中存放,如RAID。推薦最好的做法是將這些文件放在裸磁盤上。
????3、OCR的結構
??? Cluster的配置信息是在OCR中維護的。OCR依賴分布式的共享緩存結構用于優化關于Cluster知識庫的查詢。在Cluster中的每個節點都通過OCR進程訪問OCR緩存在其內存中維護著一個副本。事實上在Cluster中,只有一個OCR進程對共享存儲中的OCR進行讀寫操作。此進程負責刷新(refresh)其自己擁有的本地緩存以及Cluster中其他節點的OCR cache。對于涉及到Cluster知識庫的訪問,OCR客戶端直接訪問本地OCR進程。當客戶端需要更新OCR時,它們將通過本地OCR進程與那個扮演讀寫OCR文件的進程進行交互。
??? OCR客戶端應用有:Oracle通用安裝器(OUI)、SRVCTL、企業管理器(EM)、DBCA、DBUA、NetCA和虛擬網絡協議助理(VIPCA)。此外,OCR維護管理著CRS內部中定義的各種應用程序的資源的依賴和狀態信息,特別是Database、Instance、Services和節點的應用程序。
??? 配置文件的名字是ocr.loc,并且配置文件變量是ocrconfig_loc。Cluster 知識庫的位置是不受限于裸設備的。可以將OCR放置在由Cluster file system管理的共享存儲設備上。
??? note:OCR也可用于在ASM的單Instance中作為配置文件,每個節點有一個OCR。
??? 4、RAC Database存儲原理
??? 與single-Instance Oracle的存儲方式最主要的不同之處在于RAC存儲必須將所有RAC中數據文件存放在共享設備中(裸設備或是Cluster文件系統)以便于訪問相同Database的Instance能夠共享。必須為每個Instance創建至少兩個redo log組,并且所有的redo log組必須也存儲在共享設備中,從而為了crash恢復的目的。每個Instance的在線redo log groups被稱作一個Instance的在線redo 線程。
??? 此外,必須為每個Instance創建一個共享的undo表空間用于Oracle推薦的undo自動管理特點。每個undo表空間必須是對所有Instance共享的,主要用于恢復的目的。
??? 歸檔日志不能被存放在裸設備上,因為其命名是自動產生的,并且每個是不一致的。因此需要存儲在一個文件系統中。如果使用Cluster file system(CFS),則可以在任何時間在任何node上訪問這些歸檔文件。如果沒有使用CFS,就不得不使其他Cluster成員在恢復時那些歸檔日志是可用的,例如通過網絡文件系統(NFS)來實現。如果使用推薦的flash recovery area特性,則其必須被存儲在共享目錄下,以便于所有的Instance能夠訪問。(共享目錄可以是一個ASM磁盤組,或是一個CFS)。
????5、RAC和共享存儲技術
??? 存儲是網格技術中的關鍵組成部分。傳統上,存儲都直接依附在每個Server(directly attached to each individual Server DAS)上。在過去的幾年來,更靈活的存儲出現并得到應用,主要是通過存儲空間網絡或是正規的以太網來實現訪問。這些新的存儲方式使得多個Servers訪問相同的磁盤集合成為可能,在分布式環境中,可以獲得簡單的存取。
??? storage area network(SAN)代表了數據存儲技術在這一點的演進。傳統上,C/S系統中,數據被存儲在Server內部或是依附它的設備中。隨后,進入了network attached storage(NAS)階段,這使得存儲設備與Server和直接連接它們的網絡向分離。它在SAN遵循的原則進一步允許存儲設備存在于各自的網絡中,并直接通過高速的媒介進行交換。用戶可以通過Server系統對存儲設備的數據進行訪問,Server 系統與本地網絡(LAN)和SAN相互連接。
??? 文件系統的選擇是RAC的關鍵。傳統的文件系統不支持多系統的并行掛載。因此,必須將文件存儲在沒有任何文件系統的裸卷標或是支持多系統并發訪問的文件系統中。
??? 因此,三個主要的方法用于RAC的共享存儲有:
??? *? 裸卷標:既是一些直接附加的裸設備,需要用于存儲,并以block模式進程操作。
??? *? Cluster file system:也需要以block模式進程存取。一個或多個Cluster file 系統可以被用于存儲所有的RAC文件。
??? *? 自動存儲管理(ASM):對于Oracle Database files,ASM是一個輕便的、專用的、最佳化的Cluster file system。
??? 6、Oracle Cluster file system
??? Oracle Cluster file system(OCFS)是一個共享文件系統,專門為Oracle RAC設計。OCFS排除了Oracle Database files被連接到邏輯磁盤上的需要,并使得所有的節點共享一個ORACLE Home,而不需每個node在本地有一個副本。OCFS卷標可以橫跨一個或多共享disks,用于冗余和性能的增強。
??? 下面時可放入OCFS中的文件類表:
??
??? *? Oracle software的安裝文件:在10g中,此設置只在windows 2000中支持。說是后面的版本會提供在Linux中的支持,但我還沒具體看。
??? *? Oracle 文件(控制文件、數據文件、redo logs文件,bfiles等)
??? *? 共享配置文件(spfile)
??? *? 在Oracle運行期間,由Oracle創建的文件。
??? *? voting和OCR文件
??? Oracle Cluster file system對開發人員和用戶時免費的。可從官方網站下載。
????7、自動存儲管理(ASM)
??? 是10g的新特性。它提供了一個縱向的統一管理的文件系統和卷標管理器,專門用于建立Oracle Database 文件。ASM可以提供單個SMP機器的管理或是貫穿多個Oracle RAC的Cluster節點。
??? ASM無需再手動調節I/O,會自動的分配 I/O 負載到所有的可用資源中,從而優化性能。通過允許增加Database大小而不需shutdown數據庫來調節存儲分配,來輔助DBA管理動態數據庫環境。
??? ASM可以維護數據的冗余備份,從而提高故障的容錯。它也可以被安裝到可靠的存儲機制中。
??? 8、選擇RAW或CFS
??? *? CFS的優點:對于RAC的安裝和管理非常簡單;對RAC使用Oracle managed files(OMF);single Oracle軟件安裝;在Oracle data files上可以自動擴展;當物理節點失敗時,對歸檔日志的統一訪問。
??? *? 裸設備的使用:一般會用于CFS不可用或是不被Oracle支持的情況下;它提供了最好的性能,不需要在Oracle和磁盤之間的中間層;如果空間被耗盡,裸設備上的自動擴展將失敗;ASM、邏輯存儲管理器或是邏輯卷標管理其可以簡化裸設備的工作,它們也允許加載空間到在線的裸設備上,可為裸設備創建名字,從而便于管理。
????
?
????9、RAC的典型Cluster棧
??? 在Cluster中的每個節點都需要一個被支持的相互連接的軟件協議來支持內部Instance的交互,同時需要TCP/IP支持CRS的輪詢。所有的UNIX平臺在千兆以太網上使用user datagram protocol(UDP)作為主要的協議并進行RAC內部Instance 的IPC交互。其他支持的特有協議包括用于SCI和Sunfire的連接交互的遠程共享內存協議和超文本協議,用于超光纖交互。在任何情況下,交互必須能被平臺的Oracle所辨識。
??? 使用Oracle clusterware,可以降低安裝并支持并發癥。但如果用戶使用非以太交互,或開發了依賴clusterware的應用程序在RAC上,可能需要vendor clusterware。
??? 同交互連接一樣,共享存儲方案必須被當前平臺的Oracle所辨識。如果在目標平臺上,CFS可用,Database area和flash recovery area都可以被創建到CFS或ASM上。如果在目標平臺上,CFS不可用,則Database area可以創建在ASM或是裸設備上(需要卷標管理器)并且flash recovery area必須被創建在ASM中。
????10、RAC certification Matrix:它設計用于處理任何認證問題。可以使用matrix回答任何RAC相關的認證問題。具體使用步驟如下:
??? *? 連接并登陸 http://metalink.oracle.com
??? *? 點擊菜單欄的“certify and availability”按鈕
??? *? 點擊“view certifications by product”連接
??? *? 選擇RAC
??? *? 選擇正確的平臺
????11、必要的全局資源
??? 一個single-Instance環境,鎖坐標通向一個共享的資源就像表中的一行。lock避免了兩個進程同事修改相同的資源。
??? 在RAC環境中,內部節點的同步時關鍵,因為它維持著不同節點中各自進程的一致性,避免其在同時修改相同的資源數據。內部節點的同步確保每個Instance看到buffer cache中block的最近的版本。上圖中顯示了當不存在加鎖的情況。
??? 1)全局資源的協調
??? cluster操作要求在所有Instance中對控制共享資源的訪問進行同步。RAC使用Global Resource Directory來記錄cluster Database中資源的使用信息。Global Cache Service(GCS)和Global Enqueue Service(GES)管理GRD中的信息。
??? 每個Instance在其本地的SGA中維護GRD的一部分。GCS和GES指定一個Instance管理特殊資源的所有信息,它被稱為資源的master。每個Instance都知道resource的Instance masters。
??? 維護RAC的活動中的cache的依附性(cache coherency)是非常重要的。所謂cache coherency是保持在不同Oracle Instances中的多個block版本的一致性的技術。GCS通過所謂的cache融合算法來實現cache coherency。
??? GES管理所有非cache 融合算法的內部Instance資源操作和Oracle入隊機制的狀態軌跡。GES主要的控制的資源是字典cache locks和library cache locks。同時,它還對所有死鎖敏感的隊列和資源起到死鎖檢測的作用。
????2)Global cache coordination實例
??? 假設某data block被第一個節點修改,成為臟數據。并且在clusterwide中,只有一個block copy版本,其內容用SCN號代替了。則具體的步驟如下:
??? ① 第二個Instance視圖修改該block,向GCS提出請求。
??? ② GCS向block的holder(持有者)提交請求。在此,第一個Instance就是holder。
??? ③ 第一個Instance接到消息,并將block發送給第二個Instance。第一個Instance保存臟buffer用于恢復的目的。block的臟鏡像被稱作block的past p_w_picpath。一個past p_w_picpath block將不能進一步被改變。
??? ④收到block后,第二個Instance通知GCS,告知已經holds該block。
??? 3)write to disk coordination:example
?
????在cluster結構中的Instances中的caches中,可能存在同一個block的不同的修改版本。由GCS管理的寫協議確保了只有最近一個版本被寫入磁盤中。它同時需要確保其他之前的版本從其他cache中被清洗。一個寫磁盤的請求可以從任意一個Instance上發起,無論它是保存了block的當前版本還是過去的版本。假設第一個Instance hold過去的block鏡像,請求Oracle將buffer寫入磁盤,如上圖,過程如下:
??? ①第一個Instance發送一個寫請求給GCS
??? ②GCS將請求轉給第二個Instance,當前該block的holder
??? ③第二個Instance接到寫請求后將block寫入磁盤
??? ④第二個Instance通知GCS,告知其寫操作完成
??? ⑤當接到GCS接到通知后,GCS命令所有的過去的鏡像的holders刪除其過去的鏡像。此鏡像將不會在因恢復而需要。
????12、RAC和Instance/crash recovery
??? 1)當一個Instance失敗,當該失敗被其他Instance檢測到,第二個Instance將會執行下面的恢復操作:
??? ①在恢復的第一階段,GES重新灌入隊列
??? ②GCS也重新灌入其資源。GCS進程只重新灌入那些失去其控制的資源。在這期間,所有的GCS資源請求和寫請求都臨時被掛起。然而,事務可以繼續修改data blocks,只要這些事務已經獲得了必要的資源。
??? ③當隊列被重新配置后,一個活動的Instance可以獲得占有該Instance恢復隊列。因此,當GCS資源被重新灌入的同時,SMON確定需要被恢復的blocks的集合。這個集合被稱作恢復集。因為,使用cache 融合算法,一個Instance傳送這些blocks的內容到請求的Instance,而不需要將這些blocks寫入磁盤。這些blocks在磁盤上的版本可能不包含其他Instance進程的data的修改操作的blocks。這意味著SMON需要合并所有失敗的Instance的redo logs來確定恢復集。這是因為一個失敗的線程可能導致一個在redo 中的hole(洞)需要用指定的block填補。所以失敗的Instance的redo 線程不能被連續的應用。同時,活動的Instances的redo 線程不需恢復,因為SMON可以使用過去和當前的通信緩沖的鏡像。
??? ④用于恢復的緩沖空間被分配,并且那些之前讀取redo logs被辨識的資源被聲明為恢復資源。這避免了其他Instance訪問這些資源。
??? ⑤所有在隨后的恢復操作中需要的資源被獲得,并且GRD當前是不凍結的。任何不需恢復的data block現在可以被訪問。所以當前系統時部分可用的。此時,假設有過去或當前的blocks鏡像需要被恢復,而其在cluster Database中的其他caches中,對于這些特殊的blocks,最近的鏡像是開始恢復點。如果對于要恢復的block,過去鏡像和當前鏡像緩沖都不在活動的Instance的caches中,則SMON將寫入一個log,表明合并失敗。SMON會對第三步中辨識的每個block進行恢復和寫入,在恢復之后會馬上釋放資源,從而使更多的資源在恢復時可以被使用。
??? 當所有的block被恢復,占用的恢復資源被釋放,則系統再次可用。
??? note:在恢復中,log合并的開支和失敗的Instances的數目是成比例的,并且與每個Instance的redo logs的大小有關。
??? 2)Instance recovery和Database availability
??? 上圖顯示了在進行Instance恢復時,每一步執行時數據庫的可用程度:
??? A.? RAC運行在多節點上
??? B.? 有節點失敗被檢測到
??? C.? GRD的隊列部分被重新設置;資源管理被重新分配到活動的nodes。此操作的執行比較快
??? D.? GRD的緩沖部分被重新設置,SMON讀取失敗Instance的redo logs辨識那些需要恢復的blocks的集合
??? E.? SMON向GRD發起請求,獲得所有在需要恢復的blocks集合中的Database blocks。當請求結束,所有的其他的blocks都可被訪問了
??? F.? Oracle執行滾動的向前恢復。失敗線程的redo logs被應用到Database,并且那些被完全恢復的blocks將馬上可以被訪問
??? G.? Oracle執行滾回恢復。對于尚未提交的事務,undo blocks被應用到Database中
??? H.? Instance的恢復完成,所有的data可以被訪問
????13、有效的內部節點行級鎖
??? Oracle支持有效的行級鎖。這些行級鎖主要是在DML操作時被創建,例如UPDATE。這些鎖被持有,直到事務被提交或回滾。任何請求同行的lock的進程都將被掛起。
??? cache融合算法的塊傳輸獨立于這些user可見的行級鎖。GCS對blocks的傳輸是一個底層的操作,無需當代行級鎖被釋放就開始進行。blocks可能被從一個Instance傳輸到其他其他Instances,同時該blocks可能被加鎖。
??? GCS提供對data blocks的訪問,允許多個事務的并發進行。
????14、RAC的額外的內存需求
??? RAC特有的內存多數是在SGA創建時從shared pool中分配的。因為blocks可能跨越Instances被緩沖,必須要求更大的緩沖區。因此,當將single Instance的Database遷移到RAC中時,保持每個Instance的請求工作量都能通single-instance時的情況,則需要對運行RAC的Instance增大10%的buffer cache和15%的shared pool。這些值只是基于RAC大小的經驗,一個初始的嘗試值。一般會大于此值。
??? 如果正在使用推薦的自動內存管理特性,可以通過修改SGA_TARGET初始參數來設置。但考慮到同樣數量的user訪問被分散到多個nodes中,每個Instance的內存需求可以被降低。
??? 實際資源的使用可以通過查詢每個Instance中的GCS和GES實體中的視圖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與并發執行
??? Oracle的優化器是基于執行訪問代價的,這就考慮了并發執行的代價,并將其作為獲得理想的執行計劃的一個部件。
??? 在RAC環境中,優化器的并發選擇是由內部節點和外部節點并發兩類組成的。例如,一個特殊的查詢請求需要六個查詢進程完成,并且在本地節點有六個并發的從屬執行進程都是idle的,則查詢通過使用本地資源執行,從而獲得結果。這闡述了有效地內部節點并發,也無需多節點并發的查詢協調的開支。如果本地節點中只有兩個并發執行從屬進程可用,則這兩個進程和其他節點的四個進程共同執行查詢。在這種情況下,內部節點和外部節點并發都被使用到,從而加速查詢。
??? 在真實環境的決策支持應用程序中,查詢不能通過各種查詢servers得到較好的劃分。所以有些并發執行servers完成其任務后先于其他servers變為idle狀態。Oracle并發執行技術動態監測idle的進程,并將超載進程的隊列表中的任務分配任務給處于idle狀態的進程。這樣,Oracle有效的再分配了所有進程的查詢工作量。RAC進一步擴展這個效率到整個cluster上。
??? 16、全局動態性能視圖
??? 全局動態性能視圖顯示所有開啟并訪問RAC Database的Instances相關的信息。而標準動態性能視圖只顯示了本地Instance的相關信息。
??? 對于所有V$類型的視圖,都會對應一個GV$視圖,除了幾個別的特殊情況。除了V$視圖中的columns,GV$視圖中包含了一個名為INST_ID的額外的column,顯示了RAC中的Instance number。可以在任何開啟的Instance上訪問GV$。
??? 為了查詢GV$視圖,每個Instance上的初始PARALLEL_MAX_SERVERS初始化參數至少設置為1 。這是由于對GV$的查詢使用了特殊的并發執行。并發執行的協調者運行在客戶端連接的Instance上,并且每個Instance上分配一個slave用于查詢其潛在的V$視圖。如果有一個Instance上的PARALLEL_MAX_SERVERS被設置為0,則無法獲得該node的信息,同理,如果所有的并發servers非常忙,則也無法獲得結果。在以上兩種情況下,不會獲得提示或錯誤信息。
??? 17、RAC和Service
??? 18、虛擬IP地址和RAC
??? 當一個node完全失敗,虛擬IP地址(VIP)是關于所有有效應用的。當一個節點失敗,其相關的VIP自動的分派到cluster中的其他node上。當這種情況出現時:
??? * crs在另外一個node的網卡的MAC地址上綁定這個ip,對用戶來說是透明的。對于直接連接的客戶端,會顯示errors。
??? *? 隨后發往VIP的數據包都將轉向新的節點,它將給客戶端發送error RST返回包。從而使客戶端快速的獲得errors信息,進行對其他節點的連接重試。
??? 如果不使用VIP,則一個node失敗后,發往該節點的連接將等待10分鐘的TCP過期時間。
轉載于:https://blog.51cto.com/shocking119/1923724
總結
以上是生活随笔為你收集整理的oracle 10g real application clusters introduction (RAC原理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何利用Excel条形图形象描述项目对比
- 下一篇: python Cartopy的基础使用方