目前許多建立和應用信息系統的企業,在系統應用不斷改進的同時,開始注意提高企業信息系統的可用性和可靠性。通過雙機容錯系統為企業提供系統高可用性保障是目前企業普遍采用的方法。醫療機構工作性質的特殊性要求其信息系統7天×24小時不間斷運行,采用雙機容錯方案為系統提供了高可用解決方案。本文將對醫療信息系統的雙機容錯環境下Oracle數據庫應用做詳細介紹。
系統配置
該系統的硬件配置如下:
主數據庫服務器: 富士通Primergy MS-610服務器(雙Xeon 700MHz CPU,1GB內存)。
數據庫備份服務器: 富士通Team Server C870ie GP5C875(雙PentiumⅢ 700MHz CPU,1GB內存)。
容錯軟件: 天地公司的SLHA 3.0軟件包。
磁盤陣列: IQstore R1500(帶2個SCSI接口)。
線路連接: 2台服務器用RS-232串口線和RJ-45網絡線相連。
軟件配置如下
操作系統: Windows NT Server 4.0
服務器軟件配置: Windows NT 4.0 Service Pack 5、Internet Explorer 5.0、Microsoft Data Access Component 2.0,Oracle數據庫為7.3.3企業版。
雙機容錯的實現
1. 操作系統的安裝
我們用A機表示數據庫服務器,用B機表示備份數據庫服務器。首先在物理上將所需硬件設備連接好,分別在各自服務器上安裝Windows NT Server 4.0操作系統及補丁包等。然後,進入磁盤管理器,將磁盤陣列劃分為2個邏輯盤D和E,此時2台服務器都可訪問磁盤陣列。
2.Oracle數據庫的安裝
先關閉B機,在A機上安裝Oracle數據庫,安裝路徑默認為D盤,歸檔日志放在E盤。安裝完畢後,將Oracle的3個服務(此處SID為ORCL,所以3個服務就是OracleServiceORCL、OracleStartORCL和OracleTNSlistener)的啟動方式改為手動並將此3個服務停止。注意: 改為手動的目的是為了讓這3個服務由雙機容錯軟件來啟動,而不是由操作系統啟動。
然後,關閉A機,啟動B機,格式化D盤,將剛剛由A機建立在磁盤陣列上的Oracle目錄也格式化掉; 在B機上安裝Oracle數據庫,安裝路徑默認為D盤,安裝完畢,同樣將Oracle的3個服務的啟動方式改為手動並停止3個服務。
雙機上安裝Oracle的實質就是將Oracle系統分別裝在2台服務器上,而數據只存儲在磁盤陣列上。
3.雙機容錯軟件的安裝及雙機容錯環境的建立
雙機容錯軟件的安裝非常簡單,只需啟動A機和B機,在2台服務器上分別安裝該軟件即可。建立雙機容錯環境是將磁盤陣列上的D盤和E盤以及Oracle 的3個服務交由雙機容錯軟件控制,並由雙機容錯軟件進行切換。
在雙機容錯軟件SLHA的"Configuration"選項中將數據庫服務器設為Active狀態,即平時正常工作狀態時,此時數據庫服務器工作,備份服務器等待。當A機Active時,只有A機可以訪問磁盤陣列,B機不能訪問磁盤陣列。此時,Oracle數據庫服務器實際上是A機,A機的IP地址就是Active IP Address,同時A機的主機名為Active Host Name; 當A機因故不能工作時,A機的狀態會被"心跳線"偵測到,這時B機開始切換到Active狀態,接管磁盤陣列,此時的Oracle數據庫服務器改為B機,B機的IP地址就是Active IP Address,同時B機的主機名為Active Host Name。上述操作均由系統自動完成,實踐證明切換所需的時間很快,對客戶端的影響很小。
需要注意的問題
1.當在A機安裝完Oracle數據庫後在B機安裝Oracle數據庫時,一定要先將磁盤陣列D盤格式化,而不是只將D盤中已由A機安裝的Oracle數據庫刪除,否則可能會出現意想不到的錯誤,例如Oracle偵聽服務失敗等;
2.最終安裝好Oracle數據庫後,要對D:OracleOrant etworkAdmin Listener.ora文件進行修改,其中Server名稱一定要改為Active host name Alias,如不進行修改將使客戶端的Oracle數據庫用戶無法連接到Oracle數據庫中。
3.在Hosts文件中增加一條記錄,使Active IP Address和Active Host Name相互對應,這樣系統就會自動起到解析作用。Hosts文件位於c:Winnt system32driversetc目錄下。
4.要注意不到萬不得已,不要強行切換,避免產生數據錯誤。如必須對雙機進行切換,可先進入Svrmgr Oracle服務器控制台,用Shutdown命令關閉Oracle數據庫,再進行切換。
雙機容錯的原理
2台服務器共享一個外部存儲設備,通過心跳檢測的方法監聽對方的工作狀態,當一台服務器因為某種原因不能提供相應服務時,另一台服務器將啟動相應服務功能,使主服務器提供的應用繼續運行。
2台服務器安裝相同的操作系統(硬件配置不必相同),如Windows NT Server 4.0,每台服務器安裝2塊網卡。服務器的一塊網卡連接交換機,與局域網相連(即圖2中Public Net); 另一塊網卡和對方服務器的一塊網卡相連,構成Private Net; 同時2台服務器由串口線相連,2台服務器間相連的串口線和服務器之間的RJ-45網線共同構成2台服務器之間的"心跳線"。2台服務器就是通過心跳線來互相監聽對方工作狀態的。注意: 同時采用網線和串口線組成"心跳線"的目的是為了確保"心跳線"的冗余。圖2中的Public Drives(即雙機共享磁盤陣列)是2台服務器都可以訪問的磁盤,它實際上是一台磁盤陣列櫃,由六塊SCSI硬盤組成。磁盤陣列通過SCSI電纜分別連向2台服務器。2台服務器共用一個Active IP地址和Active Host Name。當某台服務器Active(即激活)時,Active IP Address和Active Host Name就指向那台服務器。
雙機環境下的Oracle數據庫機理
Oracle數據庫安裝在磁盤陣列上,2台服務器都可以訪問它,但不能同時訪問。Oracle Server for NT主要提供3個服務:OracleServiceSID、OracleStartSID和OracleTNSlistener。在數據庫服務器正常工作時,由數據庫服務器控制磁盤陣列櫃,此時只有該服務器可以訪問磁盤陣列,該服務器上的Oracle服務處於啟動(Active)狀態,此時該服務器就扮演Active Server的角色,備份服務器處於等待(Standby)狀態,即圖2中Backup Server。
當數據庫服務器發生故障不能工作時,雙機容錯系統會檢測到數據庫服務器的狀態,從而使備份服務器自動激活,接管磁盤陣列並自動啟動Oracle的3個服務,而對於客戶端來說,只經歷一個短暫的服務器重啟過程,訪問的數據仍是磁盤陣列中的數據。
注意: 是雙機容錯軟件而不是操作系統來控制Oracle 的啟動和停止,即由雙機容錯軟件來控制這3個Oracle服務的啟動和停止,實現Oracle數據庫在雙機之間的切換。