oracle_11g_R2_RAC原理解讀_第1頁(yè)
oracle_11g_R2_RAC原理解讀_第2頁(yè)
oracle_11g_R2_RAC原理解讀_第3頁(yè)
oracle_11g_R2_RAC原理解讀_第4頁(yè)
oracle_11g_R2_RAC原理解讀_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、oracle11gRAC的一些基本概念(一)總的來說,oracle11gr2RAC提供了以下功能:高可用:shared-everything模式保證了單節(jié)點(diǎn)的故障不會(huì)停止服務(wù),集群中的其他節(jié)點(diǎn)將快速接管可擴(kuò)展性:多節(jié)點(diǎn)分擔(dān)負(fù)載,可以提供遠(yuǎn)超單機(jī)數(shù)據(jù)庫(kù)能提供的處理能力。且增刪節(jié)點(diǎn)可以在線完成,不需要停機(jī)易用性:多個(gè)數(shù)據(jù)庫(kù)可以加入到一個(gè)集群中低成本:RAC可以部署在標(biāo)準(zhǔn)硬件上,硬件上節(jié)省的成本抵消了購(gòu)買license的成本Oracle11gr2還提供了一個(gè)叫RACOneNode的新功能。Oracle發(fā)現(xiàn)一些RAC的部署純粹只是為了高可用,而虛擬化越來越多的被用戶所使用,并成為了一個(gè)新的趨勢(shì)。Ora

2、cleOneNode建立在以下基礎(chǔ)之上:OracleClusterware、OracleASM、Oracledatabase0我們?cè)賮砜匆谎跼AC的結(jié)構(gòu)圖相比較單機(jī)數(shù)據(jù)庫(kù),RAC需要一個(gè)共享存儲(chǔ);一個(gè)私有網(wǎng)絡(luò)來進(jìn)行集群內(nèi)部通訊;一個(gè)公有網(wǎng)絡(luò)來連接應(yīng)用和客戶端;配置虛擬IP來提高節(jié)點(diǎn)故障時(shí)的連接速度,當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)故障,它的虛擬ip立即指向其他節(jié)點(diǎn)的ip上(若不配置vip,當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),新的連接將會(huì)發(fā)生等待,直到與該節(jié)點(diǎn)ip的通訊出現(xiàn)timeout)。Failover的連接配置有兩種連接方式可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接的failoverTAF(TransparentApplicationFailo

3、ver)讓我們看一下官方文檔。TAF讓OracleNet將一個(gè)失效的連接從故障點(diǎn)轉(zhuǎn)移到另一個(gè)監(jiān)聽上,用戶能使用這個(gè)新的連接來繼續(xù)未完成的工作,這是一個(gè)client端的功TAF可以配置為使用client端的(TransparentNetworkSubstrate)TNS連接字符串來連接,或者使用server端的服務(wù)。如果兩種方式同時(shí)使用,貝U使用server端的服務(wù)配置。TAF可以工作在兩種模式下:sessionfailover和selectfailover。前者在failover時(shí)會(huì)重建失敗的連接,后者則能夠繼續(xù)進(jìn)程中未完成的查詢(如果failover前一個(gè)session正在從一個(gè)游標(biāo)中獲取數(shù)

4、據(jù),則新的session將在相同的snapshot下重新運(yùn)行select語句,并返回余下的彳亍)。如果failover時(shí),session執(zhí)行了DML操作且未提交,則failover后,若不執(zhí)行rollback回滾而執(zhí)行新的操作,將會(huì)收到一條錯(cuò)誤信息ORA-25402:transactionmustrollbackTAF在dataguard中使用,可以自動(dòng)進(jìn)行failover一個(gè)典型的使用了TAF的TNS連接串如下:NEWSDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)(ADDRESS=(PROTOCOL=TCP

5、)(HOST=rac2-vip)(PORT=1521)(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=dyora)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5)failovermode參數(shù)介紹failover_mode參數(shù)說明BACKUP備用連接的網(wǎng)絡(luò)服務(wù)名。若使用了preconnect的連接方法,則需要指定這個(gè)參數(shù)DELAY連接重試的時(shí)間間隔(秒)。如果指定了RETRIES參數(shù),若不指定該參數(shù),默認(rèn)為1秒。若注冊(cè)了callback,

6、該參數(shù)將被忽略METHOD設(shè)置failover方法。basic:failover時(shí)才嘗試連接備用頭例的監(jiān)聽;preconnect:每次連接數(shù)據(jù)庫(kù)時(shí),都會(huì)在備用實(shí)例上也產(chǎn)生一個(gè)連接,以實(shí)現(xiàn)更快的切換RETRIESfailover后,嘗試連接的次數(shù)。如果指定了DELAY參數(shù),則RETRIES默認(rèn)為5次。若注冊(cè)了callback,則該參數(shù)將被忽略TYPEOCI默認(rèn)提供了3種類型:session:若用戶連接丟失,將在備用節(jié)點(diǎn)上重新創(chuàng)建;select:除了重建連接外,將繼續(xù)從打開的游標(biāo)中獲取數(shù)據(jù),如果采用這種方式,普通select操作也將在客戶端產(chǎn)生開銷;none:默認(rèn)值,也可顯示指定來禁用failov

