雙機(jī)容錯(cuò)環(huán)境下Oracle數(shù)據(jù)庫應(yīng)用
2024-08-29 13:30:46
供稿:網(wǎng)友
目前許多建立和應(yīng)用信息系統(tǒng)的企業(yè),在系統(tǒng)應(yīng)用不斷改進(jìn)的同時(shí),開始注意提高企業(yè)信息系統(tǒng)的可用性和可靠性。通過雙機(jī)容錯(cuò)系統(tǒng)為企業(yè)提供系統(tǒng)高可用性保障是目前企業(yè)普遍采用的方法。醫(yī)療機(jī)構(gòu)工作性質(zhì)的特殊性要求其信息系統(tǒng)7天×24小時(shí)不間斷運(yùn)行,采用雙機(jī)容錯(cuò)方案為系統(tǒng)提供了高可用解決方案。本文將對醫(yī)療信息系統(tǒng)的雙機(jī)容錯(cuò)環(huán)境下oracle數(shù)據(jù)庫應(yīng)用做詳細(xì)介紹。
系統(tǒng)配置
該系統(tǒng)的硬件配置如下:
主數(shù)據(jù)庫服務(wù)器: 富士通primergy ms-610服務(wù)器(雙xeon 700mhz cpu,1gb內(nèi)存)。
數(shù)據(jù)庫備份服務(wù)器: 富士通team server c870ie gp5c875(雙pentiumⅲ 700mhz cpu,1gb內(nèi)存)。
容錯(cuò)軟件: 天地公司的slha 3.0軟件包。
磁盤陣列: iqstore r1500(帶2個(gè)scsi接口)。
線路連接: 2臺服務(wù)器用rs-232串口線和rj-45網(wǎng)絡(luò)線相連(如圖1所示)。
軟件配置如下。
操作系統(tǒng): windows nt server 4.0
服務(wù)器軟件配置: windows nt 4.0 service pack 5、internet explorer 5.0、microsoft data access component 2.0,oracle數(shù)據(jù)庫為7.3.3企業(yè)版。
雙機(jī)容錯(cuò)的實(shí)現(xiàn)
1. 操作系統(tǒng)的安裝
我們用a機(jī)表示數(shù)據(jù)庫服務(wù)器,用b機(jī)表示備份數(shù)據(jù)庫服務(wù)器。首先在物理上將所需硬件設(shè)備連接好,分別在各自服務(wù)器上安裝windows nt server 4.0操作系統(tǒng)及補(bǔ)丁包等。然后,進(jìn)入磁盤管理器,將磁盤陣列劃分為2個(gè)邏輯盤d和e,此時(shí)2臺服務(wù)器都可訪問磁盤陣列。
2.oracle數(shù)據(jù)庫的安裝
先關(guān)閉b機(jī),在a機(jī)上安裝oracle數(shù)據(jù)庫,安裝路徑默認(rèn)為d盤,歸檔日志放在e盤。安裝完畢后,將oracle的3個(gè)服務(wù)(此處sid為orcl,所以3個(gè)服務(wù)就是oracleserviceorcl、oraclestartorcl和oracletnslistener)的啟動方式改為手動并將此3個(gè)服務(wù)停止。注意: 改為手動的目的是為了讓這3個(gè)服務(wù)由雙機(jī)容錯(cuò)軟件來啟動,而不是由操作系統(tǒng)啟動。
然后,關(guān)閉a機(jī),啟動b機(jī),格式化d盤,將剛剛由a機(jī)建立在磁盤陣列上的oracle目錄也格式化掉; 在b機(jī)上安裝oracle數(shù)據(jù)庫,安裝路徑默認(rèn)為d盤,安裝完畢,同樣將oracle的3個(gè)服務(wù)的啟動方式改為手動并停止3個(gè)服務(wù)。
雙機(jī)上安裝oracle的實(shí)質(zhì)就是將oracle系統(tǒng)分別裝在2臺服務(wù)器上,而數(shù)據(jù)只存儲在磁盤陣列上。
3.雙機(jī)容錯(cuò)軟件的安裝及雙機(jī)容錯(cuò)環(huán)境的建立
雙機(jī)容錯(cuò)軟件的安裝非常簡單,只需啟動a機(jī)和b機(jī),在2臺服務(wù)器上分別安裝該軟件即可。建立雙機(jī)容錯(cuò)環(huán)境是將磁盤陣列上的d盤和e盤以及oracle 的3個(gè)服務(wù)交由雙機(jī)容錯(cuò)軟件控制,并由雙機(jī)容錯(cuò)軟件進(jìn)行切換。
在雙機(jī)容錯(cuò)軟件slha的"configuration"選項(xiàng)中將數(shù)據(jù)庫服務(wù)器設(shè)為active狀態(tài),即平時(shí)正常工作狀態(tài)時(shí),此時(shí)數(shù)據(jù)庫服務(wù)器工作,備份服務(wù)器等待。當(dāng)a機(jī)active時(shí),只有a機(jī)可以訪問磁盤陣列,b機(jī)不能訪問磁盤陣列。此時(shí),oracle數(shù)據(jù)庫服務(wù)器實(shí)際上是a機(jī),a機(jī)的ip地址就是active ip address,同時(shí)a機(jī)的主機(jī)名為active host name; 當(dāng)a機(jī)因故不能工作時(shí),a機(jī)的狀態(tài)會被"心跳線"偵測到,這時(shí)b機(jī)開始切換到active狀態(tài),接管磁盤陣列,此時(shí)的oracle數(shù)據(jù)庫服務(wù)器改為b機(jī),b機(jī)的ip地址就是active ip address,同時(shí)b機(jī)的主機(jī)名為active host name。上述操作均由系統(tǒng)自動完成,實(shí)踐證明切換所需的時(shí)間很快,對客戶端的影響很小。
需要注意的問題
1.當(dāng)在a機(jī)安裝完oracle數(shù)據(jù)庫后在b機(jī)安裝oracle數(shù)據(jù)庫時(shí),一定要先將磁盤陣列d盤格式化,而不是只將d盤中已由a機(jī)安裝的oracle數(shù)據(jù)庫刪除,否則可能會出現(xiàn)意想不到的錯(cuò)誤,例如oracle偵聽服務(wù)失敗等;
2.最終安裝好oracle數(shù)據(jù)庫后,要對d:/oracle/orant/network/admin/ listener.ora文件進(jìn)行修改,其中server名稱一定要改為active host name alias,如不進(jìn)行修改將使客戶端的oracle數(shù)據(jù)庫用戶無法連接到oracle數(shù)據(jù)庫中。
3.在hosts文件中增加一條記錄,使active ip address和active host name相互對應(yīng),這樣系統(tǒng)就會自動起到解析作用。hosts文件位于c:/winnt/ system32/drivers/etc目錄下。
4.要注意不到萬不得已,不要強(qiáng)行切換,避免產(chǎn)生數(shù)據(jù)錯(cuò)誤。如必須對雙機(jī)進(jìn)行切換,可先進(jìn)入svrmgr oracle服務(wù)器控制臺,用shutdown命令關(guān)閉oracle數(shù)據(jù)庫,再進(jìn)行切換。
雙機(jī)容錯(cuò)的原理
圖2為系統(tǒng)雙機(jī)容錯(cuò)的示意圖,從圖2可以看出2臺服務(wù)器共享一個(gè)外部存儲設(shè)備,通過心跳檢測的方法監(jiān)聽對方的工作狀態(tài),當(dāng)一臺服務(wù)器因?yàn)槟撤N原因不能提供相應(yīng)服務(wù)時(shí),另一臺服務(wù)器將啟動相應(yīng)服務(wù)功能,使主服務(wù)器提供的應(yīng)用繼續(xù)運(yùn)行。
圖2中的2臺服務(wù)器安裝相同的操作系統(tǒng)(硬件配置不必相同),如windows nt server 4.0,每臺服務(wù)器安裝2塊網(wǎng)卡。服務(wù)器的一塊網(wǎng)卡連接交換機(jī),與局域網(wǎng)相連(即圖2中public net); 另一塊網(wǎng)卡和對方服務(wù)器的一塊網(wǎng)卡相連,構(gòu)成private net; 同時(shí)2臺服務(wù)器由串口線相連,2臺服務(wù)器間相連的串口線和服務(wù)器之間的rj-45網(wǎng)線共同構(gòu)成2臺服務(wù)器之間的"心跳線"。2臺服務(wù)器就是通過心跳線來互相監(jiān)聽對方工作狀態(tài)的。注意: 同時(shí)采用網(wǎng)線和串口線組成"心跳線"的目的是為了確保"心跳線"的冗余。圖2中的public drives(即雙機(jī)共享磁盤陣列)是2臺服務(wù)器都可以訪問的磁盤,它實(shí)際上是一臺磁盤陣列柜,由六塊scsi硬盤組成。磁盤陣列通過scsi電纜分別連向2臺服務(wù)器。2臺服務(wù)器共用一個(gè)active ip地址和active host name。當(dāng)某臺服務(wù)器active(即激活)時(shí),active ip address和active host name就指向那臺服務(wù)器。
雙機(jī)環(huán)境下的oracle數(shù)據(jù)庫機(jī)理
oracle數(shù)據(jù)庫安裝在磁盤陣列上(即圖2中public drives),2臺服務(wù)器都可以訪問它,但不能同時(shí)訪問。oracle server for nt主要提供3個(gè)服務(wù):oracleservicesid、oraclestartsid和oracletnslistener。在數(shù)據(jù)庫服務(wù)器正常工作時(shí),由數(shù)據(jù)庫服務(wù)器控制磁盤陣列柜,此時(shí)只有該服務(wù)器可以訪問磁盤陣列,該服務(wù)器上的oracle服務(wù)處于啟動(active)狀態(tài),此時(shí)該服務(wù)器就扮演圖2中active server的角色,備份服務(wù)器處于等待(standby)狀態(tài),即圖2中backup server。
當(dāng)數(shù)據(jù)庫服務(wù)器發(fā)生故障不能工作時(shí),雙機(jī)容錯(cuò)系統(tǒng)會檢測到數(shù)據(jù)庫服務(wù)器的狀態(tài),從而使備份服務(wù)器自動激活,接管磁盤陣列并自動啟動oracle的3個(gè)服務(wù),而對于客戶端來說,只經(jīng)歷一個(gè)短暫的服務(wù)器重啟過程,訪問的數(shù)據(jù)仍是磁盤陣列中的數(shù)據(jù)。
注意: 是雙機(jī)容錯(cuò)軟件而不是操作系統(tǒng)來控制oracle 的啟動和停止,即由雙機(jī)容錯(cuò)軟件來控制這3個(gè)oracle服務(wù)的啟動和停止,實(shí)現(xiàn)oracle數(shù)據(jù)庫在雙機(jī)之間的切換。