亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于Oracle數(shù)據(jù)庫的在線數(shù)據(jù)遷移方法

文檔序號(hào):6574648閱讀:402來源:國知局

專利名稱::一種基于Oracle數(shù)據(jù)庫的在線數(shù)據(jù)遷移方法
技術(shù)領(lǐng)域
:本發(fā)明涉及數(shù)據(jù)庫應(yīng)用技術(shù),尤其涉及Oracle數(shù)據(jù)庫的應(yīng)用技術(shù)。技術(shù)背景隨著數(shù)據(jù)庫管理系統(tǒng)和操作系統(tǒng)平臺(tái)更新?lián)Q代的速度不斷加快,數(shù)據(jù)庫工程師經(jīng)常需要在兩個(gè)不同的數(shù)據(jù)庫之間或在兩種不同的操作系統(tǒng)平臺(tái)之間進(jìn)行數(shù)據(jù)遷移。數(shù)據(jù)遷移是指將數(shù)據(jù)從一臺(tái)機(jī)器遷移到另一臺(tái)機(jī)器,或者將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫遷移到另一個(gè)數(shù)據(jù)庫,并且這些數(shù)據(jù)(包括結(jié)構(gòu)定義)在轉(zhuǎn)移后能正常運(yùn)行。在現(xiàn)有技術(shù)中,常用的數(shù)據(jù)遷移方法主要包括采用導(dǎo)出/導(dǎo)入(export/import)或者Oracle10g版本提供的導(dǎo)出/導(dǎo)入(expdp/impdp)方式、insert/*+append*/into...什omdbjink+nologging、standby遷移方式、利用stream與相關(guān)工具進(jìn)行的數(shù)據(jù)遷移和基于表空間傳輸以及Oracle10g的跨平臺(tái)數(shù)據(jù)文件轉(zhuǎn)換結(jié)合的方式。但是,上述的這些遷移方式有的停機(jī)時(shí)間過長(zhǎng),有的難以確定完全同步開始時(shí)的SCN點(diǎn),有的則不能跨平臺(tái)、跨版本和跨字符集進(jìn)行數(shù)據(jù)遷移。
發(fā)明內(nèi)容針對(duì)基于Oracle數(shù)據(jù)庫而進(jìn)行數(shù)據(jù)遷移時(shí)所存在的上述技術(shù)缺陷,本發(fā)明提供了可實(shí)現(xiàn)跨平臺(tái)、跨版本且高效快速的在線數(shù)據(jù)遷移方法。按照本發(fā)明的一個(gè)方面,才是供了一種采用prebuiltmv(materializedview:物化視圖)方式進(jìn)行數(shù)據(jù)遷移的方法。該方法是指在預(yù)先創(chuàng)建好的表上面建立物化視圖,當(dāng)該物化視圖被刪除的時(shí)候,原來已創(chuàng)建好的表仍予以保留,同時(shí)同步過來的數(shù)據(jù)也被保留。該方法采用表對(duì)象作為數(shù)據(jù)遷移的單個(gè)對(duì)象,并針對(duì)該表對(duì)象用一個(gè)主鍵刷新mv。首先在源表上創(chuàng)建mv日志,并在目標(biāo)數(shù)據(jù)庫上創(chuàng)建結(jié)構(gòu)一樣的目標(biāo)表;然后在目標(biāo)表上采用prebuilt方式創(chuàng)建mv,并進(jìn)行完全刷新;在以后的創(chuàng)建過程中采用增量刷新方式,當(dāng)需要進(jìn)行數(shù)據(jù)庫切換時(shí)只需刷新增量的日志,刪除mv和保留目標(biāo)表。該方法所實(shí)現(xiàn)的數(shù)據(jù)遷移可采用下列步驟(1)依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(2)將所述大表作為源表,在源數(shù)據(jù)庫上創(chuàng)建物化視圖日志;(3)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建與所述源表的結(jié)構(gòu)相同的目標(biāo)表,并在所述目標(biāo)表上釆用prebuilt方式創(chuàng)建物化視圖;(4)對(duì)同步日志進(jìn)行完全刷新;(5)對(duì)所述同步日志進(jìn)行增量刷新;(6)創(chuàng)建可實(shí)現(xiàn)自動(dòng)增量刷新的程序代碼;(7)按上述步驟(2)-(6)依次處理所有的大表;(8)對(duì)采用insert/*+append*/into...什omdb一link處理的小表,整理好insertinto的腳本;(9)運(yùn)行所述的insertinto腳本,對(duì)所述小表進(jìn)行數(shù)據(jù)遷移;以及(10)遷移切換。更具體地,在進(jìn)行遷移切換時(shí),包括如下的一系列#:作停止源數(shù)據(jù)庫的一切活動(dòng)、等待最后一批日志完成增量刷新、運(yùn)行小表腳本并insertinto小表數(shù)據(jù)、等待所有的大表完成刷新、刪除源表中的mvlog和目標(biāo)表中的mv并保留目標(biāo)表和數(shù)據(jù)、創(chuàng)建與目標(biāo)表有依賴關(guān)系的對(duì)象(如自增長(zhǎng)的序列)。按照本發(fā)明的又一個(gè)方面,提供了一種使用創(chuàng)建觸發(fā)器和創(chuàng)建過程相結(jié)合的方式(trigger+procedure)進(jìn)行數(shù)據(jù)遷移的方法。該方法釆用表對(duì)象作為數(shù)據(jù)遷移的單個(gè)對(duì)象,并要求該表對(duì)象有一個(gè)主鍵。首先利用觸發(fā)器記錄該表的DML(DataManipulationLanguage:數(shù)據(jù)才喿縱語言)日志,然后通過用戶自定義的過程與該DML日志同步。鑒于該方法主要彌補(bǔ)了采用prebuiltmv方式進(jìn)行數(shù)據(jù)遷移時(shí)難以刷新大表的缺點(diǎn),下列步驟主要用來完全刷新大表(1)依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(2)將所述大表作為源表,在所述源表上創(chuàng)建數(shù)據(jù)操縱語言的觸發(fā)器;(3)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建與所述源表結(jié)構(gòu)相同的目標(biāo)表;(4)所述觸發(fā)器開始工作后,分批載入所述源表中的數(shù)據(jù)至所述目標(biāo)數(shù)據(jù)庫的所述目標(biāo)表中;(5)在所述目標(biāo)數(shù)據(jù)庫上創(chuàng)建用戶自定義的過程;(6)完全刷新由所述觸發(fā)器產(chǎn)生的同步日志;(7)對(duì)所述同步日志進(jìn)行增量刷新;以及(8)遷移切換。更具體地,在進(jìn)行遷移切換時(shí),包括如下的一系列操作通過用戶自定義的過程完成日志的刷新、刪除觸發(fā)器與該過程以及調(diào)度的作業(yè)、完成目標(biāo)表的同步刷新。按照本發(fā)明的又一個(gè)方面,提供了一種創(chuàng)建觸發(fā)器和自定義程序與使用sqHoader工具相結(jié)合(trigger+sqnoader+程序)進(jìn)行數(shù)據(jù)遷移的方法。該方法主要利用文本文件或者進(jìn)程通信進(jìn)行中間轉(zhuǎn)換,通過sq^loader載入數(shù)據(jù),并依據(jù)數(shù)據(jù)庫工程師自定義的程序分析同步日志。需要指出的是,利用sq鬥oader工具可以將一些以文本文件格式存放的數(shù)據(jù)順利地導(dǎo)入到Oracle數(shù)據(jù)庫中,是一種在不同數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)遷移非常便捷和常用的手段。該方法可通過下列的步驟進(jìn)行數(shù)據(jù)遷移(1)依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(2)將所述大表作為源表,在所述源表上創(chuàng)建數(shù)據(jù)操縱語言的觸發(fā)器;(3)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建與所述源表結(jié)構(gòu)相同的目標(biāo)表;(4)所述觸發(fā)器開始工作后,分批載入所述源表中的數(shù)據(jù)至所述目標(biāo)數(shù)據(jù)庫的所述目標(biāo)表中;(5)在中間層利用兩個(gè)進(jìn)程分別連接不同字符集的數(shù)據(jù)庫;(6)完全刷新由所述觸發(fā)器產(chǎn)生的同步曰志;(7)對(duì)所述同步日志進(jìn)行增量刷新;以及(8)遷移切換。更具體地,步驟(1)中的小表載入包括兩種方式利用select或者程序生成文本文件,通過Sql*loader載入;直接生成insertinto的腳本到文本文件,然后執(zhí)行。更具體地,步驟(6)中同步日志可采用兩種方案,一是在源上根據(jù)日志直接生成DML語句,采用文本方式發(fā)送到目標(biāo)執(zhí)行;一是在中間層利用兩個(gè)進(jìn)程,分別連接不同字符集的數(shù)據(jù)庫,其中的一個(gè)進(jìn)程用于分析日志,另一個(gè)進(jìn)程用于同步曰志。更具體地,步驟(8)中的遷移切換包括同步完最后的日志、停止同步程序。采用本發(fā)明中基于Oracle數(shù)據(jù)庫的prebuiltmv方式、trigger+Procedure方式和trigger+sqnoader+程序方式進(jìn)行的遷移方法,均能實(shí)現(xiàn)跨平臺(tái)和跨數(shù)據(jù)庫版本的數(shù)據(jù)遷移,并可完成數(shù)據(jù)的重組優(yōu)化,其中trigger+Sq廣loader+程序方式還能實(shí)現(xiàn)跨字符集的數(shù)據(jù)遷移,極大了提高了數(shù)據(jù)遷移的效率,減少了停機(jī)切換時(shí)間。讀者在參照附圖閱讀了本發(fā)明的具體實(shí)施方式以后,將會(huì)更清楚地了解本發(fā)明的各個(gè)方面。其中,圖1示出了現(xiàn)有技術(shù)中常用的幾種數(shù)據(jù)遷移的方法;圖2示出了本發(fā)明中實(shí)現(xiàn)在線數(shù)據(jù)遷移的三種方式;圖3示出了本發(fā)明中基于prebuiltmv方式的在線數(shù)據(jù)遷移方法;圖4示出了本發(fā)明中基于trigger+procedure方式的在線數(shù)據(jù)遷移方法;而圖5示出了本發(fā)明中基于trigger+sqrioader+程序方式的在線數(shù)據(jù)遷移方法。具體實(shí)施方式下面參照附圖,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步的詳細(xì)描述。圖1示出了現(xiàn)有技術(shù)中常用的幾種數(shù)據(jù)遷移的方法,其中,可進(jìn)行在線數(shù)據(jù)遷移的方式包括standby、stream和相關(guān)工具;需要較長(zhǎng)的停機(jī)時(shí)間方可完成數(shù)據(jù)遷移的方式包括exp/imp或Oracle10g版本下的expdp/impdp、采用指令insert/*+append*/into...fromdb—link+nologging的dblink方式和表空間傳l命。參照?qǐng)D1,上述幾種常用的數(shù)據(jù)遷移方法按照是否支持在線遷移,可分為如下的流程進(jìn)行(1)數(shù)據(jù)遷移準(zhǔn)備100;(2)是否在線遷移的判斷102;(3)若不進(jìn)行在線遷移,則執(zhí)行停機(jī)維護(hù)104;(4)常用的遷移方式,如導(dǎo)出/導(dǎo)入,dblink,表空間傳輸?shù)?06;(5)若進(jìn)行在線遷移,則采用standby,stream與相關(guān)工具等108;(6)遷移切換110;以及(7)在執(zhí)行完106或者110后,完成數(shù)據(jù)遷移112。圖2示出了本發(fā)明中實(shí)現(xiàn)在線數(shù)據(jù)遷移的三種方式,即,prebuiltmv方式、trigger+procedure方式、trigger+sqHoader+牙呈序方式。上述三種方式老卩i己錄源表的DML操作日志,并通過完全刷新同步日志和增量刷新同步日志,以實(shí)現(xiàn)源數(shù)據(jù)庫中不同容量的表對(duì)象的數(shù)據(jù)遷移。更具體地,prebuiltmv方式和trigger+procedure方式能夠?qū)崿F(xiàn)跨平臺(tái)和跨版本的數(shù)據(jù)遷移,而trigger+sq廣loader+程序方式不僅能實(shí)現(xiàn)跨平臺(tái)和跨版本的數(shù)據(jù)遷移,而且還可利用文本文件或者進(jìn)程間的通信來實(shí)現(xiàn)跨字符集的數(shù)據(jù)遷移。參考圖2,本發(fā)明實(shí)現(xiàn)在線數(shù)據(jù)遷移的幾種方法可有如下的流程來共同表示(1)數(shù)據(jù)遷移準(zhǔn)備200;(2)在線數(shù)據(jù)遷移202;(3)基于Oracle數(shù)據(jù)庫的跨平臺(tái)、跨版本的數(shù)據(jù)遷移204;(4)基于Oracle數(shù)據(jù)庫的跨平臺(tái)、跨版本、跨字符集的數(shù)據(jù)遷移206;(5)若執(zhí)行204的數(shù)據(jù)遷移,可采用prebuiltmv方式208或者采用trigger+procedure方式210;(6)若執(zhí)行206的數(shù)據(jù)遷移,可采用trigger+sqHoader+程序方式212;(7)當(dāng)執(zhí)行208、210或者212的方法實(shí)現(xiàn)數(shù)據(jù)遷移時(shí),記錄日志214;(8)完全刷新同步日志216;(9)增量刷新同步日志218;(10)遷移切換220;以及(11)完成數(shù)據(jù)遷移222。圖3、圖4和圖5分別是上述三種數(shù)據(jù)遷移方式的具體實(shí)現(xiàn)流程,以下對(duì)其依次作以闡述。圖3示出了本發(fā)明中基于prebuiltmv方式的在線數(shù)據(jù)遷移方法。該方法將表對(duì)象作為數(shù)據(jù)遷移的單個(gè)對(duì)象,并通過下述的具體步驟來完成數(shù)據(jù)遷移(1)數(shù)據(jù)遷移準(zhǔn)備300;(2)將表對(duì)象作為遷移的單個(gè)對(duì)象302;(3)表容量是否大于100M的判斷304,按照容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將100M以上容量的表對(duì)象稱為大表,將100M以下容量的表對(duì)象稱為小表;(4沐用insertinto方式遷移數(shù)據(jù)306;(5)整理insertinto的腳本308;(6)運(yùn)行insertinto腳本,遷移小表中的數(shù)據(jù)310;(7)在源數(shù)據(jù)庫上創(chuàng)建mv日志,以記錄源表的DML操作312,創(chuàng)建mv日志的指令為creatematerializedviewlogontable—name;(8)完全刷新同步日志314,其具體執(zhí)行指令為execdbms_mview.re&esh('table_name',method=>'Complete,);(9)增量刷新同步日志316,其具體執(zhí)行指令為execdbms—mview.re什esh('table—name')declarejobidnumber;beginsys.dbms」ob.submit(job=>jobid,what=>'dbms—mview.refresh("table—name");',next—date=>sysdate,interval=>'sysdate+1/1440,);commit;end;以及(10)遷移切換318和完成數(shù)據(jù)遷移320。其中步驟遷移切換318,它包括停止源數(shù)據(jù)庫的一切活動(dòng)、等待最后一批曰志完成增量刷新、運(yùn)行小表腳本并insertinto小表數(shù)據(jù)、等待所有的大表完成刷新、刪除源表中的mvlog和目標(biāo)表中的mv并保留目標(biāo)表和數(shù)據(jù)、創(chuàng)建與目標(biāo)表有依賴關(guān)系的對(duì)象(如自增長(zhǎng)的序列)。圖4示出了本發(fā)明中基于trigger+procedure方式的在線數(shù)據(jù)遷移方法。該方法采用觸發(fā)器記錄源表的DML日志,采用用戶自定義的過程同步日志以完成數(shù)據(jù)遷移,當(dāng)觸發(fā)器與該自定義的過程結(jié)合使用時(shí),用戶可根據(jù)自己的需要在過程中寫入自己的業(yè)務(wù)需求,也可將多個(gè)數(shù)據(jù)庫中的表刷新到一個(gè)目標(biāo)表中,數(shù)據(jù)遷移因而變得更為靈活。該方法可通過如下的具體步驟進(jìn)行實(shí)現(xiàn)(1)數(shù)據(jù)遷移準(zhǔn)備400;(2)將表對(duì)象作為遷移的單個(gè)對(duì)象402;(3)對(duì)表容量是否大于100M的判斷404,按照容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將100M以上容量的表對(duì)象稱為大表,將100M以下容量的表對(duì)象稱為小表;(4)采用insertinto方式遷移數(shù)據(jù)406;(5)整理insertinto的腳本408;(6)運(yùn)行insertinto腳本,遷移小表中的數(shù)據(jù)410;(7)在源數(shù)據(jù)庫上創(chuàng)建日志表412,更具體地,日志表的創(chuàng)建可表示為createtableREP—TABLE—LOGS(REP—KEYNUMBERnotnull,DML—TYPEVARCHAR2("notnull,DML_TIMEDATEdefaultsysdatenotnull,REP_FLAGNUMBERdefault0notnull);(8)在源表上創(chuàng)建DML的觸發(fā)器414;(9)判斷觸發(fā)器是否開始工作416;(10)批量載入源表的數(shù)據(jù)至目標(biāo)數(shù)據(jù)庫中418;(11)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建procedure,完全刷新觸發(fā)器產(chǎn)生的同步日志420;(12)增量刷新同步日志422;以及(13)遷移切換424和完成數(shù)據(jù)遷移426。圖5示出了本發(fā)明中基于trigger+sq廣loader+程序方式的在線數(shù)據(jù)遷移方法。該方法利用文本文件或者進(jìn)程間的通信進(jìn)行中間轉(zhuǎn)換,以實(shí)現(xiàn)不同字符集的數(shù)據(jù)完成遷移。該遷移方法也可采用如下的步驟進(jìn)行實(shí)施(1)數(shù)據(jù)遷移準(zhǔn)備500;(2)將表對(duì)象作為遷移的單個(gè)對(duì)象502;(3)對(duì)表容量是否大于100M進(jìn)行判斷504,依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(4)利用select或者是程序生成文本文件506;(5)通過sql*loader載入數(shù)據(jù)508;(6)創(chuàng)建自定義程序,起兩個(gè)進(jìn)程分別連接不同字符集的數(shù)據(jù)庫510;(7)在源數(shù)據(jù)庫上創(chuàng)建曰志表512;(8)在源表上創(chuàng)建DML的觸發(fā)器514;(9)判斷觸發(fā)器是否開始工作516;(10)批量載入源表的數(shù)據(jù)至目標(biāo)數(shù)據(jù)庫中518;(11)在中間層利用兩個(gè)進(jìn)程,分別連接不同字符集的數(shù)據(jù)庫,分析和同步日志520;(12)增量刷新同步日志522;以及(13)遷移切換524和完成數(shù)據(jù)遷移526。更具體地,在步驟(3)中遷移小表中的數(shù)據(jù)采用兩種方案,一是利用select或者是程序生成文本文件,并通過sqnoader工具載入數(shù)據(jù);一是直接生成insertinto的腳本到文本文件并執(zhí)行。更具體地,在步驟(11)中同步日志還可利用另一種方案實(shí)現(xiàn),即,在源數(shù)據(jù)庫上根據(jù)日志,直接生成DML語句,并采用文本文件的方式發(fā)送到目標(biāo)數(shù)據(jù)庫執(zhí)行。上文中,參照附圖描述了本發(fā)明的具體實(shí)施方式。但是,本領(lǐng)域中的普通技術(shù)人員能夠理解,在不偏離本發(fā)明的精神和范圍的情況下,還可以對(duì)本發(fā)明的具體實(shí)施方式作各種變更和替換。這些變更和替換都落在本發(fā)明權(quán)利要求書所限定的范圍內(nèi)。權(quán)利要求1.一種基于Oracle數(shù)據(jù)庫的在線數(shù)據(jù)遷移方法,其特征在于,該方法采用下列步驟實(shí)現(xiàn)(1)依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(2)將所述大表作為源表,在源數(shù)據(jù)庫上創(chuàng)建物化視圖日志;(3)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建與所述源表的結(jié)構(gòu)相同的目標(biāo)表,并在所述目標(biāo)表上采用prebuilt方式創(chuàng)建物化視圖;(4)對(duì)同步日志進(jìn)行完全刷新;(5)對(duì)所述同步日志進(jìn)行增量刷新;(6)創(chuàng)建可實(shí)現(xiàn)自動(dòng)增量刷新的程序代碼;(7)按上述步驟(2)-(6)依次處理所有的大表;(8)對(duì)采用insert/*+append*/into...fromdb_link處理的小表,整理好insertinto的腳本;(9)運(yùn)行所述的insertinto腳本,對(duì)所述小表進(jìn)行數(shù)據(jù)遷移;以及(10)遷移切換。2.如權(quán)利要求1所述的方法,其特征在于,在執(zhí)行步驟(3)時(shí),所述源表的結(jié)構(gòu)在所述日志創(chuàng)建完成之后且在遷移數(shù)據(jù)的復(fù)制完成之前保持不變。3.如權(quán)利要求1所述的方法,其特征在于,所述完全刷新僅在第一次同步所述曰志時(shí)#<行。4.一種基于Oracle數(shù)據(jù)庫的在線數(shù)據(jù)遷移方法,其特征在于,該方法采用下列步驟實(shí)現(xiàn)(1)依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(2)將所述大表作為源表,在所述源表上創(chuàng)建數(shù)據(jù)操縱語言的觸發(fā)器;(3)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建與所述源表結(jié)構(gòu)相同的目標(biāo)表;(4)所述觸發(fā)器開始工作后,分批載入所述源表中的數(shù)據(jù)至所述目標(biāo)數(shù)據(jù)庫的所述目標(biāo)表中;(5)在所述目標(biāo)數(shù)據(jù)庫上創(chuàng)建用戶自定義的過程;(6)完全刷新由所述觸發(fā)器產(chǎn)生的同步日志;(7)對(duì)所述同步日志進(jìn)行增量刷新;以及(8)遷移切換。5.如權(quán)利要求4所述的方法,其特征在于,在執(zhí)行步驟(1)時(shí),對(duì)低于所述預(yù)定容量的表對(duì)象,采用insert/*+appendVinto...fromdb—link進(jìn)行數(shù)據(jù)遷移。6.如權(quán)利要求4所述的方法,其特征在于,所述日志的REP—KEY用于存放所述源表的主鍵,字段類型取決于所述源表的字段類型。7.如權(quán)利要求4所述的方法,其特征在于,在執(zhí)行步驟(3)時(shí),所述源表的結(jié)構(gòu)在所述觸發(fā)器創(chuàng)建完成之后且在遷移數(shù)據(jù)的復(fù)制完成之前保持不變。8.如權(quán)利要求4所述的方法,其特征在于,所述觸發(fā)器可以記錄所述源表的數(shù)據(jù)操縱語言的操作日志。9.如權(quán)利要求4所述的方法,其特征在于,創(chuàng)建所述用戶自定義的過程可以同步由所述觸發(fā)器產(chǎn)生的所述數(shù)據(jù)操縱語言的操作日志。10.—種基于Oracle數(shù)據(jù)庫的在線數(shù)據(jù)遷移方法,其特征在于,該方法采用下列步驟實(shí)現(xiàn)(1)依照預(yù)定的容量大小對(duì)表對(duì)象進(jìn)行分級(jí),將超過所述預(yù)定容量的表對(duì)象作為大表,將低于所述預(yù)定容量的表對(duì)象作為小表;(2)將所述大表作為源表,在所述源表上創(chuàng)建數(shù)據(jù)操縱語言的觸發(fā)器;(3)在目標(biāo)數(shù)據(jù)庫上創(chuàng)建與所述源表結(jié)構(gòu)相同的目標(biāo)表;(4)所述觸發(fā)器開始工作后,分批載入所述源表中的數(shù)據(jù)至所述目標(biāo)數(shù)據(jù)庫的所述目標(biāo)表中;(5)在中間層利用兩個(gè)進(jìn)程分別連接不同字符集的數(shù)據(jù)庫;(6)完全刷新由所述觸發(fā)器產(chǎn)生的同步日志;(7)對(duì)所述同步日志進(jìn)行增量刷新;以及(8)遷移切換。11.如權(quán)利要求10所述的方法,其特征在于,在執(zhí)行步驟(1)時(shí),對(duì)小于所述預(yù)定容量的表對(duì)象,利用select指令或者程序代碼生成文本文件,通過Sqnoader載入。12.如權(quán)利要求10所述的方法,其特征在于,在執(zhí)行步驟(1)時(shí),對(duì)小于所述預(yù)定容量的表對(duì)象,直接生成insertinto的腳本到文本文件并予以執(zhí)行。13.如權(quán)利要求11或12所述的方法,其特征在于,利用用戶自定義的程序,創(chuàng)建兩個(gè)進(jìn)程,并將所述兩個(gè)進(jìn)程分別連接至不同字符集的數(shù)據(jù)庫,以進(jìn)行跨字符集的數(shù)據(jù)遷移。14.如權(quán)利要求10所述的方法,其特征在于,所述觸發(fā)器可以記錄所述源表的數(shù)據(jù)操縱語言操作日志。15.如權(quán)利要求10所述的方法,其特征在于,步驟(5)中所述兩個(gè)進(jìn)程包括第一進(jìn)程和第二進(jìn)程,所述第一進(jìn)程用于分析日志,所述第二進(jìn)程用于同步日志。16.—種采用如權(quán)利要求1、4、10中的任一權(quán)利要求所述遷移方法的在線數(shù)據(jù)遷移系統(tǒng)。17.—種采用如權(quán)利要求1、4和10中的任一權(quán)利要求所述方法在數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)同步復(fù)制的方法。全文摘要本發(fā)明揭示了基于Oracle數(shù)據(jù)庫實(shí)現(xiàn)在線數(shù)據(jù)遷移的方法,主要包括prebuiltmv、trigger+procedure和trigger+sql*loader+程序。上述三種方式均采用記錄源表的操作日志、完全刷新和增量刷新同步日志和遷移切換以完成數(shù)據(jù)遷移。采用本發(fā)明的prebuiltmv和trigger+procedure可以實(shí)現(xiàn)跨平臺(tái)、跨版本的數(shù)據(jù)遷移,而采用trigger+sql*loader+程序可以利用文本文件或者進(jìn)程間的通信實(shí)現(xiàn)不同字符集的數(shù)據(jù)庫之間的轉(zhuǎn)換,因而可實(shí)現(xiàn)跨字符集的數(shù)據(jù)遷移。文檔編號(hào)G06F17/30GK101266606SQ20071008868公開日2008年9月17日申請(qǐng)日期2007年3月15日優(yōu)先權(quán)日2007年3月15日發(fā)明者陳吉平申請(qǐng)人:阿里巴巴公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1