秦四濱
摘要 使MES系統盡少的出現故障及出現故障之后的快速恢復是運維人員的一個巨大課題。本文通過對MES系統關鍵數據庫Oracle的深入研究,提出了Oracle數據庫的備份恢復策略,能夠在系統出現故障后,能夠將數據恢復到任意時間點,從而能夠幫助很好的維護MES系統的平穩運行。
關鍵詞:Oracle 備份;恢復;數據閃回
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)22-0008-02
開放科學(資源服務)標識碼(OSID):
MES是處于企業資源計劃系統和現場自動化系統之間的執行層,主要負責車間生產管理監控和調度執行,在統一的平臺上集成諸如生產監控調度、物料平衡、統計報表等管理功能,使用統一的數據庫通過網絡可以同時為生產部門、質檢部門、工藝部門等提供管理信息服務和監控服務。MES已經成為企業每天運行的必不可少的應用系統。系統一旦出現問題,如果不能盡快進行恢復,會給企業的生產和經營造成一定的影響。如何能夠使MES系統盡少的出現故障及出現故障之后的快速恢復是擺在我們運維人員的一個巨大課題。本人通過參與MES系統Oracle數據庫的深入研究,總結出一套切實可行的方法備份恢復方法- Oracle數據庫系統的備份及恢復策略的實施,在系統出現故障后,能夠將數據恢復到以前任意時間點,能夠幫助我們很好的維護MES系統的平穩運行。
1 Oracle數據庫的基本情況
MES系統的Oracle數據庫一共有2個,一個是lims系統需要的,存儲著lims系統的配置數據和每天的業務數據;數據量最龐大最核心的一個就是我們所說的TOTALPLANT數據庫,其存儲著系統的核心的模型數據和每天產生的業務數據。如Oracle數據庫出現問題,系統就將癱瘓,所以在Oracle數據庫出現故障的時候,能夠快速進行數據恢復就是非常重要的。HoneyWell公司提供了一個數據庫備份方案,對數據的恢復沒有介紹,其備份方案能對數據庫進行聯機備份,將數據文件和控制文件備份到以當前備份日期為名字的新建文件夾中,將所有的歸檔日志備份到一個固定的文件夾中。歸檔日志特別多,而我們的硬盤容量是有限的,如果一天備份一次數據的話,基本上十多天就將整個硬盤空間耗盡,這就需要每天去查看硬盤空間,刪除過時的數據文件備份和歸檔日志備份,一旦忘記刪除過時備份的話,使得以后的備份都不能進行,數據庫系統也會因為磁盤空間的不足造成宕機,使得數據庫無法正常啟動,這在我們MES系統實施初期就發生過這種現象,給系統的實施造成了不小的麻煩,對于歸檔日志的刪除還要特別小心,得判斷好日志是否有用,如果將有用的備份誤刪得話,備份也就無效了,所以制定一個完善可行的備份恢復方案是非常必要的。
2 Oracle數據庫的備份恢復策略設置
通過對Oracle數據庫聯機備份恢復的研究,對原備份腳本進行改造,開發出一套新的備份恢復策略,新策略創新的功能是將每天備份的歸檔日志存儲在當天數據備份目錄的log子目錄下,這樣在自動刪除過期數據備份時一并將過期的日志刪除,新策略能夠自動聯機備份數據,并保留我們所需要天數的備份,并自動刪除過期的數據備份和日志備份,不需要人為參與,一旦Oracle數據庫出現故障,就算所有的數據文件、控制文件、歸檔文件及聯機日志文件損壞或丟失的情況下,我們都可以通過備份數據在本機或另一臺安裝了Oracle數據庫軟件的新機器上將數據庫恢復到備份期間之內任意時間點,只要歸檔日志和聯機日志好用的狀態下,就可以將數據庫恢復到備份開始到故障點之間的任意時間點并能實現完全恢復。 下面以TOTALPLANT數據庫為例介紹一下備份,需要掌握的知識是Oracle聯機熱備技術、批處理命令的編寫、Vbs腳本文件的編寫及PL/SQL腳本的編寫技術。對TOTALPLANT數據庫進行聯機熱備共需要六個文件如下:Totalplant.cmd 設置連接數據庫的參數,備份目錄,并調用backup.cmd;Backup.cmd 通過調用Cre_tbs_backup.sql、Datedir.vbs、Predir.vbs在備份目錄中創建每一天備份的子目錄,備份數據文件和控制文件;再在備份子目錄里創建log子目錄,備份歸檔日志文件并在歸檔目錄中刪除備份過的歸檔日志文件同時刪除備份目錄下保留天數之前的備份;Cre_tbs_backup.sql 創建聯機熱備的sql腳本;Testconn.sql 判斷連接Oracle是否正確;Datedir.vbs 在備份目錄中創建每一天備份的子目錄,再在備份子目錄里創建log子目錄;Predir.vbs? 刪除保留天數之前的數據備份。通過在計劃任務中每天運行一次Totalplant.cmd,就形成一個完整的備份策略,腳本文件的代碼就不列出了,接下來探討一下數據的恢復,有了7天的備份數據我們就能對數據庫進行7天內隨心所欲的恢復了,假如有11、12、13、14、15、16、17日7天的聯機備份,在一臺只安裝了Oracle數據庫軟件的新機器上進行恢復,下面是具體的恢復的實例:恢復到13日11時30分,將11日備份的控制文件、數據文件拷貝到與原服務器相同的目錄下如:d:\oracle\oradata\PRD,將控制文件備份重新命名成實際的控制文件的名字,并拷貝成需要的份數如:將controlfile.bak變成CONTROL01.CTL和CONTROL02.CTL。將原服務器中的Oracle參數文件拷貝到相應目錄下(參數文件有pfile和spfile,我們只要一個pfile即可,如果沒有pfile可以將spfile改造成pfile)如:d:\oracle\ora92\database\initprd.ora,也可以拷貝到任意目錄,將11、12、13、14日備份目錄log子目錄下的歸檔文件拷貝到歸檔目錄如:d:\oracle\oradata\prd\log中,在命令行下執行如下:
C:\>oradim -new -sid prd -intpwd change_on_install(創建新的Oracle實例)
C:\>set oracle_sid=prd
C:\>sqlplus /nolog
SQL> startup mount pfile='d:\oracle\ora92\database\initprd.ora'
SQL> set logsource 'd:\oracle\oradata\prd\log';(設置歸檔目錄)
SQL> recover? database using backup controlfile until time '2019-3-13 11:30:00';
auto
已應用的日志。
完成介質恢復。
SQL> alter database open resetlogs;
數據庫已更改。
這樣就在另外一臺服務器上完成了對Oracle數據庫Totalplant 13日11:30狀態的重現,如果要完成完全恢復(恢復到故障點),只需要將任一天備份的數據文件和控制文件(為了恢復最快,選最后一天的備份16日)拷貝到相應目錄下,將其子目錄下的歸檔文件和原服務器下的歸檔文件拷貝到相應目錄下如:d:\oracle\oradata\prd\log,查看最晚產生的歸檔文件假設為:LOG_64385.ARC,根據序號seq64385判斷當前正在使用的聯機重做日志的序號應為:64386,用編輯工具如UltraEdit將所有創建時間晚于LOG_64385.ARC的聯機重做日志打開,察看其文件頭會發現其中有一個文件其序號為65386,將此文件改名為:LOG_64386.ARC,保存到d:\oracle\oradata\prd\log中,在命令行中執行的操作,只有一項和前面的不一樣,其他相同,不一樣的操作如下:SQL> recover automatic from 'd:\oracle\oradata\unf\log' using backup controlfile;這樣,就完成了數據庫的完全恢復,直接將數據庫恢復到故障點。
3 Oracle數據庫策略實施后的效果
對Oracle數據庫實施備份策略后,就有最近5天的備份數據,就算原數據庫服務器系統崩潰,也可以在一臺新的服務器上快速地重現數據庫。我們有時會遇到這種情況:在實施階段或系統維護時進行了誤操作將非常重要的數據刪除且提交了,怎樣才能將誤刪得數據找回了呢?一種方法是用Oracle提供的數據閃回技術,但數據閃回的時間點受Undo表空間大小的限制,另一種方法就是利用本文介紹的數據恢復得方法在一臺新機器上重建到沒有誤刪除數據時間點的狀態,通過數據庫鏈接(database link)將丟失的數據找回,這種功能非常有效,可以隨心所欲地找回我們丟失的任何數據,通過此備份恢復策略的實施,就不怕Oracle數據庫出現問題,只要有數據備份存在,出現任何問題,都能夠快速恢復。
4 結論
MES是一個非常龐大和復雜的應用系統,其在統一的集成平臺上所涉及的應用模塊和服務器也非常好之多,如何能夠有效地維護好MES系統的平穩運行是對各地區公司運維人員的巨大挑戰,本文對MES系統關鍵服務器-Oracle數據庫服務器所實施的維護策略,經過了多次測試實踐,成功實施到我公司生產環境的MES系統當中的成果,通過這些策略的實施大大提高了MES系統的穩定性和故障恢復能力,只要不是后天開發軟件程序設計的問題,系統出現故障后都能及時恢復,保障MES系統的平穩運行。
參考文獻:
[1]? Oracle OCP培訓文檔D32714 Oracle9iDBA Fundaentals 2-i.pdf.
[2]? 談竹奎,仇莉.Oracle9i數據庫管理員實用技術指南[M].中國鐵道出版社,2003.
【通聯編輯:光文玲】