一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用Oracle Sql Developer將SQL SERVER 2008數(shù)據(jù)庫移植到Oracle 11g

 鷹皇軟件 2014-04-25

上一次,我使用手工轉(zhuǎn)換SQL腳本的方式進行數(shù)據(jù)庫的遷移,其間過程相當繁瑣,特別是標識符長度的限制讓我焦頭爛額,因為我們的系統(tǒng)中長標識符真是多如繁星,另外,表結(jié)構(gòu)建好之后,數(shù)據(jù)的遷移又是一個相當復雜的過程,因為修改了不少的表名,需要把導出的數(shù)據(jù)和表一一對應(yīng)上。

      但是,除了手工的方式之外,其實我們還有更為簡便和自動化的解決方案,那就是ORACLE官方提供的Sql Developer自帶的Oracle Migration Workbench。

什么是Oracle SQL Developer?在官方頁面上,是這樣介紹它的:

Oracle SQL Developer is a free and fully supported graphical tool for database development. With SQL Developer, you can browse database objects, run SQL statements and SQL scripts, and edit and debug PL/SQL statements. You can also run any number of provided reports, as well as create and save your own. SQL Developer enhances productivity and simplifies your database development tasks .

另外,通過第三方驅(qū)動包,該工具還支持連接和管理各種主流數(shù)據(jù)庫服務(wù)器。

      下面就把我使用這個工具遷移Microsoft SQL Server 2008數(shù)據(jù)庫到Oracle 11G的過程記錄下來,為了積累也為分享。

      第一部分:獲取工具

      第二部分:建立資料檔案庫(Migration Repository)

      第三部分:數(shù)據(jù)庫移植向?qū)?/span>

      第四部分:SqlServer中的架構(gòu)到Oracle中的模式,名稱的處理

      第五部分:轉(zhuǎn)移數(shù)據(jù)

      第六部分:存儲過程和函數(shù)

 

      首先,當然是獲得工具,該工具在Oracle Sql Developer官方下載頁面里面可以直接下載到。Windows 32位直連地址:Windows 32bit Sql Developer。Oracle Sql Developer需要JDK的支持,在下載頁面中提供了包含JDK的下載包,還有支持各種操作系統(tǒng)的下載選項。

      下載后,解壓到任意位置。直接運行程序。第一次運行,需要指定JDK的目錄。

      啟動后,我們要做的第一件事,不干別的,先下載SQL SERVER的驅(qū)動程序。點擊菜單幫助,選擇檢查更新,彈出檢查更新向?qū)Т翱?,第一頁一般是廢話,直接下一步,等更新中心列表加載完畢后,只選擇“Third Party SQL Developer extensions”,點擊下一步,等待更新搜索完畢后,中列表中找到并選中 JTDS JDBC Driver,如下圖:

image

      下一步,在許可協(xié)議頁面,點擊“我同意”按鈕后再點下一步,等下載完畢后關(guān)閉窗口,彈出提示需要重啟程序才能完成更新,點擊“”。等程序重啟完畢。

      環(huán)境準備完畢,開始進入到正題移植數(shù)據(jù)庫。

建立資料檔案庫(Migration Repository)

 

      一、連接到Oracle

      在程序左邊的連接窗口中,點擊加號按鈕,添加一個到Oracle數(shù)據(jù)庫的dba連接,如下圖:

      image

      配置完成后,點擊連接按鈕,連接到數(shù)據(jù)庫。

      二,建立用戶

      打開到Oracle數(shù)據(jù)的連接,新建一個用戶,我們要在該用戶的模式中建立所謂的“資料檔案庫”,并使用該用戶去建立SQL Server移植后的用戶名,以及做其它的一些工作。按照幫助中的說明,這個用戶最少需要以下權(quán)限和角色:

Roles 
CONNECT WITH ADMIN OPTION,RESOURCE WITH ADMIN OPTION

Privileges 
ALTER ANY ROLE,ALTER ANY SEQUENCE,ALTER ANY TABLE,ALTER TABLESPACE,ALTER ANY TRIGGER,COMMENT ANY TABLE,CREATE ANY SEQUENCE,CREATE ANY TABLE,CREATE ANY TRIGGER,CREATE VIEW WITH ADMIN OPTION,CREATE PUBLIC SYNONYM WITH ADMIN OPTION,CREATE ROLE 
CREATE USER,DROP ANY SEQUENCE,DROP ANY TABLE,DROP ANY TRIGGER,DROP USER,DROP ANY ROLE,GRANT ANY ROLE,INSERT ANY TABLE,SELECT ANY TABLE,UPDATE ANY TABLE

