西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → 從MSSQL server 2005中移植數(shù)據(jù)到Oracle 10g

從MSSQL server 2005中移植數(shù)據(jù)到Oracle 10g

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/8/26 14:31:20字體大。A-A+

作者:西西點(diǎn)擊:46次評(píng)論:0次標(biāo)簽: MSSQL Oracle

  • 類型:編程輔助大小:237KB語(yǔ)言:英文 評(píng)分:7.0
  • 標(biāo)簽:
立即下載

因工作需求, 把數(shù)據(jù)庫(kù)從MSSQL移植到Oracle,一想起這個(gè)事情,難度就很大,在堅(jiān)持下,終于完成了,重要的事情做了一些筆記。

1.移植前準(zhǔn)備

在移植前,需要安裝必需的各種軟件,如下:

(1).安裝好SQL server 2005的補(bǔ)丁包和SP2。

(2).安裝Oracle安裝包里的oracle客戶端瀏覽器(PL/SQL Developer)。(可以根據(jù)需要按照漢化補(bǔ)丁,漢化包不安裝也可)

(3).硬件要求:在Oracle數(shù)據(jù)庫(kù)所在的硬盤保持足夠剩余空間(至少有2GB的空間剩余);建議在啟用Oracle服務(wù)時(shí)機(jī)器的內(nèi)存不少于2GB。

沒(méi)有特別說(shuō)明的情況下,本文的數(shù)據(jù)移植是針對(duì)普通的屬性數(shù)據(jù)。

Oracle 10g For Windows
1.6
類別: 數(shù)據(jù)庫(kù)類    大。500M    語(yǔ)言: 中文
查看詳細(xì)信息 >>

2. 移植

2.1. 創(chuàng)建數(shù)據(jù)庫(kù)

打開(kāi)Oracle中的Database Configuration Assistant進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建,如圖所示:

圖表 1 打開(kāi)Database Configuration Assistant

進(jìn)入Database Configuration Assistant后點(diǎn)擊“下一步”,然后出現(xiàn)如圖表2所示的界面,選擇“創(chuàng)建數(shù)據(jù)庫(kù)”后點(diǎn)擊“下一步”:

圖表 2 創(chuàng)建數(shù)據(jù)庫(kù)

如圖表3所示選擇第一個(gè)“一般用途”然后點(diǎn)擊下一步:

圖表 3 選擇模板

   如圖標(biāo)2所示在創(chuàng)建數(shù)據(jù)庫(kù)過(guò)程中的第3步,在“全局?jǐn)?shù)據(jù)庫(kù)名”中輸入數(shù)據(jù)庫(kù)名稱,SID則會(huì)自動(dòng)默認(rèn)為全局?jǐn)?shù)據(jù)庫(kù)名,然后點(diǎn)擊“下一步”;

圖表 4 創(chuàng)建數(shù)據(jù)庫(kù)

     點(diǎn)擊如圖表5所示界面中的“確定”按鈕系統(tǒng)就開(kāi)始創(chuàng)建數(shù)據(jù)庫(kù)了。

圖表 5

圖表 6 正在傳教數(shù)據(jù)庫(kù)

最后點(diǎn)擊如圖表4所示中的“退出”按鈕就創(chuàng)建數(shù)據(jù)庫(kù)完成了。

圖表 7 創(chuàng)建數(shù)據(jù)庫(kù)完成

2.2. 登錄Oracle

打開(kāi)PL/SQL Developer并用system(數(shù)據(jù)庫(kù)默認(rèn)的用戶名)用戶身份登錄到XQ2DSGN并選擇連接為SYSDBA,如圖所示:

圖表 8 登錄到PLSQL

 

2.2.1. 創(chuàng)建表空間

創(chuàng)建表空間的sql語(yǔ)句:

SQL>create tablespace xq2dsgn datafile 'G:\oracle\product\10.2.0\oradata\xq2dsgn\xq2dsgn.dbf' size 2048m autoextend on next 10m maxsize unlimited ;

 