7、er功能FCF(FastConnectFailover)oraclellg提供了FCF方式連接數(shù)據(jù)庫(kù),它支持JDBCThin和JDBCOCI驅(qū)動(dòng);與連接緩存(implicitconnectioncache)協(xié)同工作提供更高的連接性能和高可用;可以在應(yīng)用代碼中設(shè)置,無需另外配置需要的條件:?jiǎn)⒂昧穗[含連接緩存,F(xiàn)CF需要與JDBC的連接緩存機(jī)制共同工作,為應(yīng)用管理連接以確保高可用;應(yīng)用使用服務(wù)名而非服務(wù)標(biāo)識(shí)符來連接數(shù)據(jù)庫(kù);JDBC運(yùn)行的節(jié)點(diǎn)上配置并啟用了OracleNotificationService(ONS);JDBC例程運(yùn)行的java虛擬機(jī)必須包含oracle.ons.oraclehome并

8、指向ORACLE_HOME例子:配置ONSods.setONSConfiguration(nodes=:4200,:4200);啟用FCF/declaredatasourceods.setUrl(jdbc:oracle:oci:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=service_name);ods.setUser(scott);ods.setConnectionCachingEnabled(true);ods.setFastConnectio

9、nFailoverEnabled(true):ctx.bind(myDS,ods);ds=(OracleDataSource)ctx.lookup(MyDS);tryds.getConnection();/transparentlycreatesandaccessescachecatch(SQLExceptionSE看糊涂了?上面的java代碼包含一個(gè)異常處理。工作過程如下:一個(gè)實(shí)例宕掉了,在緩存中留下一些過期連接RAC產(chǎn)生一個(gè)事件,并將其發(fā)送給包含JDBC的java虛擬機(jī)JVM中的后臺(tái)線程找出所有受到該RAC事件影響的所有連接,通過sql異常(ORA-17008)通知它們關(guān)閉連接,并回滾事務(wù)

10、連接接收到sql異常并重新執(zhí)行失敗的操作FCF與TAF相比有如下不同:FCF支持應(yīng)用級(jí)別的連接重試,由應(yīng)用來決定failover時(shí)如何處理,是重新執(zhí)行,還是拋出異常;TAF只能在OCI/NET的層面進(jìn)行重新連接FCF與連接緩存很好地結(jié)合起來,讓連接緩存管理器來管理緩存,失敗的連接在緩存中會(huì)自動(dòng)失效。而TAF在網(wǎng)絡(luò)層面做預(yù)連接,當(dāng)一個(gè)連接失效,連接緩存不能檢測(cè)到FCF基于OracleRAC事件,可以快速為活躍/閑置的連接檢測(cè)到故障FCF通過實(shí)例的UP事件實(shí)現(xiàn)負(fù)載均衡,分配到在線的RAC實(shí)例中oracle建議不要在一個(gè)應(yīng)用中同時(shí)使用TAF和FCForacle11gRAC的一些基本概念(二)HIMV

11、I/j配置Active/active集群在這種模式下,所有的節(jié)點(diǎn)都能提供服務(wù)(不會(huì)有用戶請(qǐng)求在standby上被閑置的情況)。大部分案例中,集群成員的硬件配置都是相同的,避免可能的性能問題,也更容易實(shí)現(xiàn)負(fù)載均衡。Active/active集群需要更復(fù)雜的管理軟件來管理所有資源,比如磁盤和內(nèi)存需要在所有節(jié)點(diǎn)間進(jìn)行同步。更常見的,一個(gè)私有網(wǎng)絡(luò)被用做心跳連接。集群管理軟件必須能夠檢測(cè)到節(jié)點(diǎn)問題,比如節(jié)點(diǎn)故障或者集群通訊問題腦裂(split-brain)是集群中的一個(gè)糟糕的情況:集群中的所有集群正在工作的時(shí)候,內(nèi)部通訊被斷開。這種情況下,集群被分成了幾個(gè)部分,每個(gè)部分的集群軟件都會(huì)嘗試去接管其他節(jié)點(diǎn)的

12、資源,因?yàn)樵谒磥?,別的節(jié)點(diǎn)發(fā)生了故障??赡軙?huì)出現(xiàn)以下問題:如果應(yīng)用能夠正常連接集群的這些部分,因?yàn)榇藭r(shí)這些集群部分不同步,可能會(huì)有不同的數(shù)據(jù)會(huì)被寫入到磁盤中。腦裂對(duì)集群的危害顯而易見,集群軟件的供應(yīng)商必須提供方案來解決這個(gè)問題oracle的集群軟件(11g中的GridInfrastructure),使用一個(gè)仲裁設(shè)備(quorumdevice),稱作votingdisk,來決定集群中的成員。集群中的所有節(jié)點(diǎn)共享一個(gè)votingdisk,當(dāng)一個(gè)節(jié)點(diǎn)不能向內(nèi)部網(wǎng)絡(luò)和votingdisk發(fā)送心跳時(shí),它就會(huì)被逐出集群。若一個(gè)節(jié)點(diǎn)不能和其他節(jié)點(diǎn)通訊,但依然能連接到votingdisk,集群在這種情況下將

13、進(jìn)行投票,并發(fā)出指令將該節(jié)點(diǎn)剔除。這個(gè)投票使用的是STONITH方式,軟件將發(fā)出一個(gè)請(qǐng)求,使被踢出的節(jié)點(diǎn)自動(dòng)重啟。當(dāng)需要重啟的節(jié)點(diǎn)hung住的時(shí)候,重啟指令變得不可用,這種情況比較棘手。幸運(yùn)的是,若硬件允許,GridInfrastructure可以支持IPMI(智能平臺(tái)管理接口),可以向一個(gè)節(jié)點(diǎn)發(fā)出結(jié)束指令。當(dāng)一個(gè)節(jié)點(diǎn)故障或被踢出集群,剩余的節(jié)點(diǎn)能夠接管用戶服務(wù)請(qǐng)求。配置Active/passive集群一個(gè)active/passive集群工作方式與active/active不同。一個(gè)active/passive集群中的成員硬件配置依然應(yīng)該一致或基本一致,但同一時(shí)間兩個(gè)節(jié)點(diǎn)中只有一個(gè)節(jié)點(diǎn)能處理用

14、戶請(qǐng)求。集群管理軟件會(huì)不斷地監(jiān)控集群中資源的健康狀況,當(dāng)一個(gè)資源失敗,集群管理軟件會(huì)嘗試將該資源重啟數(shù)次,若還是無效,備用節(jié)點(diǎn)將進(jìn)行接管。根據(jù)安裝時(shí)的選項(xiàng),集群的資源可以分配在共享存儲(chǔ)或文件系統(tǒng)上,后者在資源failover的時(shí)候也會(huì)進(jìn)行一次failover。使用共享文件系統(tǒng)比使用非共享的文件系統(tǒng)更有優(yōu)勢(shì),后者在重新掛載到standby節(jié)點(diǎn)上以前可能需要進(jìn)行fsck(8)檢測(cè)。Veritas集群套件、Sun(Oracle)集群和IBM的HACMP就可用作安裝active/passive集群的集群管理工具。鮮為人知的是,使用OracleGridInfrastructure來安裝一個(gè)active/

15、passive集群非常簡(jiǎn)單,利用GridInfrastructure的應(yīng)用程序接口和作為集群邏輯卷管理器的OracleASM,可以輕松地不間斷監(jiān)控一個(gè)單實(shí)例oracle數(shù)據(jù)庫(kù)。當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障,數(shù)據(jù)庫(kù)會(huì)自動(dòng)遷移到備用節(jié)點(diǎn)。根據(jù)初始化參數(shù)fast_start_mttr_target和恢復(fù)集的大小,這個(gè)故障切換可能非常迅速。不過,作為failover過程的一部分,用戶的數(shù)據(jù)庫(kù)連接將被斷開。Active/passive模式可以通過將active_instance_count參數(shù)設(shè)置為1來打開,但僅當(dāng)節(jié)點(diǎn)數(shù)為2時(shí)才有效。配置Shared-All架構(gòu)一個(gè)所有節(jié)點(diǎn)同時(shí)訪問共享存儲(chǔ)和數(shù)據(jù)的集群被稱為sha

16、red-all或者shared-everything結(jié)構(gòu)。OracleRAC就是基于shared-everything架構(gòu):一個(gè)數(shù)據(jù)庫(kù)位于共享存儲(chǔ)中,通過集群各個(gè)節(jié)點(diǎn)上運(yùn)行的實(shí)例來訪問。在Oracle術(shù)語中,一個(gè)實(shí)例由內(nèi)存結(jié)構(gòu)和一些進(jìn)程組成。對(duì)應(yīng)的,數(shù)據(jù)庫(kù)存儲(chǔ)在磁盤中的數(shù)據(jù)文件里。在RAC中,實(shí)例的故障并不意味著該實(shí)例管理的數(shù)據(jù)的丟失。在一個(gè)節(jié)點(diǎn)發(fā)生故障后,集群中的另一個(gè)實(shí)例將會(huì)進(jìn)行實(shí)例恢復(fù),所有剩余節(jié)點(diǎn)都將繼續(xù)服務(wù)。使用高可用技術(shù),例如FCF或TAF,可以將實(shí)例失效對(duì)用戶造成的影響降到最低。故障節(jié)點(diǎn)最后將重新加入集群并分擔(dān)工作量。配置Shared-Nothing架構(gòu)在一個(gè)shared-not

