摘要:任何數據庫在長期使用過程中,都會存在一定的安全隱患。對於數據庫管理員來說不能僅寄希望於計算機操作系統的安全運行,而是要建立一整套的數據庫備份與恢復機制。當任何人為的或是自然的災難一旦出現,而導致數據庫崩潰、物理介質損壞等,就可以及時恢復系統中重要的數據,不影響整個單位業務的運作。然而如果沒有可靠的備份數據和恢復機制,就會帶來系統癱瘓、工作停滯、經濟損失等等不堪設想的後果。本文以ORACLE數據庫為例,結合醫院的業務應用環境,介紹 Oracle數據庫的備份恢復。
首先,應當制定一個嚴格的工作制度,規范化數據庫維護的工作流程。
總結實際工作中的經驗,數據庫管理員應當按照以下原則進行數據庫系統的維護:
要求:每日值班的數據庫管理員應當隨時監控主數據庫服務器、備份數據庫服務器的軟件、硬件的正常運行,一旦出現故障,應立即向領導匯報並采取相應恢復措施。
一、管理員應當每日察看數據庫的冷備份報告,出現問題及時檢查備份文件,保障每日數據庫服務器的備份正常運行。
二、當主數據庫服務器出現數據庫錯誤時,應檢查數據庫的工作狀態。如果工作不正常應及時將最新的備份數據覆蓋當前數據庫的損壞數據,並重新啟動機器,檢驗數據庫系統是否能夠自行恢復運行。如果重新啟動後數據庫系統不能正常運行,則數據庫系統文件被破壞,應重新安裝Oracle數據庫並啟用緊急恢復方案。
三、當主數據庫服務器出現硬件故障時,應在1小時內更新備份數據庫為最新數據,並啟動備份數據庫服務器,將備份數據庫服務器升級為主數據庫服務器。對於損壞的主數據庫服務器應重新安裝Oracle數據庫,並啟用緊急恢復方案。
四、當備份數據庫服務器出現數據庫錯誤時,應檢查ORACLE數據庫的工作狀態,如果工作不正常應及時將最新的備份數據覆蓋當前數據庫的損壞數據,並重新啟動機器,檢驗數據庫系統是否能夠自行恢復運行。如果重新啟動後數據庫系統不能正常運行,則數據庫系統文件被破壞,應重新安裝ORACLE數據庫並啟用緊急恢復方案。如果ORACLE工作不正常,應重新安裝Oracle數據庫並啟用緊急恢復方案。
五、當備份數據庫服務器出現硬件故障時,應盡快修復。等待硬件正常工作後,首先重新安裝ORACLE數據庫,並采用緊急恢復方案恢復Oracle數據庫。
六、每周至少三次將備份數據轉移到移動磁盤內,以防止出現自然災害的事故而導致的備份數據丟失。
1.Oracle數據庫系統的安裝
首次安裝ORACLE7.3數據庫。進入安裝光盤的NT_x86目錄,運行setup.exe,進行安裝。選擇安裝目錄:D:\ORANT(在本文中以將ORACLE數據庫安裝到D盤為例,下不累述。) 選擇安裝模式:oracle7 server product 選中:oracle7 con text option 2.0.4.0.0Oracle7 spatail data option 7.3.3.0.0. 選擇標准安裝模式。配置數據庫:在net easy config中添加本地數據庫的別名、ip地址。修改注冊表的字符集為us7ascii(根據需要)。用internal帳戶啟動當前數據庫,驗證當前數據庫已正確安裝。Shutdown當前數據庫。設置數據庫為ARCHIVELOG方式:
1)將系統設置成自動歸檔寫滿的聯機日志文件,修改參數文件D:\ORANT\Database\INITORACL.ORA文件,設置:
Log_archive_start= TRUE LOG_ARCHIVE_DEST = C:\ARCHIVE
(一般采用c:\archive,最好是與備份數據庫文件分開放置的單獨硬盤)LOG_ ARCHIVE_FORMAT = a%s(設置歸檔日志的格式:短文件名格式)
2)將系統設置成設置數據庫為ARCHIVELOG方式:
啟動INSTANCE,並MOUNT數據庫。
\ORANT\BIN>SVRMGR23 SVRMGR> connect internal PassWord: Connected. SVRMGR> startup mount Oracle instance started . Database mounted SVRMGR> alter database archivelog ; Statement processed SVRMGR> alter database open ; Statement processed . SVRMGR> exit ; Server Manager complete .
拷貝最近備份的數據文件覆蓋當前數據庫的database目錄;拷貝最近備份ARCHIVE日志覆蓋當前數據庫的ARCHIVE目錄;先將當前的 Log1orcl.ora、Log2orcl.ora、Ctrl1orcl.ora、Ctrl2orcl.ora控制文件更名為*.old文件,然後拷貝最近備份的控制文件到當前數據庫的database目錄。重新啟動服務器,以INTERNAL帳號登陸Oracle數據庫。
重新安裝ORACLE7.3數據庫。首先停止所有ORACLE服務。刪除ORACLE的所有數據文件(如:d:\orant目錄中的所有信息)。刪除注冊表的 hkey_local_Machine\software\oracle鍵值。按照首次安裝Oracle7.3數據庫的步驟進行以後的安裝。
如果安裝Oracle8i數據庫,應當注意在安裝過程中選擇合適的安裝方式、安裝路徑、選擇合適的語言格式和字符集、全局數據庫名和SID、設置各個擴展段大小和日志文件大小、SQA參數、注冊表中的語言格式應當與安裝時選擇的語言格式一致。以上參數非常重要,一旦確認安裝之後,不能再更改,否則一旦安裝完畢發現某個參數錯誤,只能整個數據庫系統重新安裝。
2. 數據庫備份方案
2.1數據文件備份
數據庫管理員需要定制詳細的備份方案,關鍵是適合的備份時間點。如果數據庫服務器是7*24小時不間斷服務,那麼至少在一周內的一、三、五的每天早、中、晚都有備份點。一般選擇在服務器不太忙的時候。結合醫院的業務要求,在早上3:00、中午13:00、晚上18:00三個時間點進行備份,因為在這幾個段內基本沒有業務進行處理,便於系統快速處理備份任務。備份任務由操作系統來調度,我們可以使用Windows2000服務器的任務調度程序來完成每天的備份安排。Oracle的orant目錄下所有數據復制到另一個磁盤空間(這裡拷貝到E:\ Orant\database\目錄中),建議存到備份服務器的一個專屬磁盤空間。
2.2日志、控制文件備份
由於日志和控制文件是Oracle數據庫在恢復時不可缺少的組成數據,應當在做數據備份時進行同步日志和控制文件的備份。為了確保安全,建議日志和控制文件備份到與數據備份不同的物理介質上。對於備份時間和備份調度,建議一天一次,同樣調度在系統閒時。由於日志和控制文件起到了增量恢復的作用,控制文件的備份點應當比數據文件的備份點多。由於控制文件小,不會占用系統資源,建議在重要的業務數據操作時間點之後緊接著進行備份。一般醫院在上午10:00、上午12:00、下午4:00、下午7:00、晚上12:00,是比較重要的數據處理節點,所以建議進行日志和控制文件的備份。
2.3備份方法
一種最簡單的備份方法:首先寫DOS復制命令形成一個bat批處理文件,然後在Windows2000系統中調度執行bat批處理文件。
3. 緊急恢復方案
一、數據庫現狀
主數據庫服務器:Mainserver ,運行Oracle 主數據庫。
備份數據庫服務器:BackServer ,存放主服務器的所有數據備份,是進行數據恢復的主要依據。
二、恢復准備
檢查當前數據庫是否已經設置為歸檔日志方式,即:察看文件D:\ORANT\Database\INITORACL.ORA中,是否設置:
Log_archive_start= TRUE LOG_ARCHIVE_DEST = C:\ARCHIVE
如果沒有進行此項設置,則無法盡行恢復。
進行恢復過程:
1. 在主數據庫服務器:MainServer上進行數據恢復
1) 重新安裝Oracle7.3,完成所有數據庫設置。
2) 先將本機中ORANT\Database\上的Log1orcl.ora、Log2orcl.ora、Ctrl1orcl.ora、Ctrl2orcl.ora控制文件更名為*.old文件。
3) 拷貝備份數據:將最新的冷備份數據拷貝到MainServer上的D:\Orant\database\ 目錄中,並覆蓋原有數據。
4) 拷貝日志和控制文件:將最近備份的控制文件拷貝到當前數據庫的database目錄,將最近備份的歸檔日志文件到本機的C:\ARCHIVE中。
5) 啟動MainServer上的數據庫服務器。
D:\ORANT\BIN>SVRMGR32 SVRMGR> connect internal PassWord: Connected. SVRMGR> startup mount ; Oracle instance started . Database mounted SQLDBA>recover database 輸入:AUTO (即自動恢復) SQLDBA>alter database open ; Statement processed . SQLDBA>exit ; Server Manager complete
6)重新啟動數據庫服務器,登陸後可正常使用。
2. 在備份數據庫服務器:BackServer上進行數據恢復
當主數據庫服務器不可用時,需要在備份數據庫服務器上進行恢復。
1)手動升級輔域服務器為主數據庫控制器
2) 停止BackServer當前數據庫服務器,重新安裝Oracle7.3
3) 先將最近備份的4個控制日志文件拷貝到BackServer上的D:\Orant\database\ 目錄中,並覆蓋已有的同名文件。再將最新的冷備份數據Copy到BackServer上的D:\Orant\database\ 目錄中。
4) 檢查C:\ARCHIVE目錄下的日志文件,如果不可用則需要拷貝主數據庫服務器上C:\ARCHIVE目錄中所有的歸檔日志到BackServer的C:\ARCHIVE目錄中。
5) 啟動BackServer上的數據庫服務器。
D:\ORANT\BIN>SVRMGR23 SVRMGR> conn䁥ct internal/oracle PassWord: CoѮnected. SVRMGR> startup mount Oracle instance started... Databasѥ mounted... SQLDBA>recover database 輸入:AUTO (即自動恢復) 等待系統完成任務後,顯示:Media recovѥry complete SQLDBA>alter database open ; Statement processed . SQLDBA>exit ; Server Manager complete
6)重新啟動數據庫服務器,登陸後可正常使用。
注意:如果恢復時的歸檔日志文件與控制文件的時間不一致,則恢復到控制文件的時間狀態。
綜上所述,得到下面的公式:恢復數據 = 冷備份數據 + 所有Archive Log文件+ 四個ORA控制文件。
不同的備份方式有不同的備份方法,正確選擇適合軟硬件環境和系統安全要求的備份方案非常重要,有時需要多種備份方式結合的方案。