從達夢資料庫到Oracle資料庫的效能測試資料遷移和匯入優化

2023-09-01 21:00:37

為了在同樣的資料基礎上對比達夢資料庫和Oracle資料庫的業務效能,我們需要將達夢資料庫的資料匯入到Oracle資料庫中。本文將提供一種思路來解決匯入過程中遇到的問題及存在問題記錄。

資料庫版本資訊

  • 源資料庫:達夢資料庫(DM) V8
  • 目標資料庫:Oracle資料庫 V11.2.0.4

匯出達夢資料庫的資料

首先,將達夢資料庫中的資料匯出為 .dmp 檔案格式。

匯入資料到Oracle資料庫

在完成達夢資料庫的資料匯出後,我們將嘗試將資料匯入到目標Oracle資料庫中。然而,直接使用impdp命令匯入時出現以下錯誤:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31619: invalid dump file "/u01/app/oracle/admin/orcl/dpdump/Vxxx_XXX_0816.dmp"

為了解決這個問題,我們可以嘗試使用達夢資料庫的遷移工具將資料匯入到Oracle資料庫。然而,根據反饋,有兩個表和300多個檢視匯入失敗,導致該資料庫也不可用。

為了解決這個問題,我們將採取以下步驟:

1. 在功能測試環境中匯出遷移後的Oracle資料庫所缺失的檢視和表。

  • 匯出檢視:使用expdp命令匯出檢視資料。命令範例如下:
expdp $username/$passwd@$ORACLE_SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=$dumpfile.dmp LOGFILE=$dumpfile.log SCHEMAS=$schemas INCLUDE=VIEW
請替換以下引數:
$username:資料庫使用者名稱
$passwd:資料庫使用者密碼
$ORACLE_SID:資料庫範例名
$dumpfile:匯出的檔名(與 $schemas 相同)
$schemas:需要匯出的使用者名稱
  • 匯出多表:使用exp命令匯出多個表的資料。命令範例如下:
exp $username/$passwd@$ORACLE_SID file=/$file_path/$file_name.dmp tables=table1,table2,...
請替換以下引數:
$username:資料庫使用者名稱
$passwd:資料庫使用者密碼
$ORACLE_SID:資料庫範例名
$file_path:匯出檔案的路徑
$file_name:匯出檔名稱
tables=table1,table2,...:要匯出的表名列表,以逗號分隔

2. 將匯出的檢視和表資料匯入到遷移後的Oracle資料庫中。

  • 匯入檢視:使用impdp命令匯入檢視資料。命令範例如下:
impdp $username/$passwd@$ORACLE_SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=$dumpfile.dmp LOGFILE=$dumpfile.log REMAP_SCHEMA=$fromUser:$toUser
請替換以下引數:
$username:資料庫使用者名稱
$passwd:資料庫使用者密碼
$ORACLE_SID:資料庫範例名
$dumpfile:匯入的檔名
$fromUser:匯出資料庫使用者名稱
$toUser:匯入資料庫使用者名稱
  • 匯入多表:使用imp命令匯入多個表的資料。命令範例如下:
imp $username/$passwd file=/$file_path/$file_name.dmp log=/$log_path/$log_name.log fromuser=$fromuser
請替換以下引數:
$username:資料庫使用者名稱
$passwd:資料庫使用者密碼
$file_path:匯入檔案的路徑
$file_name:匯入檔名稱
$log_path:匯入紀錄檔的路徑
$log_name:匯入紀錄檔名稱
$fromuser:匯出資料庫使用者名稱

通過以上步驟,將匯入失敗的檢視和表從功能測試環境中匯出,並將其匯入到遷移後的Oracle資料庫中。

但是,啟動應用服務,仍存在缺失相關檢視或語法方面的報錯。嘗試先將匯出的檢視和表匯入新建的資料庫使用者,再匯入從達夢服務匯出的資料庫,缺失相關檢視或語法方面的問題仍然存在。

根據Oracle資料可以成功匯入達夢,而達夢匯入Oracle卻存在報錯。足以說明:達夢做到去相容Oracle,但Oracle卻沒去相容達夢。

考慮到再繼續付出時間、精力去研究匯入資料庫啟動服務失敗的問題,不一定能夠解決該問題,且產出比較低。只好在達夢資料庫重造效能測試資料。

總結

本文介紹了在對比達夢資料庫和Oracle資料庫的業務效能時,如何將達夢資料庫的資料匯入到Oracle資料庫中。我們通過匯出.dmp檔案並利用達夢資料庫的遷移工具,進行資料庫的匯入。但由於Oracle未對達夢進行相容適配,導致最終的結果還是失敗。