17、hing數(shù)據(jù)庫(kù)集群中,每個(gè)節(jié)點(diǎn)有它私有的獨(dú)立存儲(chǔ),其他節(jié)點(diǎn)不能訪問。數(shù)據(jù)庫(kù)被集群中的節(jié)點(diǎn)分割成幾個(gè)部分,返回的查詢結(jié)構(gòu)集是各個(gè)節(jié)點(diǎn)結(jié)果集的結(jié)合。丟失一個(gè)節(jié)點(diǎn)會(huì)導(dǎo)致對(duì)應(yīng)的數(shù)據(jù)無法訪問。因此,一個(gè)shared-noting集群經(jīng)常被實(shí)施成一些單獨(dú)的active/passive或者active/active集群來增強(qiáng)可用性。MySQL的集群就是基于shared-nothing架構(gòu)。RAC的主要概念集群節(jié)點(diǎn)集群由單獨(dú)的節(jié)點(diǎn)組成,在OracleRAC中,允許的節(jié)點(diǎn)數(shù)和集群版本有關(guān),公開文檔中說明Oracle10.2集群軟件支持100個(gè)節(jié)點(diǎn),而10.1支持63個(gè)實(shí)例。即使當(dāng)個(gè)節(jié)點(diǎn)發(fā)生故障后,基于RAC上的

18、應(yīng)用能繼續(xù)運(yùn)行,還是應(yīng)該花點(diǎn)精力來確認(rèn)數(shù)據(jù)庫(kù)服務(wù)器中的單個(gè)組件不會(huì)出現(xiàn)單點(diǎn)故障(SPOF)。采購(gòu)新的硬件時(shí)應(yīng)該采用可熱插拔的組件,比如內(nèi)置磁盤和風(fēng)扇,另外,服務(wù)器的電力供給、主機(jī)總線適配器、網(wǎng)卡和硬盤都應(yīng)該做了冗余??赡艿脑?,最好做一個(gè)邏輯綁定,比如硬盤硬件RAID或軟件RAID、網(wǎng)卡綁定、存儲(chǔ)網(wǎng)絡(luò)的多路徑。在數(shù)據(jù)中心也應(yīng)該注意:要使用不間斷的電源供應(yīng)、足夠的散熱措施、服務(wù)器的專業(yè)上架。最好還能有個(gè)遠(yuǎn)程的lights-out管理控制臺(tái),當(dāng)一個(gè)節(jié)點(diǎn)不知道由什么原因掛起,可能迫切需要進(jìn)行故障排除或者重啟。內(nèi)部互聯(lián)集群內(nèi)部互聯(lián)是OracleRAC的特征之一。它不僅使得集群在不同實(shí)例間傳遞數(shù)據(jù)塊時(shí)突破

19、blockpinging算法的限制,它還可用作心跳和常規(guī)通訊。連接失敗將導(dǎo)致集群的重組來避免腦裂發(fā)生,GridInfrastructure將使一個(gè)或多個(gè)節(jié)點(diǎn)重啟??梢詾镽AC和GridInfrastructure配置一個(gè)單獨(dú)的連接,這種情況下你需要配置RAC來使用正確的連接。這個(gè)連接始終應(yīng)該是私有的,不應(yīng)該受到其他網(wǎng)絡(luò)的干擾。RAC用戶可以使用兩種技術(shù)來實(shí)現(xiàn)內(nèi)部互聯(lián):以太網(wǎng)和Infiniband。使用基于以太網(wǎng)的內(nèi)部互聯(lián)使用10G以太網(wǎng)作為集群內(nèi)部互聯(lián)可能是目前使用最多的,集群的后臺(tái)進(jìn)程使用TCP/IP進(jìn)行通信。CacheFusion(用來保持緩存的一致性)使用另一種通信方式:UDP(User

20、Data該ramProtocol)。UPD和TCP同屬于傳輸層,后者面向連接,使用顯式的通訊握手來保證網(wǎng)絡(luò)數(shù)據(jù)包按順序到達(dá),并轉(zhuǎn)發(fā)失敗的數(shù)據(jù)包。UDP則不包含狀態(tài),它是一個(gè)發(fā)完就忘(fire-and-forget)協(xié)議。UDP只是簡(jiǎn)單發(fā)送一個(gè)數(shù)據(jù)包到目的地。UDP比起TCP而言主要的好處是它比較輕便。注意:兩節(jié)點(diǎn)集群間應(yīng)該避免使用交叉線來直連,集群的內(nèi)部通訊必須經(jīng)過交換,交叉電纜的使用應(yīng)該被明確禁止!使用jumboframes可以使集群內(nèi)部通信的效率和性能得到提升。EthernetFrames可以使用不同的大小,一般被限制在1500byte字節(jié)(MTU值)??蚣艽笮Q定了單個(gè)以太網(wǎng)框架能夠傳送

21、多少數(shù)據(jù),一個(gè)框架承受越大的數(shù)據(jù)負(fù)荷,服務(wù)器和交換機(jī)需要做的工作就越少,提供了更高的通訊效率。許多交換機(jī)允許在一個(gè)框架中容納比標(biāo)準(zhǔn)MTU值更大的字節(jié)數(shù)(1500-9000),也叫jumboframe。注意jumboframes是不能路由的,因此它不能被使用在公共網(wǎng)絡(luò)上。當(dāng)決定使用jumboframes時(shí),一定要確定集群中的所有節(jié)點(diǎn)使用同樣的MTU。剛才說過數(shù)據(jù)庫(kù)服務(wù)器的相關(guān)組件應(yīng)該有一個(gè)容易,網(wǎng)卡也是其中之一。多個(gè)網(wǎng)絡(luò)端口可以在linux中使用bonding技術(shù)綁成一個(gè)邏輯單位,和很多其他操作系統(tǒng)不同,linux中網(wǎng)卡的綁定不需要購(gòu)買其他軟件就能實(shí)現(xiàn)。使用基于Infiniband的內(nèi)部互聯(lián)In

22、finiband常被用來實(shí)現(xiàn)遠(yuǎn)程內(nèi)存直接訪問(RDMAremotedirectmemoryaccessarchitecture)。這是一個(gè)高速互聯(lián),常與高性能計(jì)算(HPC)環(huán)境聯(lián)系在一起。RDMA可以在集群的節(jié)點(diǎn)間使用并行、直接、內(nèi)存到內(nèi)存的傳輸,它需要專門的RDMA適配器、交換機(jī)和軟件。它還能避免基于以太網(wǎng)的實(shí)現(xiàn)中的CPU處理和環(huán)境轉(zhuǎn)換的開支。在linux中有兩種途徑來實(shí)現(xiàn)Infiniband互聯(lián)。第一種叫做IPoverInfiniband(IPolB),它采用IB架構(gòu)作為鏈路控制層,使用封裝的方法實(shí)現(xiàn)IP和IB報(bào)文的轉(zhuǎn)換,從而使在以太網(wǎng)運(yùn)行的程序可以直接運(yùn)行在Infiniband上。另一個(gè)

23、方法就是使用基于Infiniband的ReliableDatagramSockets,oracle120.3開始支持這個(gè)方法。RDS可以通過OpenFabricEnterpriseDistribution(OFED)在linux和windows上實(shí)現(xiàn)。RDS的重要特征是低延遲、低開銷和高帶寬。Oracle數(shù)據(jù)庫(kù)服務(wù)器和Exadata存儲(chǔ)服務(wù)器使用了Infiniband,為集群內(nèi)的通訊提供高達(dá)40Gb/s的帶寬,這是以太網(wǎng)所不可能做到的。Infiniband為高性能展現(xiàn)了巨大的優(yōu)勢(shì),但它的成本同樣非常高昂。Clusterware/GridInfrastructureGridInfrastruct

