2013/12/09

Published 12月 09, 2013 by

SQL SERVER 轉 ORACLE

1.     透過SQL SERVER 2008 Standard版本的IMPORT/EXPORT 轉換
2.     安裝Oracle Client/設定TNS
3.     Create Oracle User Account/Create Oracle Datafile
4.     import data to Oracle
5.     注意事項



環境:
Source: SQL Server Express 2008 R2
Target: Oracle DB 10.2.0.4
轉換Server:SQL Server 2008 R2 Standard

一、安裝匯入匯出工具
先行安裝SQL Server 2008 R2 Standard版本,上面會有import/import工具


二、安裝Oracle Client & TNS

注意事項…這邊也搞了很久:
Oracle Client設的要設Oracle Home(我的電腦→內容→進階→新增系統變數):


TNS:
C5SUB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.55.78.8)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = c5pepm)
    )
  )
PS.安裝及設定TNS這邊…不說明…基本功夫

三、Create Datafile/User

CREATE TABLESPACE SAFTY DATAFILE
  '/oradata/c5pepm/data/safty/safty_01.dbf' SIZE 20M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT MANUAL
FLASHBACK ON;


CREATE USER SAFTY
  IDENTIFIED BY VALUES 'safty'
  DEFAULT TABLESPACE SAFTY
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;
  GRANT CONNECT TO SAFTY;
  GRANT RESOURCE TO SAFTY;
GRANT CREATE TABLE TO safty;
ALTER USER SAFTY DEFAULT ROLE ALL;
  GRANT UNLIMITED TABLESPACE TO SAFTY;
  ALTER USER SAFTY QUOTA UNLIMITED ON SAFTY;
ALTER USER SAFTY IDENTIFIED BY safty;


四、執行SQL Server匯入和匯出精靈:


選擇來源端:SQL Server Native Client 10.0伺服器名稱,再按一下重新整理,選擇要匯出的資料庫

選擇要匯入的Oracle DB,選擇Oracle Provider for OLE DB,再按一下屬性資料來源:填入TNS設定的名稱及帳號密嗎,最後測試一下測試連線

下一步…
選擇要匯入的TABLE,若要查看SQL語法,可以按編輯對應,
下一步…

下一步…
下一步…
下一步…

完成匯入資料,關閉。


五、注意事項

1.ORA-06413 Error
若安裝在64位元版本,在import/export 會有error產生

Test connection failed becase of an error in:  ORA-06413:  Connection not open.

原因是安裝的路徑有" C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn"( )為不合法字元,不能運行,解法就是把DTS這一個目錄COPY出來。

COPY FILE C:\Program Files (x86)\Microsoft SQL Server\100\DTS\ TO C:\DTS

在次執行" DTSWizard.exe"此檔案(看起來是免安裝版的軟體)

2.Client設定
Oracle 10g Clinet(每一版本有不一樣的設定):
[HKEY_LOCAL_MACHINE\SOFTWARE
\Microsoft\MSDTC\MTxOCI]
其它版本詳見此網頁:

3.SQL Server轉Oracle,在sqlplus下Select會出錯,需要加雙引號才查得到資料。

原因:在轉的過程,SQL Server自動把table加雙引號,需要把雙引號拿掉。

如果已經轉過了要在修改,方式如下:

使用SYS帳號:
SELECT 'ALTER TABLE "' ||SEGMENT_NAME || '" RENAME TO ' ||SEGMENT_NAME || ';' FROM DBA_SEGMENTS WHERE OWNER='SAFTY' AND SEGMENT_TYPE='TABLE' AND SEGMENT_TYPE NOT LIKE ('%$%');

在到User帳號底下執行產生的SQL,修改Table名稱方式如下:

ALTER TABLE OLD_TABLE_NAME RENAM TO NEW_TABLE_NAME;