(參考:

通過(guò)PL/SQL Developer登錄到Oracle數(shù)據(jù)庫(kù)上后,打開(kāi)菜單:文件/新建/命令窗口 ,打開(kāi)一個(gè)命令窗口然后在該命令窗口中執(zhí)行腳本創(chuàng)建和刪除表空間,新建用戶和授權(quán)的操作,如圖所示:

圖表 9 打開(kāi)命令窗口

創(chuàng)建表空間

Sql>create tablespace xqds2gn datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' size 200m autoextend on next 10m maxsize unlimited;

Sql>alter database datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' autoextend on; 

1 DATAFILE: 表空間數(shù)據(jù)文件存放路徑
2 SIZE: 起初設(shè)置為200M
3 UNIFORM: 指定區(qū)尺寸為128k,如不指定,區(qū)尺寸默認(rèn)為64k 
4 空間名稱xq2dsgn 與 數(shù)據(jù)文件名稱 xq2dsgn.dbf 不要求相同,可隨意命名.

5 AUTOEXTEND ON/OFF 表示啟動(dòng)/停止自動(dòng)擴(kuò)展表空間

alter database datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' resize 500m;

//手動(dòng)修改數(shù)據(jù)文件大小為500M

圖表 10 表空間創(chuàng)建完成

刪除表空間

語(yǔ)句如下:

DROP TABLESPACE xq2dsgn INCLUDING CONTENTS AND DATAFILES;

2.2.2. 創(chuàng)建用戶

 

1.建立用戶并為用戶指定缺省的永久表空間和臨時(shí)表空間

SQL> create user xq2dsgn identified by xq2dsgn

default tablespace xq2dsgn

temporary tablespace temp;

用戶已創(chuàng)建。(user xq2dsgn表示用戶名:xq2dsgn,identified by后面表示密碼)

2.2.3. 對(duì)用戶進(jìn)行授權(quán)

授予用戶會(huì)話的權(quán)限如圖所示:

Grant create session to xq2dsgn;

授予用戶創(chuàng)建表格的權(quán)限;

Grant create table to xq2dsgn;

授予用戶設(shè)定表空間大小的權(quán)限;

Grant unlimited tablespace to xq2dsgn;

授予用戶DBA權(quán)限:

grant dba to xq2dsgn;

圖表 11 創(chuàng)建用戶和授權(quán)

2.3. 導(dǎo)出數(shù)據(jù)

2.3.1. 打開(kāi)SQL server導(dǎo)入導(dǎo)出數(shù)據(jù)向?qū)?/p>

登錄到SQL server 2005資源對(duì)象管理器選擇“數(shù)據(jù)庫(kù)”并找到要導(dǎo)出到Oracle中的數(shù)據(jù)庫(kù),然后右擊選擇“任務(wù)”→“導(dǎo)出數(shù)據(jù)”。如圖所示:

圖表 12 DTS導(dǎo)出數(shù)據(jù)

2.3.2. 選擇數(shù)據(jù)源

彈出窗體如下圖,點(diǎn)擊“下一步”

2.3.3. 選擇目標(biāo)數(shù)據(jù)庫(kù)和配置屬性

如下圖所示選擇“Oracle provider for oledb”

圖表 13 選擇目標(biāo)數(shù)據(jù)庫(kù)

(2)導(dǎo)入到本地計(jì)算機(jī)的屬性配置

如圖所示,在“輸入服務(wù)器名稱”中輸入剛才在本計(jì)算機(jī)上新建的Oracle數(shù)據(jù)庫(kù)名稱,在“用戶名稱”和“密碼”中輸入剛才新建及設(shè)定的用戶名和密碼,點(diǎn)擊“測(cè)試連接”提示“測(cè)試連接成功”則可以點(diǎn)擊“確定”并進(jìn)行下一步操作了。

圖表 14 配置屬性

(3)導(dǎo)入到域中的其他計(jì)算機(jī)上的屬性配置

如圖所示:其中服務(wù)名稱輸入的是目標(biāo)計(jì)算機(jī)的IP和目標(biāo)Oracle數(shù)據(jù)庫(kù)名稱。


2.3.4. 選擇源表和源視圖及目標(biāo)表,并編輯映射

選擇需要導(dǎo)出的表或者全選(這里建議根據(jù)表的類型和復(fù)雜程度選擇一個(gè)或者多個(gè)進(jìn)行導(dǎo)出,以免全選發(fā)生錯(cuò)誤時(shí)很難更正)。

圖表 15選擇源表和源視圖

編輯映射。在該圖中,在每行的目標(biāo)表處點(diǎn)擊,然后點(diǎn)擊“編輯映射”按鈕,彈出窗體如下圖:

點(diǎn)擊右上方的“編輯SQL”按鈕,彈出如下窗體:

該窗體顯示了oracle數(shù)據(jù)庫(kù)中,即將創(chuàng)建的數(shù)據(jù)庫(kù)表的sql語(yǔ)句。如果有以下情況:(1)表名、字段名中有小寫字母;(2)字段類型不正確;(3)存在EVENTID字段或者其他的uniqueidentifier 16類型的字段(GUID對(duì)應(yīng)的字段);我們需要進(jìn)行修改:(1)確保引號(hào)內(nèi)的表名、字段名均為大寫;(2)字段類型正確;(3)VARCHAR2(38) DEFAULT SYS_GUID() NOT NULL