24、ure與操作系統(tǒng)緊密結(jié)合,并提供以下服務(wù):節(jié)點(diǎn)間連接;維護(hù)集群成員;消息傳送;集群邏輯卷管理;隔離(fencing)*I/O隔離:當(dāng)集群系統(tǒng)出現(xiàn)腦裂問題的時(shí)候,我們可以通過投票算法來解決誰獲得集群控制權(quán)的問題。但是這樣是不夠的,我們還必須保證被趕出去的結(jié)點(diǎn)不能操作共享數(shù)據(jù)。這就是IOFencing要解決的問題。IOFencing實(shí)現(xiàn)有硬件和軟件2種方式:軟件方式:對(duì)于支持SCS/Reserve/Release命令的存儲(chǔ)設(shè)備,可以用SG命令來實(shí)現(xiàn)。正常的節(jié)點(diǎn)使用SCS/Reserve命令鎖住存儲(chǔ)設(shè)備,故障節(jié)點(diǎn)發(fā)現(xiàn)存儲(chǔ)設(shè)備被鎖住后,就知道自己被趕出了集群,也就是說自己出現(xiàn)了異常情況要自己進(jìn)行重啟,

25、以恢復(fù)到正常狀態(tài)。這個(gè)機(jī)制也叫作Sicide(自殺).Sun和Veritas使用的就是這種機(jī)制。硬件方式:STONITH(ShootTheOtherNodeintheHead),這種方式直接操作電源開關(guān),當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),另一個(gè)節(jié)點(diǎn)如果能偵測(cè)到,就會(huì)通過串口發(fā)出命令,控制故障節(jié)點(diǎn)的電源開關(guān),通過暫時(shí)斷電,而又上電的方式使故障節(jié)點(diǎn)被重啟動(dòng),這種方式需要硬件支持。*各個(gè)版本的Oracle集群軟件的命名如下:ProductNameCorrespondingVersionTerminalReleaseReleaseDateCommentsClusieiReadyServices10Release2

