MS SQL SERVER 轉 ORACLE

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 20MAUTOEXTEND 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;