該表中,我們需要對(duì)EVENTID字段進(jìn)行修改,修改后的窗體如下圖:

 

修改完畢,點(diǎn)擊“確定”按鈕。

該步驟,需要依次檢查每個(gè)表,確認(rèn)每個(gè)表的sql語(yǔ)句無(wú)誤后,才能進(jìn)行下一步操作。()

有些表名及字段名均存在小寫或者大小寫均有的現(xiàn)象,直接導(dǎo)入Oracle數(shù)據(jù)庫(kù),則引起使用中的一些錯(cuò)誤。因此,我們?cè)谶@里手工將上圖的sql語(yǔ)句中,引號(hào)內(nèi)的表名、字段名全部改為大寫,并將“列映射”頁(yè)面的目標(biāo)數(shù)據(jù)字段改為全部大寫,如果想要繼續(xù)使用小寫的表名則注意引號(hào)的應(yīng)用這里不做說(shuō)明.

2.3.5. 執(zhí)行導(dǎo)出

選擇完表后點(diǎn)擊“下一步”或者點(diǎn)擊“完成”如果不出錯(cuò)則提示導(dǎo)入成功如圖所示:

圖表 16 執(zhí)行導(dǎo)入成功

3. 特殊字段處理

3.1. 對(duì)于自增長(zhǎng)字段的處理

Sql server數(shù)據(jù)庫(kù)中,有時(shí)會(huì)采用自增長(zhǎng)的字段做為主鍵,但oracle數(shù)據(jù)庫(kù)中沒(méi)有這樣的字段,因此需要我們單獨(dú)處理這樣的字段。

以下以StationSeries表的objectid字段為例進(jìn)行說(shuō)明。

StationSeries表的objectid在sql server數(shù)據(jù)庫(kù)中為int類型,標(biāo)識(shí)增量為1;導(dǎo)入oracle數(shù)據(jù)庫(kù)中后,字段類型為integer。

(1) 新建一個(gè)sql窗口(登陸plsql后,F(xiàn)ile主菜單,new –>sql window即可)。

(2) 在該窗口中輸入以下sql語(yǔ)句:

Select max(objectid) from stationseries;

(3)按F8,執(zhí)行該語(yǔ)句,看到最大ID值為4743。如下圖:

(3) 新建一個(gè)序列。在sql窗口,輸入以下sql語(yǔ)句:

create sequence OBJECTID_STATIONSERIESminvalue 4744 maxvalue 99999999999999999999999999start with 4744 increment by 1 nocache;

用鼠標(biāo)選中該條語(yǔ)句,并按F8,執(zhí)行該語(yǔ)句,即創(chuàng)建了一個(gè)序列。

說(shuō)明:該語(yǔ)句中,OBJECTID_STATIONSERIES為序列的名字;Minvalue之后的4744為上面的sql語(yǔ)句最大的objectid值+1即:4743 +1=4744;maxvalue填盡可能大的數(shù)字即可。Start with值同minvalue,increment by 1表示每次遞增1。

如下圖:

(4)建立觸發(fā)器。

同樣,在sql窗口,輸入以下sql語(yǔ)句:

create or replace trigger objectID_stationseries

  before insert on stationseries 

  for each row

declare

  -- local variables here

  nextid number;

begin

  IF :new.objectid IS NULL or :new.objectid=0 THEN

    select objectid.nextval

    into nextid

    from sys.dual;

    :new.objectid:=nextid;

  end if;

end objectID;

用鼠標(biāo)選中該條語(yǔ)句,并按F8,執(zhí)行該語(yǔ)句,即創(chuàng)建了一個(gè)StationSeries表的對(duì)objectid自增的觸發(fā)器。說(shuō)明:該語(yǔ)句中,objectID_stationseries為觸發(fā)器的名字。before insert on之后的stationseries為建立觸發(fā)器的表名。Objectid即為字段。

經(jīng)過(guò)上述四個(gè)步驟,我們就可實(shí)現(xiàn)類似sql server數(shù)據(jù)庫(kù)中的自動(dòng)增長(zhǎng)字段,而無(wú)需更改代碼。

在導(dǎo)入oracle數(shù)據(jù)庫(kù)結(jié)束后,我們需要檢查sql server數(shù)據(jù)庫(kù),對(duì)于其他表中的自增字段,也需要重復(fù)上述步驟實(shí)現(xiàn)在oracle數(shù)據(jù)庫(kù)中自增字段。

至此,從sql server數(shù)據(jù)庫(kù)至oracle數(shù)據(jù)庫(kù)的移植工作就結(jié)束了。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)