26、003Nopatchsetupdate(PSUJisavailableCusieivareiOgRelease2L2005TheIatesTPSuavailableatihetimeofwritingis10+2.04J;terminalreleaseisnetoutyet.IlgRelease1LI.1.0.72007LU,0.7.2isthelatestavailablePSUatthetimeofwriting.GridInfrastructureligRelease2Notyciknown200911.2,0.LIareibelatestPSUsavailableattheimeofw

27、ritingfordatabaseandGridInfrastructure.進(jìn)程結(jié)構(gòu)安裝結(jié)束后,會(huì)產(chǎn)生一些后臺(tái)進(jìn)程來確保集群正常工作并能夠與外部通訊。其中的一些有序linux平臺(tái)的要求需要以root用戶權(quán)限來啟動(dòng)。比如,網(wǎng)絡(luò)配置的改動(dòng)就需要更高的權(quán)限。其他后臺(tái)進(jìn)程將以grid軟件所在系統(tǒng)用戶的權(quán)限來運(yùn)行。下面的表格介紹主要的一些后臺(tái)進(jìn)程后臺(tái)進(jìn)程說明Oracle咼可用服務(wù)(OHAS)OHAS是服務(wù)器啟動(dòng)后打開的第一個(gè)GridInfrastrueture組件。它被配置為以init(l)打開,并負(fù)責(zé)生成agent進(jìn)程。OracleAgentGridInfrastrueture使用兩個(gè)oracle代

28、理進(jìn)程。第一個(gè),概括起來說,負(fù)責(zé)打開些需要訪問OCR和VOTING文件的資源。它由OHAS創(chuàng)建。第二個(gè)代理進(jìn)程由CRSD創(chuàng)建,負(fù)責(zé)打開所有不需要root權(quán)限來訪問的資源。這個(gè)進(jìn)程以GridInfrastrueture所屬用戶的權(quán)限運(yùn)行,并且負(fù)責(zé)在RAC11.1中racg所做的工作。OracleRootAgent和Oracle代理進(jìn)程類似,有兩個(gè)Root代理進(jìn)程被創(chuàng)建。最初的代理進(jìn)程由OHAS引發(fā),它為linux系統(tǒng)中需要更咼權(quán)限的資源提供初始化。創(chuàng)建的主要后臺(tái)進(jìn)程是CSSD和CRSD。反過來,CRSD將觸發(fā)另個(gè)root代理。這個(gè)代理將打開需要root權(quán)限、主要和網(wǎng)絡(luò)相關(guān)的資源集群就緒服務(wù)進(jìn)程(

29、CRSD)集群軟件的后臺(tái)主要進(jìn)程,使用oracle集群注冊(cè)信息來管理集群中的資源集群同步服務(wù)進(jìn)程(CSSD)管理集群的配置和節(jié)點(diǎn)成員Oracle進(jìn)程監(jiān)控(OPROCD)oprocd在11.1版本中負(fù)責(zé)I/O隔離。它是在補(bǔ)丁集中為linux系統(tǒng)引入的。在這個(gè)補(bǔ)丁集以前,內(nèi)核hangchecktimer模塊來做類似的任務(wù)。有趣的是,oprocd以前常被用在非linux平臺(tái)中。GridInfrastrueture用cssdagent進(jìn)程來替換了oprocd進(jìn)程。事件管理器(EVM)EVM負(fù)責(zé)發(fā)布GridInfrastrueture創(chuàng)建的事件集群時(shí)間同步服務(wù)(CTSS)CTSS服務(wù)是一個(gè)可選項(xiàng),通過網(wǎng)

30、絡(luò)時(shí)間協(xié)定服務(wù)器為集群提供時(shí)間同步,這個(gè)時(shí)間同步對(duì)RAC很重要。它可以運(yùn)行在兩種模式下:觀望或者活動(dòng)。當(dāng)NTP被激活的時(shí)候,它運(yùn)行在觀察模式,若沒有啟動(dòng)NTP,它將根據(jù)主節(jié)點(diǎn)同步所有節(jié)點(diǎn)的時(shí)間。Oracle警告服負(fù)責(zé)通過快速應(yīng)用框架發(fā)布事件的主要后臺(tái)進(jìn)程。務(wù)(ONS)在RAC11.2中,GridInfrastructure的啟動(dòng)順序有了明顯變化。代替直接通過inittab(5)打開CRS、CSS、EVM,OHAS進(jìn)程現(xiàn)在主要負(fù)責(zé)創(chuàng)建agent進(jìn)程,監(jiān)控其他節(jié)點(diǎn)的健康狀況,和打開集群資源。在非Oracle管理進(jìn)程中,NTP是一個(gè)特殊的角色,在每個(gè)集群中,它需要提供時(shí)鐘同步,GridInfrast

31、ructure也不例外。以下是11.2中GridInfrastructure的一些主要后臺(tái)進(jìn)程:ComponentLinuxProcessCommentCRScrsd.blnRunsasroot.cssocssd+bin,cssdmonitoi,andcssdagentcrssoctssd.binRimsrogEVMevrrdibin,evmloggerbinOracleAgentraa辭nt.binOiiielcRootAgentoiarootagetitRunsasrootOracleHighAvailabilitydhasdbinRunsasrootthroughiftit,themot

32、lierofdlotherGridInfrastructureprocesses.ONS/eONSOflenofimrUlbackuppiece?D刪爍ITArrhftelogDaztuDpieceB*GliT5HDstdfilewpfDATUMFersistere,ntlnlzabonparameterhie(SPFJLEJrMflErwlLfFkibadc如FUSIEIUCKChandatrkrngCHAEnACEiZDet占FLiTipcumpsetBWSEEAutcmsiriwllfgnFtipdconfroJHie胡曲卩ikVTOlMSV?Cross-platformirarrspc

33、rtnbk!dbtaiSTfiKJSjCftTFl曲ilieFLATFILEQm.打曽ASMPirsiStBintpa-anr-Etarflte(SPFttE)的型詛耐収迂OfaleASMFensJrstEntIrttiaLcoilonpasrreterfife(5PFHE)DtckupAWJKiinfTUiriLZEjuuairClirgUCKi$tr融giRryfil呻awiuOra-cleASMDytotugVokMTManageri*diunnesn/aASM建立在ASMdisk、Failuregroups、ASMdiskgroups概念的基礎(chǔ)上的。幾個(gè)ASMdisk構(gòu)成一個(gè)ASMdi

34、skgroup。與LVM類似,一個(gè)ASMdisk就相當(dāng)于LVM里的一個(gè)physicalvolume。與LVM不同的是,共享一個(gè)共同的故障點(diǎn)(例如磁盤控制器)的幾個(gè)ASMdisk可以組成一個(gè)failuregroup。一個(gè)ASMdiskgroup可以用來存儲(chǔ)物理數(shù)據(jù)庫(kù)結(jié)構(gòu):數(shù)據(jù)文件、控制文件、redo日志和其他一些文件類型。與linux里的邏輯卷管理器(LVM)相比較,diskgroup上面沒有再創(chuàng)建邏輯卷,取而代之的是,數(shù)據(jù)庫(kù)中的所有文件進(jìn)行了邏輯分組放在diskgroup上的一個(gè)目錄里。ASM中不需要文件系統(tǒng),這也是為何ASM相對(duì)傳統(tǒng)的LVM更具性能優(yōu)勢(shì)。TablespaceLogicalVo

35、lumeDataFilesFileSystemVolumeGroupPartitionPartitionPartitionPartitionBlockDevicesT/ptcalLogicalVclumeManagerconfigurationfilesarebgicallygroupedbydatabasenameASMDiskASMDiskASMDiskASMDiskPartitionPartitionParljtionPartitionASMDiskGroupOMFDataFileslyptc:EilAutomaticStorageManagementconfigurationGridI

36、nfrastructure引入了ASM集群文件系統(tǒng)(ACFS),消除了存儲(chǔ)通用用途文件的限制。ASM使用stripe-and-mirror-everything方式來提供最佳性能。ASM和ACFS的使用不受集群的限制;單實(shí)例oracle同樣可以通過它得到很多好處。技術(shù)上,OracleASM被應(yīng)用為一種特殊的Oracle實(shí)例,它有自己的SGA,但沒有持續(xù)的字典。在RAC中,每個(gè)集群節(jié)點(diǎn)有且只有一個(gè)單獨(dú)的ASM實(shí)例。當(dāng)啟動(dòng)的時(shí)候,每個(gè)實(shí)例會(huì)通過集群軟件中的初始化參數(shù)在GridInfrastructure檢測(cè)到ASM磁盤組資源。每個(gè)實(shí)例將掛載這些磁盤組。通過賦予正確的權(quán)限(ASM11.2中引入了訪問

37、控制列表(ACLs)數(shù)據(jù)庫(kù)可以訪問它們自己的數(shù)據(jù)文件。使用ASM需要應(yīng)用OMF,這意味著不同的數(shù)據(jù)庫(kù)文件管理方式。RDBMS實(shí)例中的初始化參數(shù),例女口db_create_file_dest和db_create_online_dest_n,還有db_recovery_file_dest,指定了相關(guān)的文件存儲(chǔ)在哪個(gè)磁盤組中。當(dāng)需要?jiǎng)?chuàng)建一個(gè)新的文件時(shí),OMF將以以下格式來創(chuàng)建:+diskGroupName/dbUniqueName/file_type/file_type_tag.file.inearnation給個(gè)例子:+DATA/oradb/datafile/users.293.699134381

38、ASM允許你執(zhí)行許多在線操作,在ASM11.1及更高版本中,可以以滾動(dòng)方式(rollingfashion)進(jìn)行升級(jí),最小化對(duì)數(shù)據(jù)庫(kù)的影響。ASM在裸分區(qū)級(jí)別上進(jìn)行操作;為了降低產(chǎn)品系統(tǒng)的開銷,應(yīng)該避免使用LVM2邏輯卷。在NFS上ASM同樣是被支持的。但是,代替直接掛載文件管理器給出的目錄,需要用dd工具創(chuàng)建的零填補(bǔ)文件作為ASM卷。使用NFS的時(shí)候,你需要和供貨商協(xié)商,讓他們提供最佳實(shí)踐的文檔。有特殊需求的環(huán)境,比如大于10TB數(shù)據(jù)量的海量數(shù)據(jù)庫(kù),可以在磁盤組級(jí)別從可定制的盤區(qū)(extent)大小上得到好處。一個(gè)通用的存儲(chǔ)優(yōu)化技術(shù)包括只使用磁盤邊緣位置,比使用其他位置能提供更高的性能。ASM

39、的智能數(shù)據(jù)分布允許管理員來定義具備更高速度和帶寬的熱點(diǎn)區(qū)域。經(jīng)常訪問的文件可以放置到這些位置來提高性能。硬盤制造商即將推出扇區(qū)大小為4k的硬盤,存儲(chǔ)密度增加,且更快,容量更大。ASM為此做好了準(zhǔn)備,它提供了磁盤組的一個(gè)屬性,叫sectorsize,可以設(shè)置為512字節(jié)或4k。大部分安裝中,一個(gè)典型的工作流程:存儲(chǔ)管理員提供集群的所有節(jié)點(diǎn)上用來做ASMdisk的存儲(chǔ);系統(tǒng)管理員為這些新的塊設(shè)備創(chuàng)建分區(qū),做多路徑配置,使用ASMlib或udev將這些分區(qū)后的塊設(shè)備標(biāo)記為候選磁盤;移交到數(shù)據(jù)庫(kù)小組后,Oracle管理員可以配置ASMdisk和ASM磁盤組。這些操作都可以在線完成,不需要重啟服務(wù)器。A

40、SMdiskASMdisk是ASM的基本組成單位。當(dāng)一塊ASM候補(bǔ)磁盤被添加到磁盤組中時(shí),元數(shù)據(jù)信息被寫入到它的頭部,使得ASM實(shí)例能認(rèn)出這塊磁盤并掛載到磁盤組中。在存儲(chǔ)陣列中,磁盤故障經(jīng)常發(fā)生。個(gè)別磁盤被高強(qiáng)度使用,它們發(fā)生故障是很正常的。大多數(shù)情況下,磁盤陣列能根據(jù)使用的保護(hù)級(jí)別,通過鏡像磁盤或奇偶校驗(yàn)信息來恢復(fù)發(fā)生故障的磁盤數(shù)據(jù)。ASM中的磁盤故障不經(jīng)常發(fā)生,因?yàn)榇蠖鄶?shù)情況下都是使用經(jīng)過磁盤陣列保護(hù)的LUN。但是,如果當(dāng)一個(gè)ASM保護(hù)的磁盤組中的磁盤發(fā)生了故障,需要緊急替換故障的磁盤以免它被丟棄。在ASM11.1中引入一個(gè)新的參數(shù)叫做磁盤修復(fù)時(shí)間(diskrepairtime),使管理員

