2013年5月15日 星期三

異質資料庫遷移實作 (Oracle to PPAS)


資料庫遷移是可怕的事, 同質資料庫雖不打緊, 但也沒那麼簡單可以完成, 必竟資料庫的遷移是十分鎖碎的,更何況是異質資料庫的遷移, 想必是更難掌控的. 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

3. 複製 oracle jdbc driver 到 /opt/PostgresPlus/9.2AS/jre/lib/ext目錄下
    # 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

*************************************************************

以上即是資料遷移步驟, 是不是十分簡單及便利..這時候又想講一段老艮, "科技始終來自於人心" , 呵呵..祝感心耶~

沒有留言:

張貼留言

HDB 擴充套件 PXF (Pivotal Extension Framework) 應用

在Hadoop生態圈裡, 雖然擁有眾多生態系統工具, 但大多用戶仍然需要的是SQL的操作介面, Pivotal HDB 提供一個在Hadoop上運行的標準SQL引擎介面, 箇中好處開發者最能感受, 但本篇重點不在這, 哈哈~ 主要分享在HDB上可以輕易整合外部資料的應用. ...