數(shù)據(jù)遷移方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種數(shù)據(jù)遷移方法和裝置。
【背景技術(shù)】
[0002] 如圖1所示,為了將一個數(shù)據(jù)庫中的多個用戶數(shù)據(jù)遷移到另一個數(shù)據(jù)庫中,通常 情況下需要先將用戶A、用戶B和用戶C等用戶的用戶數(shù)據(jù)由源數(shù)據(jù)庫導出(即,圖1中所示 的"先從源庫Exp"),然后在目標數(shù)據(jù)庫建立相對應的用戶并授權(quán),再將先前導出的用戶數(shù) 據(jù)導入到目標數(shù)據(jù)庫中(即,圖1所示的"再在目標庫imp")。然而,上述導出操作需要先獲 取用戶A、用戶B和用戶C等用戶在源數(shù)據(jù)庫中的用戶名和密碼。
[0003] 假設(shè)源數(shù)據(jù)庫的地址為:192. 168. 0. 1,目標數(shù)據(jù)庫的地址為:192. 168. 0. 2,如圖 1所示,現(xiàn)有技術(shù)中通常采用以下兩種方案來從源數(shù)據(jù)庫向目標數(shù)據(jù)庫導入用戶數(shù)據(jù):
[0004] 方案一:采用imp技術(shù)(〇raCle9i及以下版本)從源數(shù)據(jù)庫向目標數(shù)據(jù)庫導入用 戶數(shù)據(jù)。在執(zhí)行本方案時,需要先從源數(shù)據(jù)庫導出用戶數(shù)據(jù),并在目標數(shù)據(jù)庫建立對應的用 戶,再將上述導出的用戶數(shù)據(jù)導入到目標數(shù)據(jù)庫中。該方案的具體執(zhí)行過程可以包括如下 步驟:
[0005] 步驟1 :從源數(shù)據(jù)庫導出用戶數(shù)據(jù),并使用緩存空間來存儲導出的用戶數(shù)據(jù),該步 驟所對應的指令可以如下所示:
[0006] Exp userA/userAil92. 168. 0.1 file=d:\userA. dmp
[0007] Exp userB/userBil92. 168. 0.1 file=d:\userB. dmp......
[0008] 步驟2 :從緩存空間中將上述導出的用戶數(shù)據(jù)導入到目標數(shù)據(jù)庫中,其中,執(zhí)行該 操作時或者之前需要在目標數(shù)據(jù)庫建立對應的用戶。執(zhí)行上述建立用戶和導入用戶數(shù)據(jù)的 指令可以如下所示:
[0009] Create user userA identified by userA
[0010] Grant dba to userA
[0011] Create user userB identified by userB
[0012] Grant dba to userB......
[0013] Imp userA/userAil92. 168. 0. 2file=d:\userA. dmp full=y
[0014] Imp userB/userBil92. 168. 0. 2file=d:\userB. dmp full=y......
[0015] 上述采用imp技術(shù)的方案相對簡單,對于只遷移一個或者兩個特定用戶的數(shù)據(jù)時 比較方便快捷,然而對于遷移多用戶的數(shù)據(jù)時操作起來則較麻煩,這是因為在從源數(shù)據(jù)庫 導出用戶數(shù)據(jù)時必須要知道各個用戶的用戶名及密碼。也就是說,為了獲取每個用戶的用 戶數(shù)據(jù),則每次都需要先獲知該用戶的用戶名及密碼,并使用該用戶名及密碼來訪問該用 戶的用戶數(shù)據(jù),這樣大大降低了數(shù)據(jù)遷移的效率。
[0016] 方案二:采用impdp技術(shù)(oraclelOG及以上版本推薦)從源數(shù)據(jù)庫向目標數(shù)據(jù)庫 導入用戶數(shù)據(jù)。在執(zhí)行本方案時,需要先從源數(shù)據(jù)庫導出用戶數(shù)據(jù),并在目標數(shù)據(jù)庫建立對 應的用戶和虛擬目錄,其中,建立虛擬目錄的指令可以如下所示:
[0017]CreatedirectoryDATA-PUMP-DIRas'/data/oradata'
[0018] 然后將上述導出的用戶數(shù)據(jù)導入到目標數(shù)據(jù)庫中。該方案的具體執(zhí)行過程可以包 括如下步驟:
[0019] 步驟1 :從源數(shù)據(jù)庫導出用戶數(shù)據(jù),該步驟所對應的指令可以如下所示:
[0020] ExpdpuserA/userA@192. 168.0.Ifile=d:\userA.dmpdirectory=data_pump_dir schemas=userA
[0021] ExpdpuserB/userB@192.168.0.Ifile=d:\userB.dmpdirectory=data_pump_dir schemas=userB......
[0022] 步驟2 :將上述導出的用戶數(shù)據(jù)導入到目標數(shù)據(jù)庫中,其中,執(zhí)行該操作時或者之 前需要在目標數(shù)據(jù)庫建立對應的用戶。執(zhí)行上述建立用戶和導入用戶數(shù)據(jù)的指令可以如下 所示:
[0023] CreateuseruserAidentifiedbyuserA
[0024] GrantdbatouserA
[0025] CreateuseruserBidentifiedbyuserB
[0026] GrantdbatouserB......
[0027] ImpdpuserA/userA@192. 168. 0. 2file=d:\userA.dmpdirectory=data_pump_dir schemas=userA
[0028] ImpdpuserB/userB@192.168. 0. 2file=d:\userB.dmpdirectory=data_pump_dir schemas=userB......
[0029] 上述采用impdp技術(shù)的方案相對于采用imp技術(shù)的方案而言,在導入導出數(shù)據(jù)時 速度更快,從而保證數(shù)據(jù)遷移的整體速度要優(yōu)于imp技術(shù)。然而,impdp技術(shù)的實現(xiàn)邏輯和 imp技術(shù)類似,對于遷移多用戶的數(shù)據(jù)時操作起來比較麻煩,這是因為在從源數(shù)據(jù)庫導出用 戶數(shù)據(jù)時必須要知道各個用戶的用戶名及密碼。也就是說,為了獲取每個用戶的用戶數(shù)據(jù), 則每次都需要先獲知該用戶的用戶名及密碼,并使用該用戶名及密碼來訪問該用戶的用戶 數(shù)據(jù),這樣大大降低了數(shù)據(jù)遷移的效率。
[0030] 綜上所述,無論使用imp還是impdp技術(shù),都需要知道源數(shù)據(jù)庫的用戶名和密碼, 如果涉及到要導入多個用戶,就必須要知道源數(shù)據(jù)庫多個用戶的用戶名及密碼,并按照用 戶導出多個數(shù)據(jù)文件,在目標數(shù)據(jù)庫建立多個與源數(shù)據(jù)庫中的用戶對應的用戶,然后按照 用戶分別執(zhí)行多次導入命令,如此操作將會非常繁復,降低了數(shù)據(jù)遷移的效率。
[0031] 針對上述的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0032] 本發(fā)明實施例提供了一種數(shù)據(jù)遷移方法和裝置,以至少解決現(xiàn)有技術(shù)中多用戶數(shù) 據(jù)遷移時效率較低技術(shù)問題。
[0033] 根據(jù)本發(fā)明實施例的一個方面,提供了一種數(shù)據(jù)遷移方法,包括:根據(jù)接收到的登 錄指令登錄第一數(shù)據(jù)庫中的管理帳戶,其中,管理帳戶具有獲取第一數(shù)據(jù)庫中的多個用戶 的數(shù)據(jù)的權(quán)限;在管理帳戶下獲取多個用戶中的每個用戶的數(shù)據(jù)所占用的空間大?。粚⒚?個用戶的數(shù)據(jù)從第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫中與每個用戶對應的大小為空間大小的表 空間中。
[0034] 可選地,將每個用戶的數(shù)據(jù)從第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫中與每個用戶對應的 大小為空間大小的表空間中包括:在第二數(shù)據(jù)庫中分別建立與每個用戶對應的、大小為每 個用戶的數(shù)據(jù)所占用的空間大小的表空間;在第一數(shù)據(jù)庫與第二數(shù)據(jù)庫之間建立鏈接;通 過鏈接直接將每個用戶的數(shù)據(jù)從第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫中與每個用戶對應的表空 間中。
[0035] 可選地,通過鏈接直接將每個用戶的數(shù)據(jù)從第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫中與每 個用戶對應的表空間中包括:接收數(shù)據(jù)遷移指令,其中,數(shù)據(jù)遷移指令包括每個用戶的名稱 和遷移目錄;響應數(shù)據(jù)遷移指令直接將每個用戶的數(shù)據(jù)從第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫中 的遷移目錄下的表空間中。
[0036] 可選地,響應數(shù)據(jù)遷移指令直接將每個用戶的數(shù)據(jù)