• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于Oracle數據庫的在線數據遷移方法技術

    技術編號:2825022 閱讀:548 留言:0更新日期:2012-04-11 18:40
    本發明專利技術揭示了基于Oracle數據庫實現在線數據遷移的方法,主要包括prebuiltmv、trigger+procedure和trigger+sql*loader+程序。上述三種方式均采用記錄源表的操作日志、完全刷新和增量刷新同步日志和遷移切換以完成數據遷移。采用本發明專利技術的prebuilt  mv和trigger+procedure可以實現跨平臺、跨版本的數據遷移,而采用trigger+sql*loader+程序可以利用文本文件或者進程間的通信實現不同字符集的數據庫之間的轉換,因而可實現跨字符集的數據遷移。

    【技術實現步驟摘要】

    本專利技術涉及數據庫應用技術,尤其涉及Oracle數據庫的應用技術。
    技術介紹
    隨著數據庫管理系統和操作系統平臺更新換代的速度不斷加快,數據庫工程師經常需要在兩個不同的數據庫之間或在兩種不同的操作系統平臺之間進行數據遷移。數據遷移是指將數據從一臺機器遷移到另一臺機器,或者將數據從一個數據庫遷移到另一個數據庫,并且這些數據(包括結構定義)在轉移后能正常運行。在現有技術中,常用的數據遷移方法主要包括:采用導出/導入(export/import)或者Oracle?10g版本提供的導出/導入(expdp/impdp)方式、insert/*+append*/into...from?db_link+nologging、standby遷移方式、利用stream與相關工具進行的數據遷移和基于表空間傳輸以及Oracle?10g的跨平臺數據文件轉換結合的方式。但是,上述的這些遷移方式有的停機時間過長,有的難以確定完全同步開始時的SCN點,有的則不能跨平臺、跨版本和跨字符集進行數據遷移。
    技術實現思路
    針對基于Oracle數據庫而進行數據遷移時所存在的上述技術缺陷,本專利技術提供了可實現跨平臺、跨版本且高效快速的在線數據遷移方法。按照本專利技術的一個方面,提供了一種采用prebuilt?mv(materialized?view:物化視圖)方式進行數據遷移的方法。該方法是指在預先創建好的表上面建立物化視圖,當該物化視圖被刪除的時候,原來已創建好的表仍予以保留,同時同步過來的數據也被保留。該方法采用表對象作為數據遷移的單個對象,并針對該表對象用一個主鍵刷新mv。首先在源表上創建mv日志,并在目標數據庫上創建結構一樣的目標表;然后在目標表上采用prebuilt方式創建mv,并進行完全刷新;在以后的創建過程中采用增量刷新方式,當需要進行數據庫切換時只需刷新增量-->的日志,刪除mv和保留目標表。該方法所實現的數據遷移可采用下列步驟:(1)依照預定的容量大小對表對象進行分級,將超過所述預定容量的表對象作為大表,將低于所述預定容量的表對象作為小表;(2)將所述大表作為源表,在源數據庫上創建物化視圖日志;(3)在目標數據庫上創建與所述源表的結構相同的目標表,并在所述目標表上采用prebuilt方式創建物化視圖;(4)對同步日志進行完全刷新;(5)對所述同步日志進行增量刷新;(6)創建可實現自動增量刷新的程序代碼;(7)按上述步驟(2)-(6)依次處理所有的大表;(8)對采用insert/*+append*/into...from?db_link處理的小表,整理好insertinto的腳本;(9)運行所述的insert?into腳本,對所述小表進行數據遷移;以及(10)遷移切換。更具體地,在進行遷移切換時,包括如下的一系列操作:停止源數據庫的一切活動、等待最后一批日志完成增量刷新、運行小表腳本并insert?into小表數據、等待所有的大表完成刷新、刪除源表中的mvlog和目標表中的mv并保留目標表和數據、創建與目標表有依賴關系的對象(如自增長的序列)。按照本專利技術的又一個方面,提供了一種使用創建觸發器和創建過程相結合的方式(trigger+procedure)進行數據遷移的方法。該方法采用表對象作為數據遷移的單個對象,并要求該表對象有一個主鍵。首先利用觸發器記錄該表的DML(DataManipulation?Language:數據操縱語言)日志,然后通過用戶自定義的過程與該DML日志同步。鑒于該方法主要彌補了采用prebuilt?mv方式進行數據遷移時難以刷新大表的缺點,下列步驟主要用來完全刷新大表:(1)依照預定的容量大小對表對象進行分級,將超過所述預定容量的表對象作為大表,將低于所述預定容量的表對象作為小表;(2)將所述大表作為源表,在所述源表上創建數據操縱語言的觸發器;(3)在目標數據庫上創建與所述源表結構相同的目標表;(4)所述觸發器開始工作后,分批載入所述源表中的數據至所述目標數據庫的所述目標表中;-->(5)在所述目標數據庫上創建用戶自定義的過程;(6)完全刷新由所述觸發器產生的同步日志;(7)對所述同步日志進行增量刷新;以及(8)遷移切換。更具體地,在進行遷移切換時,包括如下的一系列操作:通過用戶自定義的過程完成日志的刷新、刪除觸發器與該過程以及調度的作業、完成目標表的同步刷新。按照本專利技術的又一個方面,提供了一種創建觸發器和自定義程序與使用sql*loader工具相結合(trigger+sql*loader+程序)進行數據遷移的方法。該方法主要利用文本文件或者進程通信進行中間轉換,通過sql*loader載入數據,并依據數據庫工程師自定義的程序分析同步日志。需要指出的是,利用sql*loader工具可以將一些以文本文件格式存放的數據順利地導入到Oracle數據庫中,是一種在不同數據庫之間進行數據遷移非常便捷和常用的手段。該方法可通過下列的步驟進行數據遷移:(1)依照預定的容量大小對表對象進行分級,將超過所述預定容量的表對象作為大表,將低于所述預定容量的表對象作為小表;(2)將所述大表作為源表,在所述源表上創建數據操縱語言的觸發器;(3)在目標數據庫上創建與所述源表結構相同的目標表;(4)所述觸發器開始工作后,分批載入所述源表中的數據至所述目標數據庫的所述目標表中;(5)在中間層利用兩個進程分別連接不同字符集的數據庫;(6)完全刷新由所述觸發器產生的同步日志;(7)對所述同步日志進行增量刷新;以及(8)遷移切換。更具體地,步驟(1)中的小表載入包括兩種方式:利用select或者程序生成文本文件,通過Sql*loader載入;直接生成insert?into的腳本到文本文件,然后執行。更具體地,步驟(6)中同步日志可采用兩種方案,一是在源上根據日志直接生成DML語句,采用文本方式發送到目標執行;一是在中間層利用兩個進程,分-->別連接不同字符集的數據庫,其中的一個進程用于分析日志,另一個進程用于同步日志。更具體地,步驟(8)中的遷移切換包括同步完最后的日志、停止同步程序。采用本專利技術中基于Oracle數據庫的prebuilt?mv方式、trigger+Procedure方式和trigger+sql*loader+程序方式進行的遷移方法,均能實現跨平臺和跨數據庫版本的數據遷移,并可完成數據的重組優化,其中trigger+Sql*loader+程序方式還能實現跨字符集的數據遷移,極大了提高了數據遷移的效率,減少了停機切換時間。附圖說明讀者在參照附圖閱讀了本專利技術的具體實施方式以后,將會更清楚地了解本專利技術的各個方面。其中,圖1示出了現有技術中常用的幾種數據遷移的方法;圖2示出了本專利技術中實現在線數據遷移的三種方式;圖3示出了本專利技術中基于prebuilt?mv方式的在線數據遷移方法;圖4示出了本專利技術中基于trigger+procedure方式的在線數據遷移方法;而圖5示出了本專利技術中基于trigger+sql*loader+程序方式的在線數據遷移方法。具體實施方式下面參照附圖,對本專利技術的具體實施方式作進一步的詳細描述。圖1示出了現有技術中常用的幾種數據遷移的方法,其中,可進行在線數據遷移的方式包括standby、stream和相關本文檔來自技高網...

    【技術保護點】
    一種基于Oracle數據庫的在線數據遷移方法,其特征在于,該方法采用下列步驟實現:    (1)依照預定的容量大小對表對象進行分級,將超過所述預定容量的表對象作為大表,將低于所述預定容量的表對象作為小表;    (2)將所述大表作為源表,在源數據庫上創建物化視圖日志;    (3)在目標數據庫上創建與所述源表的結構相同的目標表,并在所述目標表上采用prebuilt方式創建物化視圖;    (4)對同步日志進行完全刷新;    (5)對所述同步日志進行增量刷新;    (6)創建可實現自動增量刷新的程序代碼;    (7)按上述步驟(2)-(6)依次處理所有的大表;    (8)對采用insert/↑[*]+append↑[*]/into…from  db_link處理的小表,整理好insertinto的腳本;    (9)運行所述的insert  into腳本,對所述小表進行數據遷移;以及    (10)遷移切換。

    【技術特征摘要】
    1.?一種基于Oracle數據庫的在線數據遷移方法,其特征在于,該方法采用下列步驟實現:(1)依照預定的容量大小對表對象進行分級,將超過所述預定容量的表對象作為大表,將低于所述預定容量的表對象作為小表;(2)將所述大表作為源表,在源數據庫上創建物化視圖日志;(3)在目標數據庫上創建與所述源表的結構相同的目標表,并在所述目標表上采用prebuilt方式創建物化視圖;(4)對同步日志進行完全刷新;(5)對所述同步日志進行增量刷新;(6)創建可實現自動增量刷新的程序代碼;(7)按上述步驟(2)-(6)依次處理所有的大表;(8)對采用insert/*+append*/into...from?db_link處理的小表,整理好insertinto的腳本;(9)運行所述的insert?into腳本,對所述小表進行數據遷移;以及(10)遷移切換。2.?如權利要求1所述的方法,其特征在于,在執行步驟(3)時,所述源表的結構在所述日志創建完成之后且在遷移數據的復制完成之前保持不變。3.?如權利要求1所述的方法,其特征在于,所述完全刷新僅在第一次同步所述日志時執行。4.?一種基于Oracle數據庫的在線數據遷移方法,其特征在于,該方法采用下列步驟實現:(1)依照預定的容量大小對表對象進行分級,將超過所述預定容量的表對象作為大表,將低于所述預定容量的表對象作為小表;(2)將所述大表作為源表,在所述源表上創建數據操縱語言的觸發器;(3)在目標數據庫上創建與所述源表結構相同的目標表;(4)所述觸發器開始工作后,分批載入所述源表中的數據至所述目標數據庫的所述目標表中;(5)在所述目標數據庫上創建用戶自定義的過程;(6)完全刷新由所述觸發器產生的同步日志;(7)對所述同步日志進行增量刷新;以及(8)遷移切換。5.?如權利要求4所述的方法,其特征在于,在執行步驟(1)時,對低于所述預定容量的表對象,采用insert/*+append*/into...from?db_link進行數據遷移。6.?如權利要求4所述的方法,其特征在于,所述日志的REP_KEY用于存放所述源表的主鍵,字段類型取決于所述源表的字段類型...

    【專利技術屬性】
    技術研發人員:陳吉平
    申請(專利權)人:阿里巴巴公司
    類型:發明
    國別省市:VG[英屬維爾京群島]

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 国产精品无码一区二区在线观一| 国产av无码专区亚洲国产精品| 日韩丰满少妇无码内射| 欧洲Av无码放荡人妇网站| 亚洲国产成人精品无码区花野真一| 国产一区二区三区无码免费| 无码成人一区二区| 国产av无码专区亚洲av果冻传媒| 亚洲最大中文字幕无码网站| 亚洲中文字幕无码一区二区三区| 亚洲成a人无码亚洲成av无码 | 国产精品无码午夜福利| 国产精品无码亚洲一区二区三区| 亚洲AV无码码潮喷在线观看| 亚洲免费日韩无码系列| 极品无码国模国产在线观看 | 亚洲欧洲无码AV电影在线观看| 亚洲AV无码资源在线观看| 少妇人妻偷人精品无码视频新浪| 永久免费av无码入口国语片| 国产精品无码久久av| 亚洲AV无码一区二区三区电影 | 无码激情做a爰片毛片AV片| AV无码免费永久在线观看| 久久久久亚洲AV无码网站| 无码少妇精品一区二区免费动态| 少妇无码太爽了在线播放| 亚洲AV无码专区日韩| 国产综合无码一区二区色蜜蜜| 人妻精品无码一区二区三区| 亚洲另类无码专区首页| 亚洲人成无码网站在线观看| 无码乱码av天堂一区二区| 亚洲一区二区无码偷拍| 精品久久久无码中文字幕边打电话| 久久久g0g0午夜无码精品| 日韩少妇无码一区二区三区| 亚洲伊人成无码综合网| 成在线人免费无码高潮喷水| 日韩精品无码视频一区二区蜜桃| 亚洲中文字幕不卡无码|