41、可以修復(fù)短暫的磁盤故障,而不需要進(jìn)行一個(gè)全局的調(diào)整操作。當(dāng)一個(gè)磁盤被從一個(gè)磁盤組中添加或刪除時(shí),會(huì)發(fā)生重新調(diào)整操作,對(duì)磁盤組中的成員重新進(jìn)行條帶。根據(jù)ASM磁盤組的大小,這個(gè)調(diào)整可能會(huì)很耗時(shí)。若管理員能幸運(yùn)地在重新調(diào)整操作發(fā)生之前使故障的ASM磁盤回到磁盤組中,磁盤組將能很快恢復(fù)到正常狀態(tài),因?yàn)橹恍枰獞?yīng)用有數(shù)據(jù)改變的區(qū)域(dirtyregion)的日志即可,不需要對(duì)整體全新進(jìn)行調(diào)整。根據(jù)存儲(chǔ)后臺(tái)的使用,LUN可以通過陣列的RAID級(jí)別得到保護(hù),也可以是一個(gè)沒有經(jīng)過保護(hù)的存儲(chǔ)的集合(JBOD)。*ASMLib和udevASMLib和udev都解決了設(shè)備名固定的問題。在linux中,設(shè)備的檢測(cè)和枚

42、舉的順序并不是固定的。這和在Solaris中不一樣,舉個(gè)例子,除非一個(gè)磁盤在陣列中從物理上移動(dòng)了,否則設(shè)備名(例如cOtOd1p1)不會(huì)改變。沒做多路徑的存儲(chǔ)陣列的重新配置在linux中會(huì)有很大的問題:一個(gè)設(shè)備原先在操作系統(tǒng)中顯示為/dev/sda可能會(huì)在重啟后被重新映射為/dev/sdg,僅僅是因?yàn)椴僮飨到y(tǒng)檢測(cè)到它比上一次啟動(dòng)時(shí)晚了一點(diǎn)?;谠O(shè)備名的裸設(shè)備映射注定是要失敗的。首先看看udev的解決方法。一個(gè)SCSI設(shè)備的world-wide-ID(WWID)不會(huì)發(fā)生改變,在udev中利用了這一點(diǎn)制定一個(gè)規(guī)則,這個(gè)規(guī)則創(chuàng)建一個(gè)映射,它定義設(shè)備/dev/raw/raw1總是指向SCSIID是xx

43、xx的LUN中。udev的主要問題是,它的配置不夠直觀和易用。由于udev不能復(fù)制配置,在集群中的每個(gè)節(jié)點(diǎn)上管理員都需要去維護(hù)udev配置。(我們可以使用udevinfo-qpath-n/dev/sda1來查看/dev/sda1對(duì)應(yīng)的udev設(shè)備名,該路徑在/sys下)配置了多路徑的存儲(chǔ)則不會(huì)有這個(gè)問題,因?yàn)榱硪粋€(gè)軟件層(比如,devicemapper-multipath包)或供貨商指定的軟件會(huì)創(chuàng)建一個(gè)邏輯設(shè)備。ASMLib提供了另一種方式oASMLib工具可以在中免費(fèi)下載,它使ASM磁盤的管理變得非常簡(jiǎn)單。ASMLib由3個(gè)RPM包組成:一個(gè)內(nèi)核模塊、實(shí)際ASMLib和支持工具。在使用一個(gè)L

44、UN作為ASMdisk前,你可以使用ASMLib工具通過將元數(shù)據(jù)信息添加到磁盤頭部來標(biāo)記它,然后ASMLib就可以識(shí)別出這個(gè)新的LUN,將其作為添加到ASMdiskgroup的一個(gè)可能的候選。重啟的時(shí)候,ASMLib將掃描磁盤頭部的信息來識(shí)別ASMdisk,不管物理設(shè)備名在啟動(dòng)過程中變成了什么。它保證了設(shè)備名的穩(wěn)定性,而且成本非常低。ASMLib是一個(gè)內(nèi)核模塊,在內(nèi)部分配自己的內(nèi)存結(jié)構(gòu),它可以在單路徑和多路徑下配置。*ASMDiskGroupASM磁盤組有三個(gè)冗余級(jí)別:外部冗余;一般冗余;高度冗余當(dāng)創(chuàng)建一個(gè)外部冗余的磁盤組時(shí),ASM讓存儲(chǔ)陣列來承擔(dān)數(shù)據(jù)保護(hù)的責(zé)任,不會(huì)做任何的鏡像。它會(huì)在磁盤組

45、中的ASMdisk間做默認(rèn)盤區(qū)大小為1M的條帶。寫入錯(cuò)誤會(huì)迫使ASM磁盤被卸載。這將產(chǎn)生嚴(yán)重的后果,因?yàn)樵摯疟P上的盤區(qū)沒有任何可用的拷貝,整個(gè)磁盤組都會(huì)變得不可用。在普通冗余級(jí)別下,ASM將條帶和鏡像每個(gè)盤區(qū),在一個(gè)盤區(qū)寫入到磁盤中時(shí),會(huì)有另一個(gè)盤區(qū)寫入另一個(gè)故障組來提供冗余。在ASM11.2中,單個(gè)的文件可以用來做條帶和鏡像;默認(rèn)做一個(gè)雙向的的鏡像。普通冗余可以容忍磁盤組中的一個(gè)ASM磁盤發(fā)生故障。高度冗余提供了更高級(jí)別的保護(hù),它默認(rèn)提供條帶和鏡像,創(chuàng)建主盤區(qū)的兩個(gè)額外的拷貝,可以容忍磁盤組中兩個(gè)ASM磁盤的故障。FailureGroupFailuregroup是一個(gè)邏輯的磁盤組,當(dāng)其中一個(gè)

46、組件發(fā)生故障,整個(gè)磁盤組都將不可用。打個(gè)比方,屬于一個(gè)SCSI控制器的磁盤組成一個(gè)failuregroup,如果這個(gè)控制器發(fā)生故障,所有的磁盤都不可用。在normal和high冗余中,ASM使用failuregroup來存儲(chǔ)數(shù)據(jù)的鏡像拷貝。如果沒有明確配置,每個(gè)ASMdisk組成自己的failuregroup。Normalredundancy磁盤組需要由至少2個(gè)failuregroup來組成,highredundancy磁盤組需要至少3個(gè)。然后,建議使用比這個(gè)最小值更多的failgroup來提供額外的數(shù)據(jù)保護(hù)。ASM默認(rèn)從一個(gè)ASMdiskgroup中的primaryextent中讀取,在一個(gè)