以下語句直接建立一個名為migrations的用戶

-- Create the user 
create user MIGRATIONS

identified by MIGRATIONS 
  default tablespace USERS 
  temporary tablespace TEMP 
  profile DEFAULT; 
-- Grant/Revoke role privileges 
grant connect to MIGRATIONS with admin option; 
grant resource to MIGRATIONS with admin option; 
-- Grant/Revoke system privileges 
grant alter any role to MIGRATIONS; 
grant alter any sequence to MIGRATIONS; 
grant alter any table to MIGRATIONS; 
grant alter any trigger to MIGRATIONS; 
grant alter tablespace to MIGRATIONS; 
grant comment any table to MIGRATIONS; 
grant create any sequence to MIGRATIONS; 
grant create any table to MIGRATIONS; 
grant create any trigger to MIGRATIONS; 
grant create any view to MIGRATIONS; 
grant create materialized view to MIGRATIONS with admin option; 
grant create public synonym to MIGRATIONS with admin option; 
grant create role to MIGRATIONS; 
grant create session to MIGRATIONS with admin option; 
grant create synonym to MIGRATIONS with admin option; 
grant create tablespace to MIGRATIONS; 
grant create user to MIGRATIONS; 
grant create view to MIGRATIONS with admin option; 
grant drop any role to MIGRATIONS; 
grant drop any sequence to MIGRATIONS; 
grant drop any table to MIGRATIONS; 
grant drop any trigger to MIGRATIONS; 
grant drop tablespace to MIGRATIONS; 
grant drop user to MIGRATIONS; 
grant grant any role to MIGRATIONS; 
grant insert any table to MIGRATIONS; 
grant select any table to MIGRATIONS; 
grant unlimited tablespace to MIGRATIONS with admin option; 
grant update any table to MIGRATIONS;

       再次點擊連接中的加號按鈕,添加一個使用剛剛新建立的用戶的連接。

       image

      連接后,在該連接上點擊右鍵,選擇移植資料檔案庫-關(guān)聯(lián)移植資料檔案庫,程序會在該用戶下建立移植資料檔案庫所需要的表、存儲過程等等,彈出一個對話框顯示當前建立的進度,稍等片刻即建立完畢。


數(shù)據(jù)庫移植向?qū)?/strong>

      一,建立到源SqlServer數(shù)據(jù)庫的連接

      在連接窗口中,點擊綠色加號按鈕,打開連接配置窗口,按下圖建立到SqlServer的連接:

image

      因為動態(tài)商品的使用,使得原來SqlServer配置頁中默認的1433往往沒有辦法連接到SqlServer2008數(shù)據(jù)庫,修改為1434即可。

      二、啟動數(shù)據(jù)庫移植向?qū)?/span>

      建立到SqlServer的連接后,開始對數(shù)據(jù)庫進行移植。有兩個地方可以啟動數(shù)據(jù)庫移植向?qū)?,一個是在新建的SqlServer連接上點擊右鍵,選擇移植到Oracle,另一個是在菜單工具-移植-移植,啟動向?qū)Ш?,第一頁當然是向?qū)У暮喗椋ㄟ^簡介,我們可以知道整個移植過程有7步,并且有兩個先決條件,如下圖:

     image

      直接點擊下一步。

      三、選擇資料檔案庫

      在這個頁面中,我們也可以去建立連接和資料檔案庫,也就是前一部分中我們所做的工作在這里也可以進行。當然選擇我們剛剛建立的migrations連接,如下圖:

