本發(fā)明屬于信息系統(tǒng)技術(shù)領(lǐng)域,具體涉及用電信息采集系統(tǒng)跨平臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)遷移的應(yīng)用。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,信息系統(tǒng)替換的頻率也越來(lái)越高。在系統(tǒng)替換的過(guò)程中就有必要進(jìn)行數(shù)據(jù)遷移。數(shù)據(jù)正在逐漸成為企業(yè)的核心資產(chǎn),數(shù)據(jù)的遷移成為企業(yè)時(shí)刻關(guān)注的問(wèn)題。數(shù)據(jù)遷移,是指從一種源數(shù)據(jù)庫(kù)中提取數(shù)據(jù),根據(jù)需要,遷移或者移植到目標(biāo)數(shù)據(jù)庫(kù)中,其中異構(gòu)數(shù)據(jù)庫(kù)遷移更是一項(xiàng)具有挑戰(zhàn)性的工作。異構(gòu)數(shù)據(jù)庫(kù)遷移是指各自擁有自己的應(yīng)用特性、完整性控制和安全性控制多個(gè)數(shù)據(jù)庫(kù),且在多個(gè)數(shù)據(jù)庫(kù)之間存在著以下一種或者多種異構(gòu)性:1計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu);2基礎(chǔ)操作系統(tǒng)的異構(gòu);3 DBMS本身的異構(gòu)。本次研究的背景是河北省電力公司實(shí)施的用電信息采集系統(tǒng)主站升級(jí)改造項(xiàng)目。升級(jí)改造過(guò)程中,由于新購(gòu)的SUN小型機(jī)與原生產(chǎn)庫(kù)IBM數(shù)據(jù)庫(kù)服務(wù)器屬不同的操作系統(tǒng)平臺(tái),數(shù)據(jù)庫(kù)備份系統(tǒng)備份的數(shù)據(jù),無(wú)法跨平臺(tái)恢復(fù)到SUN小型機(jī)搭建的查詢庫(kù)數(shù)據(jù)庫(kù)上,且查詢庫(kù)和生產(chǎn)庫(kù)的Oracle版本不一致。因此該次數(shù)據(jù)遷移是基于跨操作系統(tǒng)平臺(tái)與不同版本數(shù)據(jù)庫(kù)的異構(gòu)數(shù)據(jù)遷移,安全風(fēng)險(xiǎn)大,技術(shù)含量高,業(yè)務(wù)水平要求高。
對(duì)于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng),要實(shí)現(xiàn)數(shù)據(jù)共享應(yīng)當(dāng)達(dá)到兩點(diǎn),一是實(shí)現(xiàn)數(shù)據(jù)庫(kù)轉(zhuǎn)換,二是實(shí)現(xiàn)數(shù)據(jù)的透明訪問(wèn)。在數(shù)據(jù)轉(zhuǎn)換過(guò)程中,原來(lái)的生產(chǎn)庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)不能廢棄,需要遷移到新的查詢庫(kù)數(shù)據(jù)庫(kù)中繼續(xù)發(fā)揮作用。將現(xiàn)有生產(chǎn)庫(kù)數(shù)據(jù)中有效數(shù)據(jù)導(dǎo)入查詢庫(kù)中,對(duì)系統(tǒng)切換及新系統(tǒng)上線運(yùn)行有著重要影響。數(shù)據(jù)遷移稍有不慎,便會(huì)造成新系統(tǒng)不能正常啟動(dòng),假若遷移過(guò)多垃圾數(shù)據(jù),將有可能使新系統(tǒng)運(yùn)行緩慢,甚至癱瘓。數(shù)據(jù)遷移的失敗將直接造成整個(gè)系統(tǒng)升級(jí)改造的失敗。數(shù)據(jù)遷移必須確保導(dǎo)入數(shù)據(jù)的完整性。采集系統(tǒng)業(yè)務(wù)復(fù)雜,數(shù)據(jù)量大,并且比較分散,數(shù)據(jù)導(dǎo)入后,升級(jí)后系統(tǒng)必須保證對(duì)生產(chǎn)庫(kù)與查詢庫(kù)的操作能夠正常進(jìn)行。系統(tǒng)上線后,用戶可能需要對(duì)終端進(jìn)行召測(cè)、對(duì)用戶檔案進(jìn)行調(diào)試,對(duì)電表數(shù)據(jù)進(jìn)行查詢等,這些操作都依賴數(shù)據(jù)遷移的成功。只有保證數(shù)據(jù)的正確性、可用性,才能保證采集業(yè)務(wù)正常運(yùn)行。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于用電信息采集系統(tǒng)跨平臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)遷移的理論和方法,解決了河北用電信息采集系統(tǒng)升級(jí)改造項(xiàng)目中遇到的跨平臺(tái)數(shù)據(jù)遷移的重要難題,停機(jī)時(shí)間短,工期短,可靠性高,安全性高,操作簡(jiǎn)單,保證了數(shù)據(jù)遷移的準(zhǔn)確性和完整性,促進(jìn)了整個(gè)升級(jí)改造項(xiàng)目的圓滿完成,也刷新了信息系統(tǒng)業(yè)內(nèi)數(shù)據(jù)遷移項(xiàng)目中跨平臺(tái)數(shù)據(jù)遷移的記錄。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術(shù)方案:
采集系統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移,將生產(chǎn)庫(kù)存儲(chǔ)上數(shù)據(jù),無(wú)損的遷移至查詢庫(kù)數(shù)據(jù)庫(kù)存儲(chǔ)上,要跨越2種架構(gòu)??紤]通過(guò)數(shù)據(jù)庫(kù)備份遷移軟件DATA PUMP和 RMAN 來(lái)實(shí)現(xiàn)。為了可行性考慮,同時(shí)展開(kāi)了這兩種遷移方案測(cè)試及論證。 DATA PUMP工具提供了一種基于服務(wù)器端的數(shù)據(jù)導(dǎo)入導(dǎo)出使用程序,所有DATA PUMP都作為一個(gè)服務(wù)器進(jìn)程,數(shù)據(jù)不再由客戶程序處理。DATA PUMP工具的導(dǎo)出和導(dǎo)入實(shí)現(xiàn) ORACLE 數(shù)據(jù)庫(kù)之間的數(shù)據(jù)傳輸。 RMAN是RECOVERY MANAGER的縮寫(xiě),為ORACLE的恢復(fù)管理器,主要用于備份和恢復(fù)數(shù)據(jù)庫(kù),特點(diǎn)如下:1、可以備份數(shù)據(jù)庫(kù)、表空間、數(shù)據(jù)文件、控制文件以及日志文件。2、壓縮備份可以只備份發(fā)生變化的內(nèi)容。
考慮到AIX操作系統(tǒng)與Solaris操作系統(tǒng)的Oracle數(shù)據(jù)庫(kù)備份還原屬于不同的操作系統(tǒng);鑒于異構(gòu)平臺(tái)數(shù)據(jù)還原需要進(jìn)行格式轉(zhuǎn)換,存在一定的技術(shù)風(fēng)險(xiǎn),通過(guò)咨詢相關(guān)Oracle專家并結(jié)合其他現(xiàn)場(chǎng)經(jīng)驗(yàn),采用RMAN方式通過(guò)convert方法進(jìn)行數(shù)據(jù)遷移。
其具體的方案為:
本發(fā)明提供一種基于用電信息采集系統(tǒng)跨平臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)遷移的方法,其是一種應(yīng)用于不同操作系統(tǒng)之間且不同版本的oracle數(shù)據(jù)庫(kù)之間的數(shù)據(jù)遷移方法,用電信息采集系統(tǒng)包括生產(chǎn)庫(kù)和查詢庫(kù),其特征在于:其包括以下步驟:
1)利用RMAN在原服務(wù)器對(duì)原數(shù)據(jù)庫(kù)進(jìn)行全庫(kù)備份,生成備份文件;
2)利用RMAN在新服務(wù)器將步驟1)的備份文件全庫(kù)恢復(fù)到新的數(shù)據(jù)庫(kù)中;
3)對(duì)恢復(fù)后的數(shù)據(jù)庫(kù)通過(guò)convert database命令轉(zhuǎn)換。
優(yōu)選的,所述步驟1)包括以下步驟:
1.1)建立通道分配:通道公配是確定連接數(shù)據(jù)庫(kù)備份的設(shè)置個(gè)數(shù),每設(shè)置一個(gè)設(shè)備就代表RMAN會(huì)自動(dòng)啟動(dòng)一個(gè)服務(wù)器會(huì)話,由此來(lái)完成數(shù)據(jù)庫(kù)的備份與恢復(fù)的操作;
1.2) 在ORACLE的歸檔模式下,使用BACKUP命令備份數(shù)據(jù)庫(kù)中的對(duì)像;
1.3)建立備份目錄:將磁盤(pán)存儲(chǔ)陣列根據(jù)數(shù)據(jù)備份要求,劃分生產(chǎn)庫(kù)與查詢庫(kù)共享空間,并分別掛載到生產(chǎn)庫(kù)與查詢庫(kù);對(duì)生產(chǎn)庫(kù)做數(shù)據(jù)庫(kù)全庫(kù)備份。
優(yōu)選的,所述步驟2)包括以下步驟:
2.1)連接新服務(wù)器的新數(shù)據(jù)庫(kù);
2.2)在新數(shù)據(jù)庫(kù)中創(chuàng)建恢復(fù)目錄的用戶,對(duì)恢復(fù)目錄的用戶賦予recovery_catalog_owner的角色;
2.3)在新的服務(wù)器中創(chuàng)建恢復(fù)目錄,使用恢復(fù)目錄用戶登錄數(shù)據(jù)庫(kù)后在恢復(fù)目錄管理器中創(chuàng)建恢復(fù)目錄。
優(yōu)選的,還包括以下步驟:
步驟3)查詢庫(kù)的數(shù)據(jù)庫(kù)版本升級(jí)。
優(yōu)選的,所述用電信息采集系統(tǒng)分為主站、通信信道和采集設(shè)備;所述主站單獨(dú)組網(wǎng),分區(qū)分域,與其它應(yīng)用系統(tǒng)以及公網(wǎng)信道采用防火墻進(jìn)行安全隔離;采集設(shè)備是用電信息采集系統(tǒng)的信息底層,負(fù)責(zé)收集和提供電力系統(tǒng)的原始用電信息,包括各類(lèi)專變用戶的終端、集抄終端及電能表;通信信道是主站和采集設(shè)備的紐帶,提供了對(duì)各種可用的有線和無(wú)線通信信道的支持,為主站和終端的信息交互提供鏈路基礎(chǔ)。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
1、可避免由于遷移造成的數(shù)據(jù)丟失、數(shù)據(jù)損壞的問(wèn)題,能保證數(shù)據(jù)遷移的完整性。
2、可對(duì)異構(gòu)操作系統(tǒng)上的數(shù)據(jù)進(jìn)行無(wú)損數(shù)據(jù)遷移。
3、可對(duì)數(shù)據(jù)庫(kù)大版本不統(tǒng)一的數(shù)據(jù)進(jìn)行無(wú)損數(shù)據(jù)遷移。
4、數(shù)據(jù)庫(kù)數(shù)據(jù)遷移時(shí),停機(jī)時(shí)間短、工期短。
具體實(shí)施方式
本發(fā)明提供一種基于用電信息采集系統(tǒng)跨平臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)遷移的理論和方法,采用RMAN方式通過(guò)convert方法,完成了河北用電信息采集系統(tǒng)升級(jí)改造項(xiàng)目中跨平臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)遷移的實(shí)施,將生產(chǎn)庫(kù)存儲(chǔ)上數(shù)據(jù),無(wú)損的遷移至查詢庫(kù)數(shù)據(jù)庫(kù)存儲(chǔ)上。
用電信息采集系統(tǒng)從物理上可根據(jù)部署位置分為主站、通信信道、采集設(shè)備三部分。
其中系統(tǒng)主站部分單獨(dú)組網(wǎng),分區(qū)分域,與其它應(yīng)用系統(tǒng)以及公網(wǎng)信道采用防火墻進(jìn)行安全隔離。采集系統(tǒng)按照全覆蓋、全采集、全費(fèi)控的要求,在系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)采集管理、有序用電、預(yù)付費(fèi)管理、電量統(tǒng)計(jì)、分布式電源管理、用戶用電階梯電價(jià)等各種功能。實(shí)現(xiàn)用電信息的自動(dòng)采集、計(jì)量異常監(jiān)測(cè)、電能質(zhì)量監(jiān)測(cè)、用電分析和管理、相關(guān)信息發(fā)布、分布式能源監(jiān)控、智能用電設(shè)備的信息交互等功能,充分滿足各業(yè)務(wù)應(yīng)用的需求,并為其他專業(yè)信息系統(tǒng)提供數(shù)據(jù)支持。
通信信道是主站和采集設(shè)備的紐帶,提供了對(duì)各種可用的有線和無(wú)線通信信道的支持,為主站和終端的信息交互提供鏈路基礎(chǔ)。主站支持所有主要的通信信道,包括:230MHz、GPRS無(wú)線公網(wǎng)、光纖專網(wǎng)和小無(wú)線等。
采集設(shè)備是用電信息采集系統(tǒng)的信息底層,負(fù)責(zé)收集和提供整個(gè)系統(tǒng)的原始用電信息,包括各類(lèi)專變用戶的終端、集抄終端及電能表等設(shè)備。
大型專變用戶應(yīng)用I型負(fù)荷管理終端,對(duì)中小型專變用戶應(yīng)用II型負(fù)荷管理終端終端;低壓電力用戶的用電信息采集以配變臺(tái)區(qū)為單元建設(shè)采集系統(tǒng),實(shí)現(xiàn)臺(tái)區(qū)下所有低壓電力用戶的用電信息采集,同時(shí)實(shí)現(xiàn)配變關(guān)口電能信息采集。
用電信息采集終端是對(duì)各信息采集點(diǎn)用電信息采集的設(shè)備。可以實(shí)現(xiàn)電能表數(shù)據(jù)的采集、數(shù)據(jù)管理、數(shù)據(jù)雙向傳輸以及轉(zhuǎn)發(fā)或執(zhí)行控制命令的設(shè)備。用電信息采集終端按應(yīng)用場(chǎng)所分為專變采集終端、集中抄表終端(包括集中器、采集器)、分布式能源監(jiān)控終端等類(lèi)型。
1) RMAN全庫(kù)備份
1、建立通道分配
通道公配是確定連接數(shù)據(jù)庫(kù)備份的設(shè)置個(gè)數(shù),每設(shè)置一個(gè)設(shè)備就代表RMAN會(huì)自動(dòng)啟動(dòng)一個(gè)服務(wù)器會(huì)話,由此來(lái)完成數(shù)據(jù)庫(kù)的備份與恢復(fù)的操作。
其語(yǔ)法如下:
RUN
{
ALLOCATE CHANNEL CHANNEL_NAME1 DEVICE TYPE TYPE_NAME1;
BACKUP...
}
進(jìn)行數(shù)據(jù)庫(kù)備份時(shí),為了讓數(shù)據(jù)庫(kù)正常完成備份操作,需要關(guān)閉數(shù)據(jù)庫(kù)并啟動(dòng)MOUNT。
2、BACKUP使用
BACKUP命令主要用于備份數(shù)據(jù)庫(kù)中的對(duì)像。具體語(yǔ)法如下:
BACKUP [LEVEL] [BACKUP TYPE ] [OPTION]
ORACLE 數(shù)據(jù)庫(kù)的RMAN備份必須在ORACLE的歸檔模式下才能進(jìn)行。
3、備份目錄建立
將磁盤(pán)存儲(chǔ)陣列根據(jù)數(shù)據(jù)備份要求,劃分生產(chǎn)庫(kù)與查詢庫(kù)共享空間,并分別掛載到生產(chǎn)庫(kù)與查詢庫(kù),備份目錄名稱為DATAPUMP。
源端(生產(chǎn)庫(kù))做數(shù)據(jù)庫(kù)全庫(kù)備份,代碼如下所示:
RMAN TARGET / log=/datapump/baknocom/full0421.log <<EOF
run {
ALLOCATE CHANNEL ch00 TYPE DISK;
…
ALLOCATE CHANNEL ch15 TYPE DISK;
BACKUP FORMAT '/datapump/baknocom/bk0421_%s_%p_%t' database;
BACKUP current CONTROLFILE format '/datapump/baknocom/contrl';
RELEASE CHANNEL ch00;
…
RELEASE CHANNEL ch15;
}
2)RMAN全庫(kù)還原
如果在歸檔模式或者非歸檔模式的MOUNT狀態(tài)備份的數(shù)據(jù)庫(kù),產(chǎn)生的備份是一致的備份,恢復(fù)的時(shí)候需要如下文件:
Rman備份的參數(shù)文件、控制文件、數(shù)據(jù)文件。
查詢庫(kù)創(chuàng)建恢復(fù)目錄,創(chuàng)建恢復(fù)目錄時(shí)需要考慮數(shù)據(jù)庫(kù)的容量,這個(gè)容量的大小取決于生產(chǎn)庫(kù)數(shù)據(jù)庫(kù)容量的大小,創(chuàng)建恢復(fù)目錄分為連接恢復(fù)目錄的數(shù)據(jù)庫(kù)、創(chuàng)建恢復(fù)目錄的用戶、給恢復(fù)目錄用戶賦角色以及創(chuàng)建恢復(fù)目錄4個(gè)步驟。
1、連接恢復(fù)目錄的數(shù)據(jù)庫(kù)
恢復(fù)目錄的用戶就是指在生產(chǎn)庫(kù)數(shù)據(jù)庫(kù)中所使用的用戶,這個(gè)用戶與其它用戶不同,必須賦予recovery_catalog_owner的角色才可以。連接數(shù)據(jù)庫(kù)語(yǔ)法如下:
conn sea/sea***1234 ;
2、創(chuàng)建恢復(fù)目錄的用戶
create user sea ideneified by sea***1234
3、給恢復(fù)目錄用戶賦角色
創(chuàng)建的數(shù)據(jù)庫(kù)用戶是不能實(shí)現(xiàn)RMAN備份與恢復(fù)工作的,還需要給該用戶賦予權(quán)限和角色。
grant recovery_catalog_owner to sea
4、創(chuàng)建恢復(fù)目錄
使用恢復(fù)目錄用戶登錄數(shù)據(jù)庫(kù)后就可以創(chuàng)建恢復(fù)目錄,需要在恢復(fù)目錄管理器中完成
Connect catalog sea/sea***1234
查詢庫(kù)恢復(fù)腳本:
rman target / <<EOF
run{
set newname for datafile 1 to '/datapump/cxsea/rrac_system';
…
set newname for datafile 10 to '/datapump/cxsea/rrac_pbs5';
………………………………………………
allocate channel t1 device type disk;
…
allocate channel t32 device type disk;
restore controlfile from '/seaapp/oracle/product/10.2.0/db_1/dbs/c-2290404035-20150421-00';
alter database mount;
restore database;
switch datafile all;
}
EOF
3) Convert轉(zhuǎn)換
數(shù)據(jù)庫(kù)從生產(chǎn)庫(kù)AIX系統(tǒng)還原至查詢庫(kù)solaris系統(tǒng)后,由于是跨平臺(tái)數(shù)據(jù)還原,需要對(duì)數(shù)據(jù)文件進(jìn)行convert處理,才能正常使用。
rman target / <<EOF
run{
convert from platform 'AIX-Based Systems (64-bit)'
datafile '+DATA/SEA/DATAFILE/rrac_sea_a210' format '+DATA/SEA/UNDO/rrac_sea_a210' ;
convert from platform 'AIX-Based Systems (64-bit)'
…
convert from platform 'AIX-Based Systems (64-bit)'
datafile '+DATA/SEA/DATAFILE/rrac_sea_a546' format '+DATA/SEA/system/rrac_sea_a546';
}
EOF
4) 數(shù)據(jù)庫(kù)升級(jí)
將10G數(shù)據(jù)庫(kù)upgrade升級(jí)為11g數(shù)據(jù)庫(kù):
從11gR2的Oracle Home下拷貝以下文件至一個(gè)臨時(shí)文件夾:
$ORACLE_HOME/rdbms/admin/utlu112i.sql
SQL> startup mount
SQL> alter database open upgrade
SQL> spool upgrade_info.log SQL> @utlu112i.sql SQL> spool off
sql> alter session set nls_language='American'; sql> @dbupgdiag.sql sql> exit
接著開(kāi)始運(yùn)行升級(jí)腳本:
SQL> set echo on SQL> SPOOL upgrade.log SQL> @catupgrd.sql SQL> spool off
檢查數(shù)據(jù)庫(kù)狀態(tài):
$ sqlplus "/as sysdba" SQL> STARTUP SQL> @utlu112s.sql
再運(yùn)行下面的腳本:
SQL> @catuppst.sql
前面的升級(jí)腳本是運(yùn)行在upgrade模式下,該腳本主要是在open模式下做些升級(jí)動(dòng)作,不需要花很多時(shí)間。 接著重新編譯一下無(wú)效對(duì)象:
SQL> @utlrp.sql
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。