47、extendeddistanee集群中,如果primaryextent在遠(yuǎn)程的存儲(chǔ)陣列上,可能會(huì)導(dǎo)致性能問題。ASM11.1引入了一個(gè)首選的鏡像讀取來解決這個(gè)問題:每個(gè)ASM實(shí)例都可以被指定從本地extent的拷貝中讀取,不管它是primaryextent還是copiedextent。ASM安裝與管理選項(xiàng)在Oracle11.1以前,最佳實(shí)踐是以單獨(dú)地安裝ASM,這提供了可以單獨(dú)升級(jí)集群軟件和ASM的好處。比如,集群軟件和ASM可以升級(jí)到,而數(shù)據(jù)庫(kù)還保留在原來的版本。這個(gè)最佳實(shí)踐中,有三個(gè)標(biāo)準(zhǔn)的Oracle安裝目錄:集群軟件、ASM、數(shù)據(jù)庫(kù)如果需要的話,ASM11.1可以安裝在與安裝RDBMS不

48、同的操作系統(tǒng)用戶下,Oracle對(duì)此解釋說,數(shù)據(jù)庫(kù)與存儲(chǔ)管理間的角色獨(dú)立是很多站點(diǎn)的通用實(shí)踐??梢酝ㄟ^SQL*Plus、企業(yè)管理器(dbconsole)或者DBCA來管理ASM。在Oracle11gRelease2中,ASM現(xiàn)在已經(jīng)是GridInfrastructure的一部分,不管在單實(shí)例還是RAC環(huán)境中。一個(gè)新的配置助手asmca接受并擴(kuò)展了11.1的DBCA中提供的功能。ASM也不再可以從RDBMSOraclehome以外的地方啟動(dòng)。asmca增加了對(duì)另一個(gè)叫做ASMClusterFileSystem的ASM新特性的支持。一個(gè)叫SYSASM的新的超級(jí)用戶角色的引入使角色分離成為可能,就像

49、Oracle9i以后的SYSDBA一樣。你可以將SYSASM權(quán)限綁定在不同于SYSOPER和SYSDBA用戶的角色中。oracle11gRAC的一些基本概念(四)RAC在GridInfrastructure安裝完以后,我們把注意力轉(zhuǎn)移到集群上的Oracle軟件的安裝上來。我們看到,GridInfrasctructure提供了運(yùn)行RAC的框架,包括集群通訊鏈接、節(jié)點(diǎn)分離、節(jié)點(diǎn)成員關(guān)系等服務(wù)。ASM是Oracle存儲(chǔ)數(shù)據(jù)庫(kù)的首選方式。RAC利用這些概念并擴(kuò)展了需要的基本服務(wù)。安裝選項(xiàng)成功安裝了GridInfrastructure/Clusterware以后,OracleUniversalInsta

50、ller檢測(cè)到集群環(huán)境的建立,然后提供安裝整個(gè)集群上或是用戶指定其中幾個(gè)節(jié)點(diǎn)的RAC選項(xiàng)。使用集群檢驗(yàn)工具cluvfy來為RDBMS的安裝檢測(cè)是否滿足先決條件是良好的做法。和安裝集群一樣,OracleUniversalInstaller將首先在第一個(gè)節(jié)點(diǎn)上對(duì)軟件進(jìn)行拷貝和鏈接,然后將Oracle主目錄push到指定的其他節(jié)點(diǎn)中。和GridInfrastructure不同的是,OracleRDBMS可以被安裝在共享文件系統(tǒng)上(例如OCFS2或ACFS上),在集群中增加新節(jié)點(diǎn)被簡(jiǎn)化,因?yàn)椴恍枰谛碌墓?jié)點(diǎn)上重新安裝軟件,打補(bǔ)丁同樣被簡(jiǎn)化了-只有一個(gè)Oracle主目錄需要打補(bǔ)丁。但是補(bǔ)丁不能以roll

51、ing方式安裝,因此停機(jī)時(shí)間不可避免。在安裝過程中,OracleUniversalInstaller將提醒管理員安裝或升級(jí)數(shù)據(jù)庫(kù),或只安裝軟件。如果安裝的時(shí)候有新的版本發(fā)布,那么僅僅安裝軟件,打補(bǔ)丁升級(jí)后再創(chuàng)建數(shù)據(jù)庫(kù)是比較好的做法。單實(shí)例和RAC數(shù)據(jù)庫(kù)RAC和單實(shí)例數(shù)據(jù)庫(kù)在很多重要方面都有所不同。在RAC中,一個(gè)數(shù)據(jù)庫(kù)在共享存儲(chǔ)中為多個(gè)服務(wù)器上的實(shí)例所訪問。數(shù)據(jù)庫(kù)文件、在線redo文件、控制文件和服務(wù)器參數(shù)文件(spfile)都必須共享。此外,閃回日志、已歸檔的redo日志、數(shù)據(jù)泵轉(zhuǎn)儲(chǔ)文件、和dataguardbroker配置文件也可以共享,根據(jù)你的配置來決定(這是可選的,但還是強(qiáng)烈建議這么做

52、)。在使用ASM的時(shí)候,你同樣可以在每個(gè)RAC的節(jié)點(diǎn)中找到一個(gè)本地的pfile文件,這個(gè)文件指向?qū)?yīng)磁盤組中的spfile。另一個(gè)存儲(chǔ)在本地的文件是Oracle密碼文件。集群文件系統(tǒng)中的用戶常常把這些文件放在一個(gè)共享的位置,通過符號(hào)鏈接指向$ORACLE_HOME/dbs數(shù)據(jù)庫(kù)文件數(shù)據(jù)庫(kù)文件包含數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),包括表、索引、數(shù)據(jù)字典和經(jīng)過編譯的PL/SQL代碼,不勝枚舉。在RAC中,每個(gè)數(shù)據(jù)文件都只有一個(gè)拷貝,位于共享存儲(chǔ)中,并為所有實(shí)例所訪問。Oracle默認(rèn)不為數(shù)據(jù)文件提供鏡像,大部分用戶選擇在存儲(chǔ)層面來做冗余,避免介質(zhì)故障導(dǎo)致的數(shù)據(jù)丟失。在存儲(chǔ)陣列沒有這個(gè)功能時(shí),可以使用Oracle

53、ASM來提供冗余??刂莆募刂莆募?chǔ)存數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)的相關(guān)信息,包括它們的狀態(tài)。如果你使用RMAN且沒有專門的RMANcatalog數(shù)據(jù)庫(kù),控制文件中也可以儲(chǔ)存RMAN備份的信息。在單實(shí)例數(shù)據(jù)庫(kù)和RAC中,控制文件應(yīng)該做鏡像以防止損壞或存儲(chǔ)故障。當(dāng)同時(shí)使用ASM和閃回恢復(fù)區(qū)時(shí),會(huì)自動(dòng)做多路復(fù)用。默認(rèn)情況下,Oracle在db_create_file_dest和db_recovery_file_dest指定的磁盤組中對(duì)控制文件做多路復(fù)用。這種情況下,若你使用spfile,controliles參數(shù)將自動(dòng)更新。要知道控制文件會(huì)成為RAC中的一個(gè)爭(zhēng)用點(diǎn),因?yàn)樗鼈儠?huì)被頻繁更新。因此不要對(duì)控制文件做過