image

      這里截斷的意思是將資料檔案庫清空,我們建立一個移植項目后,所有抓取的數(shù)據(jù)庫結(jié)構(gòu)信息、統(tǒng)計信息還有轉(zhuǎn)換記錄等都保存在這個資料檔案庫中,只要項目名稱不同,即使不清空資料檔案庫也不會影響到移植工作。當然,如果希望更“清爽”一點,也可以勾選。這是后話。

      四、為轉(zhuǎn)換項目命名

      選擇好資料檔案庫后,點擊下一步,為我們的轉(zhuǎn)換項目輸入名稱和備注,以便識別。另外,還需要指定腳本生成目錄,用于存放向?qū)?zhí)行過程中生成的腳本。

      五、選擇源數(shù)據(jù)庫連接

      然后繼續(xù)下一步,選擇源數(shù)據(jù)庫,在這里有聯(lián)機和離線兩種模式,聯(lián)機即是直接連接到源數(shù)據(jù)進行抓取,而離線則是在SqlDeveloper不直接連接到源數(shù)據(jù)庫的情況下,通過SqlDeveloper提供的腳本預先捕獲數(shù)據(jù)庫,得到數(shù)據(jù)庫結(jié)構(gòu)文件后,通過向?qū)搿?/p>

      這里當然是選擇我們剛才建立的SqlServer連接。

      六、選擇捕獲源數(shù)據(jù)庫

      在這一步中,顯示為兩個多選框,左邊列出Sql Server中所有可選的數(shù)據(jù)庫,通過中間的按鈕將數(shù)據(jù)庫移動到右邊的已選數(shù)據(jù)庫中。如下圖:

image

      七、數(shù)據(jù)類型轉(zhuǎn)換選項

      在這一頁中,列出了所有系統(tǒng)內(nèi)置的數(shù)據(jù)類型轉(zhuǎn)換對應(yīng)關(guān)系??梢云溥M行修改,一般不作修改直接下一步。如下圖:

image

      八、選擇目標數(shù)據(jù)庫

      與源數(shù)據(jù)庫的選擇一樣,目標數(shù)據(jù)庫的選擇同樣也有聯(lián)機和離線兩種方式。仍舊選擇聯(lián)機。選擇orcl(migrations)連接。

      九、移動數(shù)據(jù)選項

      這個頁面中,也提供了聯(lián)機或離線兩種方式進行數(shù)據(jù)移動。所謂聯(lián)機雖然“據(jù)說”可以直接以聯(lián)機的方式從源數(shù)據(jù)庫中移動數(shù)據(jù)到Oracle中,可我試過幾次沒有成功,原因不明。最終我選擇了離線的方式進行數(shù)據(jù)移動。所謂離線移動數(shù)據(jù),是在我們指定的腳本存放目錄中生成“數(shù)據(jù)移動”腳本,分別在源數(shù)據(jù)庫中卸載數(shù)據(jù)(即導出)和在目標數(shù)據(jù)庫中加載數(shù)據(jù)。選擇好后,點擊下一步。

      十、選項完畢,開始執(zhí)行

      在向?qū)У淖詈?,是一個用于確認的“概要”頁面。確認無誤后,點擊完成。移植將會開始執(zhí)行。

image


SqlServer中的架構(gòu)到Oracle中的模式,名稱的處理

      通過執(zhí)行移植向?qū)?,如果沒有錯誤的話,那么表結(jié)構(gòu)基本上都會建立起來了,在連接中打開orcl(migrations)連接,找到最下面的其它用戶,假設(shè)你的表都在dbo架構(gòu)下,那么找到dbo_源數(shù)據(jù)庫名,展開它,可以看到在表中已經(jīng)有原數(shù)據(jù)庫中的所有表。但是,為什么會顯示為dbo_源數(shù)據(jù)庫名呢?我很不喜歡這樣的用戶名。我希望它顯示為源數(shù)據(jù)庫名,要怎樣做呢?

      在程序的左下角,是移植項目窗格,在里面可以看到我們剛才建立的移植項目名。展開它,會顯示我們執(zhí)行過向?qū)У娜掌诤蜁r間,繼續(xù)展開,可以看到兩個節(jié)點,叫作捕獲的數(shù)據(jù)庫對象轉(zhuǎn)換的數(shù)據(jù)庫對象,如下圖:

image

      在捕獲的數(shù)據(jù)庫對象上點擊右鍵,選擇轉(zhuǎn)換,再次打開數(shù)據(jù)移植向?qū)?/span>。點擊下一步,會直接跳轉(zhuǎn)到轉(zhuǎn)換頁,這一次的轉(zhuǎn)換頁面與前一部分的轉(zhuǎn)換頁稍有不同。不同之處在于多出了一個選項卡,叫對象命名,選擇它打開,如下圖所示:

