Oracle中對(duì)數(shù)據(jù)對(duì)象和數(shù)據(jù)的管理,無疑都是使用PL/SQL Developer來進(jìn)行管理,該工具也提供給我們很多方便、快捷的操作,使得我們不再為Oracle本身丑陋、難用的UI而抱怨。由于我們一般都是建建表、查查數(shù)據(jù)的操作居多,較少會(huì)考慮系統(tǒng)的整個(gè)Oracle的完整備份操作。但是在我們一些發(fā)布操作中,我們必須考慮如何把Oracle的對(duì)象、表數(shù)據(jù)導(dǎo)出到Sql腳本中,并且把創(chuàng)建Oracle表空間、創(chuàng)建Oracle數(shù)據(jù)庫(kù)的操作也放到腳本中,這樣我們就方便快速還原或者部署Oracle數(shù)據(jù)庫(kù)到新的機(jī)器上了。
本文主要介紹如何結(jié)合Sql腳本和PL/SQL Developer工具來實(shí)現(xiàn)創(chuàng)建表空間、創(chuàng)建數(shù)據(jù)庫(kù)、備份數(shù)據(jù)庫(kù)、數(shù)據(jù)導(dǎo)出等操作,然后實(shí)現(xiàn)Oracle對(duì)象創(chuàng)建、導(dǎo)入數(shù)據(jù)等操作,方便我們快速了解、創(chuàng)建所需要的部署Sql腳本和數(shù)據(jù)庫(kù)操作。
1、 準(zhǔn)備數(shù)據(jù)庫(kù)創(chuàng)建腳本
create tablespace whc_tbs datafile 'E: oracle oradata whcdb whc.dbf' size 100M; --DROP TABLESPACE whc_tbs INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; create user whc identified by whc default tablespace whc_tbs; grant connect,resource to whc; grant dba to whc; --Revoke dba from whc; |
其中--的注釋語句是刪除命名空間和移除DBA用戶的權(quán)限的。
以上這些腳本是為了我們?cè)谛陆ㄒ粋(gè)表空間和Oracle數(shù)據(jù)庫(kù)的時(shí)候使用的。
其中E: oracle oradata whcdb whc.dbf路徑是我們要存放數(shù)據(jù)庫(kù)數(shù)據(jù)的位置,因此要保證該路徑有足夠的空間和足夠的訪問權(quán)限,否則會(huì)失敗的。
2、 導(dǎo)出數(shù)據(jù)庫(kù)對(duì)象
在PL/SQL Developer的菜單Tools=>Export User Objects中出來一個(gè)對(duì)話框界面,然后框選要到處的Oracle 數(shù)據(jù)庫(kù)對(duì)象,包括表,序列,存儲(chǔ)過程,視圖,函數(shù)等等,并指定導(dǎo)出的文件名稱,如下操作。
3)導(dǎo)出表數(shù)據(jù)
導(dǎo)出表結(jié)構(gòu)和其他對(duì)象后,我們下一步就是把數(shù)據(jù)庫(kù)的表數(shù)據(jù)進(jìn)行導(dǎo)出,PL/SQL Developer工具支持導(dǎo)出數(shù)據(jù)到PL/SQL數(shù)據(jù)庫(kù)腳本中,如下所示。這樣導(dǎo)出的腳本,我們可以在PL/SQL Developer工具導(dǎo)入或者自己通過Sql plus 工具進(jìn)行導(dǎo)入。
至此,我們就已經(jīng)完成了三種腳本了,包括創(chuàng)建數(shù)據(jù)庫(kù)空間和數(shù)據(jù)庫(kù)腳本、創(chuàng)建Oracle數(shù)據(jù)庫(kù)對(duì)象(表、存儲(chǔ)過程、視圖、序列等)、創(chuàng)建導(dǎo)入數(shù)據(jù)的腳本,這樣三種合一,就是一個(gè)完整的數(shù)據(jù)庫(kù)了。最后一步就是我們?nèi)绾螌?dǎo)入數(shù)據(jù)庫(kù)對(duì)象和數(shù)據(jù)的問題了。
4)導(dǎo)入數(shù)據(jù)庫(kù)對(duì)象及數(shù)據(jù)
導(dǎo)入數(shù)據(jù)庫(kù)對(duì)象和數(shù)據(jù)的操作一樣,都可以通過Import Tables操作實(shí)現(xiàn),我們指定剛才上面兩步創(chuàng)建的數(shù)據(jù)庫(kù)腳本,執(zhí)行即可再新的環(huán)境中創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象和數(shù)據(jù)庫(kù)數(shù)據(jù)了。如下所示。
執(zhí)行的數(shù)據(jù)界面如下所示。
完成上面幾個(gè)步驟,我們?cè)谛碌臄?shù)據(jù)庫(kù)環(huán)境中,就具備了所有的東西了,順利完成整個(gè)Oracle數(shù)據(jù)庫(kù)對(duì)象及數(shù)據(jù)的遷移工作。
以上值得注意的是,我們導(dǎo)出Oracle對(duì)象和數(shù)據(jù)的時(shí)候,默認(rèn)還是原來Oracle數(shù)據(jù)庫(kù)的表空間和數(shù)據(jù)庫(kù)用戶名稱的,如果我們想要在新的數(shù)據(jù)庫(kù)服務(wù)器中指定不同的表空間和數(shù)據(jù)庫(kù)用戶對(duì)象,那么我們就需要替換生成的sql腳本,并在第一步指定合理的表空間和數(shù)據(jù)庫(kù)用戶。
如果是Linux平臺(tái)下的數(shù)據(jù)庫(kù)服務(wù)器,第一步操作也是差不多的,就是指定表空間的路徑名稍微不同,其他操作并無差異。