計量地磅系統(tǒng)oracle10g數(shù)據(jù)庫自動物理備份的實(shí)現(xiàn)
闡述了利用Data Guard備份原理對計量衡系統(tǒng)數(shù)據(jù)庫進(jìn)行自動物理備份的過程,Data Guard建 立了數(shù)據(jù)冗災(zāi)系統(tǒng)、實(shí)現(xiàn)數(shù)據(jù)保護(hù)、故障恢復(fù)功能。
1.前言
鲅魚圈鋼鐵分公司計量地磅數(shù)據(jù)庫采用oml- clelOg進(jìn)行數(shù)據(jù)管理,該數(shù)據(jù)庫存儲廠內(nèi)8臺地磅的數(shù)據(jù)。8臺地磅平均每天生成約1000條稱 重數(shù)據(jù)。這些數(shù)據(jù)用來與供貨單位、收貨單位和 運(yùn)輸公司等相關(guān)部門進(jìn)行結(jié)算。該計量地磅系統(tǒng) 采用B/S加C/S結(jié)構(gòu),都是通過oracle數(shù)據(jù)庫對計量 業(yè)務(wù)和計量稱重進(jìn)行管理,所以omcle數(shù)據(jù)庫對于 整個系統(tǒng)的穩(wěn)定運(yùn)行非常重要。
2 .Data Guard備份的原理
Data Guard是甲骨文公司推出的一種高可用 性數(shù)據(jù)庫方案,它是在主節(jié)點(diǎn)與備用節(jié)點(diǎn)之間, 通過重做日志來同步數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)庫快速 切換與恢復(fù)。Data Guard是在軟件上對數(shù)據(jù)庫進(jìn) 行設(shè)置,不需要額外購買任何組件。用戶能夠在 對主數(shù)據(jù)庫影響很小的情況下,實(shí)現(xiàn)主數(shù)據(jù)庫和 備用數(shù)據(jù)庫的同步。而主備庫之間的數(shù)據(jù)差異 只限于在線日志部分,因此可用作數(shù)據(jù)容災(zāi)解決 方案。
Data Guard分為物理備份和邏輯備份。物理 備份時,主備庫之間物理結(jié)構(gòu)、邏輯結(jié)構(gòu)必須保持 一致。備用庫利用主庫傳輸過來的歸檔日志做恢 復(fù)。物理備份等同于生產(chǎn)庫,能以只讀方式打開, 也可以讀寫方式打開,但是一旦以讀寫方式打開, 備用庫將不會從主數(shù)據(jù)庫接收重做數(shù)據(jù)。邏輯備 份時,要保證邏輯結(jié)構(gòu)與主庫一致,備用庫要處于 打開狀態(tài),首先從主庫歸檔日志文件中提取SQL 語句,然后在備庫上執(zhí)行SQL語句進(jìn)行恢復(fù)。因 為邏輯備份是通過SQL語句來實(shí)現(xiàn)數(shù)據(jù)同步,所 以在同步期間備庫必須保持打開狀態(tài)。
3.計量地磅系統(tǒng)oraclelOg物理備份的實(shí)現(xiàn)
采用Data Guard進(jìn)行了 oraclelOg物理備份時,首 先要保證兩臺電腦的操作系統(tǒng)一致,oracle版本也 要保持一致,oracle安裝路徑也要保持一致(不一 致時需要修改pfile參數(shù)文件,比較麻煩)。然后必 須嚴(yán)格按照下面步驟實(shí)施,每次執(zhí)行命令后,出現(xiàn) “數(shù)據(jù)庫已更改”、“數(shù)據(jù)庫巳加載”、“系統(tǒng)巳更改” 等字樣,說明修改正確。具體步驟如下:
主庫處于自動歸檔模式并設(shè)置強(qiáng)制歸檔。
登陸主庫,輸入以下命令修改主庫歸檔模式。 請輸人用戶名:sys/ansteel@aggdh as sysba //通過S(?LPluS連接數(shù)據(jù)庫連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 -Production
With the Partitioning, OLAP and Data Mining Options
SQL〉archive log list;
//查看數(shù)據(jù)庫是否是歸檔模式 SQL>shutdown immediate;
//關(guān)閉數(shù)據(jù)庫
SQL〉alter database archivielog;
//修改為自動歸檔模式
SQL〉alter database force logging;
//修改為強(qiáng)制歸檔 主庫獲取參數(shù)文件和控制文件 主庫在mount模式下,輸人以下命令,首先從 spfile上獲取參數(shù)初始化文件(spfile是二進(jìn)制,不 能直接修改),轉(zhuǎn)換為pfile文件進(jìn)行修改。然后獲 取控制文件。
SQL>startup mount;
//主庫在mount模式下
SQL〉create pfile= ’ C:pfile_aggdh.ora ’ from sp-file;
//獲取參數(shù)初始化文件
SQL> Alter database create standby controlfile as ‘c:Standby01.ctl’
//獲取控制文件 修改主庫參數(shù)文件并導(dǎo)入文件 打開pfile_aggdh.ora文件,修改參數(shù)文件,主要 是修改控制文件,日志文件的路徑。見圖1。
主庫處于停止?fàn)顟B(tài)(shutdown immediate )下, 導(dǎo)入新的參數(shù)文件。
SQL〉shutdown immediate;
//主庫在停止?fàn)顟B(tài)下
SQL> create spfile from pfile=’ C:pflle_aggdh. ora,;
//導(dǎo)入主庫新參數(shù)文件
復(fù)制主庫的數(shù)據(jù)文件和控制文件到備庫。
復(fù)制主庫的數(shù)據(jù)文件到備庫下,自己創(chuàng)建數(shù) 據(jù)文件也需要復(fù)制過去,否則無法同步(見圖2)。
復(fù)制控制文件StandbyOl.ctl到備庫中,同時將 StandhyOl.ctl在當(dāng)前目錄下復(fù)制兩份,分別改名為 Standby02.ctl,Standby03 .ctl。見圖 3。
修改參數(shù)文件并導(dǎo)入備庫 修改參數(shù)文件,主要是修改控制文件,日志文 件的路徑,見圖4。
備庫在停止?fàn)顟B(tài)(shutdown immediate)下,導(dǎo) 入生成備庫參數(shù)文件。
SQL> shutdown immediate;
//備庫在停止?fàn)顟B(tài)下
SQL> create spfile from pfile= ’ C:pfile_standby.
//導(dǎo)入備庫參數(shù)文件
修改主備庫的監(jiān)聽文件和網(wǎng)絡(luò)服務(wù)名 主要修改主備庫的配置文件listener.ora,tns- names.ora,見圖 5 和圖 6。
啟動日志重做。
備庫進(jìn)入mount模式,啟動日志重做。
SQL〉startup mount;
//備庫進(jìn)入mount模式
SQL>alter database recover managed standby database disconnect from session;
//啟動日志重做
主庫啟動后,設(shè)置為允許接收歸檔,切換主庫 日志文件。
SQL>startup;
//主庫啟動
SQL> alter system set log_archive_dest_state_2= enable;
//允許接收歸檔
SQL>alter system switch logfile;
//切換主庫日志文件
4.確認(rèn)配置和維護(hù)
配置完成以后査看主庫和備庫的E;ARCH目 錄下的日志文件,比對兩個日志文件是否同步且 一致,見圖7。
還可以通過PL/SQL查看,輸入select*from v ^archive一dest_status查看是否配置完成,見圖8。
在重做日志啟動狀態(tài)下,備庫不能打開,如果 有打開操作,數(shù)據(jù)庫會報錯,出現(xiàn)正忙、關(guān)閉、卸載 等字樣。平時維護(hù)時可以通過輸入以下命令,切 換到數(shù)據(jù)庫打開模式,査看數(shù)據(jù)表中的數(shù)據(jù)是否 與主庫一致。
SQL>alter database recover managed standby database cancel;
//關(guān)閉重做日志
SQL>alter database open;
//切換備庫到打開模式
SQL>alter database recover managed standby database disconnect from session;
//打開重做日志,數(shù)據(jù)庫將自動啟動到mount
狀態(tài)。
5.結(jié)束語
計量地磅系統(tǒng)oracle數(shù)據(jù)庫Data Guard物理備 份的實(shí)現(xiàn),使每天新生成的稱重數(shù)據(jù)能夠自動備 份,而且還不影響主庫的運(yùn)行。一旦主數(shù)據(jù)庫或 者主服務(wù)器不能啟動,就可以通過備庫恢復(fù)數(shù)據(jù) 庫。提高了系統(tǒng)的容災(zāi)能力,使計量系統(tǒng)運(yùn)行更 加安全可靠。