image

      在這個頁面中,顯示了一個數(shù)據(jù)列表,列出了源數(shù)據(jù)庫的表名、字段名、約束名、視圖名、架構(gòu)名等等所有的標識符的原始標識符、新建標識符、是否經(jīng)過轉(zhuǎn)換、原始限定名、標識符類型等信息。因為Oracle中不支持30個字符以上的標識符,所以當碰到原始標識符超過30個字符時,移植向?qū)詣訉⒅財?,如果有重名,則會加上_1之類的后綴。

      很明顯,在這里,它把我們原來的dbo架構(gòu)名轉(zhuǎn)換成了dbo_數(shù)據(jù)庫名,我們只要找到它,將新標識符改為數(shù)據(jù)名,即可實現(xiàn)我們這部分的需求。

      修改完成后,點擊下一步,接著按之前的設(shè)置完成整個向?qū)?,將修改提交到資料檔案庫中。注意,這次的向?qū)Р]有去幫我建立新用戶和表結(jié)構(gòu)等等,還需要進一步操作。

      在主界面中的移植項目窗格,在轉(zhuǎn)換的數(shù)據(jù)庫對象上點擊右鍵,選擇生成目標,再次打開移植向?qū)?,又一次按之前我們的選擇完成整個向?qū)В@一次,才是真正建立了我們想要的用戶名。

      然后,把自動生成的老用戶名和模式都刪除掉吧。具體操作就不細說啦。

轉(zhuǎn)移數(shù)據(jù)

      上一部分說了移植向?qū)г贠racle數(shù)據(jù)庫中自動生成了我們所需要的表結(jié)構(gòu),但是并沒有幫我把數(shù)據(jù)成功導入過去。于是我們采用了生成離線數(shù)據(jù)移動腳本的方式來導數(shù)據(jù)。

      在移植向?qū)е械捻椖宽撝?,我們選擇了腳本生成的目錄,打開該目錄,可以看到一個名為“數(shù)據(jù)移動\項目名稱\日期時間\”的子目錄,其中包含了如下圖所示的文件:

image

      看以看到其中包含了4個腳本文件,兩個是用于Windows的,另兩個是用于*nix的。名為unload_script的是數(shù)據(jù)導出腳本,用于從源數(shù)據(jù)庫中生成數(shù)據(jù)導出文件,名為oracle_ctl的是數(shù)據(jù)導入腳本。

      打開cmd,瀏覽到當前目錄,執(zhí)行以下命令以導出數(shù)據(jù):

>unload_script [server] [username] [password]

      其中的server是源數(shù)據(jù)庫服務(wù)器,username和password是能訪問到源數(shù)據(jù)庫的用戶名密碼。稍等一會,提示導出完成后,接著執(zhí)行下面命令以導入數(shù)據(jù):

>oracle_ctl [oracleusername] [password]

      在這里不需要指定數(shù)據(jù)庫名之類的,因為在腳本中已經(jīng)指定了。

      等待片刻導入完畢后即可。蠻簡單的。不明白為什么聯(lián)機就是不能成功,做的難道不是一樣的工作嘛。



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲天堂国产精品久久精品| 麻豆视传媒短视频在线看| 午夜久久久精品国产精品| 亚洲品质一区二区三区| 91麻豆精品欧美视频| 欧美成人久久久免费播放| 亚洲欧美日韩另类第一页| 午夜精品福利视频观看 | 丰满熟女少妇一区二区三区| 亚洲最新一区二区三区| 精品久久少妇激情视频| 91欧美日韩一区人妻少妇| 国产传媒精品视频一区| 国产av大片一区二区三区| 久久99青青精品免费| 人妻内射精品一区二区| 四季精品人妻av一区二区三区| 日本二区三区在线播放| 日本一品道在线免费观看| 国产成人在线一区二区三区 | 日韩欧美中文字幕人妻| 日本黄色美女日本黄色| 欧美精品一区二区水蜜桃| 国产一区国产二区在线视频| 99热在线播放免费观看| 欧美国产日本高清在线| 亚洲中文字幕在线观看黑人| 日本午夜福利视频免费观看| 日本女优一色一伦一区二区三区| 久久国产亚洲精品成人| 护士又紧又深又湿又爽的视频| 中国黄色色片色哟哟哟哟哟哟| 九九热在线视频观看最新| 欧美一区二区三区性视频 | 99国产成人免费一区二区| 色狠狠一区二区三区香蕉蜜桃| 人妻偷人精品一区二区三区不卡| 麻豆一区二区三区精品视频| 国产精品日韩精品最新| 国内尹人香蕉综合在线| 日韩中文高清在线专区|