資料庫遷移是可怕的事, 同質資料庫雖不打緊, 但也沒那麼簡單可以完成, 必竟資料庫的遷移是十分鎖碎的,更何況是異質資料庫的遷移, 想必是更難掌控的. Postgres Plus Advanced Server 提供同質資料庫(PPAS、PostgreSQL)及異質資料庫遷移方案,並依據 Oracle 相容性的特性, 支援 Oracle 、 SQL Server、Sybase、MySQL等異質資料庫, 大幅減少系統遷移的風險.
以下為資料庫遷移前注意事項:
1. 遷移的需求: 必須要明確列舉或說明, 以免白花功天做白功, 事先的溝通是非常必要的.
2. 硬體設備: 一般遷移的需求會遷移至新的設備、新的硬體上, 當然也有可能是用舊設備, 網路的品質及儲存媒體的穩定性是十分重要的.
3. 應用系統: 雖然遷移的標的是資料庫, 但是所應用的全都是應用系統, 如作業系統、中間鍵服務系統、商業智能系統及報表服務系統等,需要評估是否能整合至舊應用系統, 當然新建置的系統也會面臨相同的問題, 只是應用系統的整合會是在專案啟動前評估完畢,
4. 行程規劃: 透過簡易的POC, 針對資料遷移測試, 可提供評估性的參考, 例如為達到資料遷移的效率, 綜觀POC的處理時間及資料, 進一步可以規劃完善的遷移週期、時間以效能.
今天實作的是 Oracle 遷移至 PPAS 資料庫, 假設我們要遷移的是oracle sample schema中 HR 的所有物件.
1. 建立edb之專屬遷移使用者及資料庫
edb=# create user hr identified by hr login; CREATE ROLE edb=# create database hr owner hr; CREATE DATABASE
2. 設定參數檔 /opt/PostgresPlus/9.2AS/etc/toolkit.properties
SRC_DB_URL=jdbc:oracle:thin:@localhost:1521:xe SRC_DB_USER=hr SRC_DB_PASSWORD=hr TARGET_DB_URL=jdbc:edb://localhost:5444/hr TARGET_DB_USER=hr TARGET_DB_PASSWORD=hr
# cp ojdbc5.jar /opt/PostgresPlus/9.2AS/jre/lib/ext
4. 執行 runMTK.sh
# cd /opt/PostgresPlus/9.2AS/bin # ./runMTK.sh -sourcedbtype oracle -targetdbtype enterprisedb hr 來源資料庫連線資訊... 連線 =jdbc:oracle:thin:@localhost:1521:xe 使用者 =hr 密碼 =****** 目標資料庫連線資訊... 連線 =jdbc:edb://localhost:5444/hr 使用者 =hr 密碼 =****** 正在連線來源 Oracle 資料庫伺服器... 正在連線目標 EnterpriseDB 資料庫伺服器... 正在匯入 redwood 綱要... 正在建立綱要...hr 正在建立序列:DEPARTMENTS_SEQ 正在建立序列:EMPLOYEES_SEQ 正在建立序列:LOCATIONS_SEQ 正在建立資料表... 正在建立資料表:COUNTRIES 正在建立資料表:DEPARTMENTS 正在建立資料表:EMPLOYEES 正在建立資料表:JOBS 正在建立資料表:JOB_HISTORY 正在建立資料表:LOCATIONS 正在建立資料表:REGIONS 已建立 7 個資料表。 正在以 8 MB 批次載入資料表資料... 正在載入資料表:COUNTRIES ... [COUNTRIES] 已移轉 25 列。 [COUNTRIES] 資料表資料載入摘要:時間總計 (秒):0.305 列數總計:25 正在載入資料表:DEPARTMENTS ... [DEPARTMENTS] 已移轉 27 列。 [DEPARTMENTS] 資料表資料載入摘要:時間總計 (秒):0.433 列數總計:27 正在載入資料表:EMPLOYEES ... [EMPLOYEES] 已移轉 107 列。 [EMPLOYEES] 資料表資料載入摘要:時間總計 (秒):0.674 列數總計:107 大小總計 (MB):0.0087890625 正在載入資料表:JOBS ... [JOBS] 已移轉 19 列。 [JOBS] 資料表資料載入摘要:時間總計 (秒):0.513 列數總計:19 正在載入資料表:JOB_HISTORY ... [JOB_HISTORY] 已移轉 10 列。 [JOB_HISTORY] 資料表資料載入摘要:時間總計 (秒):0.802 列數總計:10 正在載入資料表:LOCATIONS ... [LOCATIONS] 已移轉 23 列。 [LOCATIONS] 資料表資料載入摘要:時間總計 (秒):0.616 列數總計:23 大小總計 (MB):9.765625E-4 正在載入資料表:REGIONS ... [REGIONS] 已移轉 4 列。 [REGIONS] 資料表資料載入摘要:時間總計 (秒):0.66 列數總計:4 資料載入摘要:時間總計 (秒):4.103 列數總計:215 大小總計 (MB):0.01 正在建立限制:JHIST_EMP_ID_ST_DATE_PK 正在建立限制:EMP_EMP_ID_PK 正在建立限制:EMP_EMAIL_UK 正在建立限制:JOB_ID_PK 正在建立限制:DEPT_ID_PK 正在建立限制:LOC_ID_PK 正在建立限制:COUNTRY_C_ID_PK 正在建立限制:REG_ID_PK 正在建立限制:JHIST_DATE_INTERVAL 正在建立限制:EMP_SALARY_MIN 正在建立限制:JHIST_EMP_FK 正在建立限制:DEPT_MGR_FK 正在建立限制:EMP_MANAGER_FK 正在建立限制:JHIST_JOB_FK 正在建立限制:EMP_JOB_FK 正在建立限制:JHIST_DEPT_FK 正在建立限制:EMP_DEPT_FK 正在建立限制:DEPT_LOC_FK 正在建立限制:LOC_C_ID_FK 正在建立限制:COUNTR_REG_FK 正在建立索引:EMP_NAME_IX 正在建立索引:EMP_DEPARTMENT_IX 正在建立索引:JHIST_DEPARTMENT_IX 正在建立索引:DEPT_LOCATION_IX 正在建立索引:LOC_COUNTRY_IX 正在建立索引:JHIST_EMPLOYEE_IX 正在建立索引:JHIST_JOB_IX 正在建立索引:EMP_JOB_IX 正在建立索引:LOC_CITY_IX 正在建立索引:LOC_STATE_PROVINCE_IX 正在建立索引:EMP_MANAGER_IX 正在建立觸發程序:SECURE_EMPLOYEES 正在建立觸發程序:UPDATE_JOB_HISTORY 正在建立視圖:EMP_DETAILS_VIEW 正在建立程序:ADD_JOB_HISTORY 正在建立程序:SECURE_DML 綱要 hr 匯入成功。 錯誤:由於權限不足,所以使用者/角色移轉失敗。 在下列 Oracle 目錄上授予使用者 SELECT 權限: DBA_ROLES DBA_USERS DBA_TAB_PRIVS DBA_PROFILES DBA_ROLE_PRIVS ROLE_ROLE_PRIVS DBA_SYS_PRIVS One or more schema objects could not be imported during the migration process. Please review the migration output for more details. 移轉日誌已經儲存至 /root/.enterprisedb/migration-toolkit/logs ******************** 移轉摘要 ******************** Sequences: 3 來源 3 Tables: 7 來源 7 Constraints: 20 來源 20 Indexes: 11 來源 11 Triggers: 2 來源 2 Views: 1 來源 1 Procedures: 2 來源 2 物件總計: 46 成功計數: 46 失敗計數: 0 *************************************************************
以上即是資料遷移步驟, 是不是十分簡單及便利..這時候又想講一段老艮, "科技始終來自於人心" , 呵呵..祝感心耶~
沒有留言:
張貼留言