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