54、多的鏡像拷貝,而且應(yīng)該把它們放置在高速存儲(chǔ)上。REDO和歸檔在RAC中,每個(gè)實(shí)例有它自己的聯(lián)機(jī)日志文件,稱為線程thread)。線程的信息可以在V$LOG和相關(guān)的視圖中查看。每個(gè)線程中你需要兩組redo日志,而且若沒有使用ASM和閃回恢復(fù)區(qū),你應(yīng)該考慮手動(dòng)對(duì)組中的成員做多路復(fù)用。由spfile負(fù)責(zé)實(shí)例和線程間的映射(通過初始化參數(shù)thread)0當(dāng)添加一個(gè)新的實(shí)例到集群中時(shí),就需要一個(gè)相應(yīng)的redo線程,這可以使用兩種方式來做到:第一種,執(zhí)行SQL語句alterdatabaseaddlogfilegroupxthready;第二種,在使用策略管理的數(shù)據(jù)庫(kù)(policy-managed)中,會(huì)自

55、動(dòng)創(chuàng)建。然后由Oracle來啟用。lgwr后臺(tái)進(jìn)程將redobuffer刷新到redolog中。onlineredolog需要放在高速存儲(chǔ)中,否則它可能會(huì)成為一個(gè)爭(zhēng)用的點(diǎn),特別是在一個(gè)高頻率提交的系統(tǒng)中。通常對(duì)設(shè)計(jì)不合理的應(yīng)用的優(yōu)化是減少commit的頻率,并至少將redolog和控制文件移到高速存儲(chǔ)中,以減少一些性能瓶頸。在日志切換頻繁的系統(tǒng)中,增加每個(gè)線程的重做日志組數(shù)會(huì)有所幫助,它能給歸檔進(jìn)程更多的時(shí)間來歸檔redo日志。這種方法在歸檔進(jìn)程需要將歸檔的redo傳送到standby數(shù)據(jù)庫(kù)中時(shí)也能獲益,但是,現(xiàn)在的大部分系統(tǒng)采用LogNetworkService(LNSn)進(jìn)程來異步傳送re

56、do給standby數(shù)據(jù)庫(kù)的RemoteFileServer(RFS)進(jìn)程。在Oracle10.2和11.1中,每個(gè)destination有一個(gè)LNS進(jìn)程,到了11.2,LNSn進(jìn)程被NSSn何NSAn后臺(tái)進(jìn)程所代替。NSSn進(jìn)程被用來同步傳送redo,NSAn用來異步傳送redo0redolog大小設(shè)置的原則是,日志切換不會(huì)太頻繁(AWR和statspack能夠幫助定義一個(gè)合適的大小)。Oracle11.2還允許管理員來選擇redolog的塊大小,現(xiàn)代存儲(chǔ)單元使用4kb扇區(qū)大小代替了原先的512b。當(dāng)RAC中的一個(gè)實(shí)例發(fā)生故障,所有線程被合并來幫助建立恢復(fù)集,由服務(wù)器監(jiān)控進(jìn)程來執(zhí)行前滾或回滾

57、操作。在Igwr進(jìn)程將一個(gè)redolog寫滿以后,其中一個(gè)歸檔進(jìn)程會(huì)將該文件拷貝到指定的目錄中。閃回恢復(fù)區(qū)在Oracle10.1中引入,看是來是歸檔日志的最佳存放位置。如果你沒有使用閃回恢復(fù)區(qū),建議將歸檔日志放在一個(gè)共享文件系統(tǒng)中,以便每個(gè)節(jié)點(diǎn)都可以訪問到。與單實(shí)例數(shù)據(jù)庫(kù)不同,RAC需要所有線程的歸檔日志。當(dāng)一個(gè)實(shí)例執(zhí)行介質(zhì)恢復(fù)時(shí),你可以從它的alter日志上看到,Oracle使用了每個(gè)線程的所有日志文件。Undo表空間和redo線程類似,每個(gè)集群數(shù)據(jù)庫(kù)的實(shí)例由它自己的undo表空間。spfile中配置了實(shí)例和undo表空間之間的一對(duì)一映射關(guān)系。但這個(gè)映射并不代表該undo表空間就長(zhǎng)期綁定在該

58、實(shí)例上,所有的其他實(shí)例同樣可以訪問該undo表空間來創(chuàng)建塊的讀一致前鏡像。當(dāng)添加一個(gè)實(shí)例到集群中時(shí),需要添加新的undo表空間并映射到該實(shí)例,和redolog一樣。在policy-managed數(shù)據(jù)庫(kù)中,Oracle可以自己來做這件事。雖然還是可以使用手動(dòng)的undo管理,但是強(qiáng)烈建議使用自動(dòng)undo管理(AUM)。RAC數(shù)據(jù)庫(kù)的存儲(chǔ)選項(xiàng)管理員可以在如下的選項(xiàng)中選擇:ASM這是Oracle的首選存儲(chǔ)選項(xiàng),而且是RAC標(biāo)準(zhǔn)版中支持的唯一配置OCFS2裸設(shè)備不推薦使用,不僅是因?yàn)楸恍掳娴膌inux內(nèi)核棄用,在Oracle11.2中同樣不支持網(wǎng)絡(luò)文件系統(tǒng)(NFS)RedHatGlobalFileSys

59、tem只在紅帽和OracleEnterpriseLinux中支持,可以用在閃回恢復(fù)區(qū)和數(shù)據(jù)庫(kù)文件上RAC實(shí)例一個(gè)RAC數(shù)據(jù)庫(kù)包含2個(gè)或更多的實(shí)例,一般每個(gè)實(shí)例都在不同的節(jié)點(diǎn)上,由一些共享內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程組成。每個(gè)實(shí)例都有自己的SGA,在實(shí)例啟動(dòng)的時(shí)候分配。Oracle在10g中引入了自動(dòng)共享內(nèi)存管理(ASMM),在11g中引入了自動(dòng)內(nèi)存管理(AMM)。但是AMM與linux的大頁(yè)面不兼容,這對(duì)大內(nèi)存的系統(tǒng)來說是個(gè)問題。Oracle需要同步訪問本地共享內(nèi)存和整個(gè)集群。所有實(shí)例都能訪問其他實(shí)例的SGA。在RAC中Oracle內(nèi)核對(duì)共享內(nèi)存的保護(hù)措施和單實(shí)例中是一樣的,同樣使用了閂和鎖。閂是一個(gè)低

60、級(jí)別、輕量級(jí)的串行裝置。請(qǐng)求閂的進(jìn)程不會(huì)排隊(duì),如果進(jìn)程不能獲得閂,它就會(huì)進(jìn)入spin狀態(tài)。spin的意思是,這個(gè)進(jìn)程會(huì)進(jìn)入一個(gè)緊密循環(huán)來預(yù)防被操作系統(tǒng)的調(diào)度程序從CPU中取下。如果一個(gè)進(jìn)程長(zhǎng)時(shí)間得不到閂,它會(huì)進(jìn)入睡眠,在一個(gè)時(shí)間間隔后再次嘗試申請(qǐng)。閂是實(shí)例級(jí)別的,沒有集群范圍的閂。另一方面,鎖在更長(zhǎng)的時(shí)間請(qǐng)求一次,比閂更為復(fù)雜。鎖可以是共享或獨(dú)占的,請(qǐng)求鎖的進(jìn)程以先進(jìn)先出(FIFO)的機(jī)制來等待,由隊(duì)列來控制鎖的訪問,這個(gè)隊(duì)列是集群范圍內(nèi)的。緩存一致性的需求意味著鎖和閂在RAC中比單實(shí)例要更加復(fù)雜。和單實(shí)例中一樣,對(duì)buffercache中數(shù)據(jù)庫(kù)的訪問和隊(duì)列必須在本地實(shí)例中管理,但是,遠(yuǎn)程實(shí)例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論