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ù)庫的操作也放到腳本中,這樣我們就方便快速還原或者部署Oracle數(shù)據(jù)庫到新的機(jī)器上了。
定西網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
本文主要介紹如何結(jié)合Sql腳本和PL/SQL Developer工具來實(shí)現(xiàn)創(chuàng)建表空間、創(chuàng)建數(shù)據(jù)庫、備份數(shù)據(jù)庫、數(shù)據(jù)導(dǎo)出等操作,然后實(shí)現(xiàn)Oracle對(duì)象創(chuàng)建、導(dǎo)入數(shù)據(jù)等操作,方便我們快速了解、創(chuàng)建所需要的部署Sql腳本和數(shù)據(jù)庫操作。
1、 準(zhǔn)備數(shù)據(jù)庫創(chuàng)建腳本
[sql] view plain copy
[sql] view plain copy
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ù)庫的時(shí)候使用的。
其中E:\oracle\oradata\whcdb\whc.dbf路徑是我們要存放數(shù)據(jù)庫數(shù)據(jù)的位置,因此要保證該路徑有足夠的空間和足夠的訪問權(quán)限,否則會(huì)失敗的。
2、 導(dǎo)出數(shù)據(jù)庫對(duì)象
在PL/SQL Developer的菜單Tools=Export User Objects中出來一個(gè)對(duì)話框界面,然后框選要到處的Oracle 數(shù)據(jù)庫對(duì)象,包括表,序列,存儲(chǔ)過程,視圖,函數(shù)等等,并指定導(dǎo)出的文件名稱,如下操作。
3)導(dǎo)出表數(shù)據(jù)
導(dǎo)出表結(jié)構(gòu)和其他對(duì)象后,我們下一步就是把數(shù)據(jù)庫的表數(shù)據(jù)進(jìn)行導(dǎo)出,PL/SQL Developer工具支持導(dǎo)出數(shù)據(jù)到PL/SQL數(shù)據(jù)庫腳本中,如下所示。這樣導(dǎo)出的腳本,我們可以在PL/SQL Developer工具導(dǎo)入或者自己通過Sql plus 工具進(jìn)行導(dǎo)入。
至此,我們就已經(jīng)完成了三種腳本了,包括創(chuàng)建數(shù)據(jù)庫空間和數(shù)據(jù)庫腳本、創(chuàng)建Oracle數(shù)據(jù)庫對(duì)象(表、存儲(chǔ)過程、視圖、序列等)、創(chuàng)建導(dǎo)入數(shù)據(jù)的腳本,這樣三種合一,就是一個(gè)完整的數(shù)據(jù)庫了。最后一步就是我們?nèi)绾螌?dǎo)入數(shù)據(jù)庫對(duì)象和數(shù)據(jù)的問題了。
4)導(dǎo)入數(shù)據(jù)庫對(duì)象及數(shù)據(jù)
導(dǎo)入數(shù)據(jù)庫對(duì)象和數(shù)據(jù)的操作一樣,都可以通過Import Tables操作實(shí)現(xiàn),我們指定剛才上面兩步創(chuàng)建的數(shù)據(jù)庫腳本,執(zhí)行即可再新的環(huán)境中創(chuàng)建數(shù)據(jù)庫對(duì)象和數(shù)據(jù)庫數(shù)據(jù)了。
可以熱備份:\x0d\x0aSQL alter database begin backup\x0d\x0a然后退出SQL,將Oracle軟件和數(shù)據(jù)文件直接拷貝\x0d\x0a等都拷貝完了,再進(jìn)sqlplus 執(zhí)行:\x0d\x0aSQLalter database end backup\x0d\x0a然后將begin時(shí)刻到end時(shí)刻產(chǎn)生的歸檔也拷貝出來,\x0d\x0a這就完成了全備\x0d\x0a\x0d\x0a如果你要在oracle下備份整個(gè)數(shù)據(jù)庫:可以用expdp方便的進(jìn)行\(zhòng)x0d\x0aexpdp sys/XXX dumpfile=XXXX.dmp directory=XXXX\x0d\x0a其中directory是在oracle下建立的文件夾對(duì)象名\x0d\x0a假如你沒建立過\x0d\x0a那么首先執(zhí)行create directory dpdata1 as 'd:\test\dump';\x0d\x0a然后把expdp這樣寫directory=dpdata1
oracle 數(shù)據(jù)庫備份的步驟是:
直接通過exp命令備份需要內(nèi)容就可以了。可以參考下以下導(dǎo)出備份的方法:
1、將數(shù)據(jù)庫TEST完全導(dǎo)出,用戶名system 密碼manager 導(dǎo)出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2、將數(shù)據(jù)庫中system用戶與sys用戶的表導(dǎo)出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3、將數(shù)據(jù)庫中的表table1 、table2導(dǎo)出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4、將數(shù)據(jù)庫中的表table1中的字段filed1以"00"打頭的數(shù)據(jù)導(dǎo)出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like ?'00%'\"
把里面的數(shù)據(jù)全部提取出來,就是備份啊。 再全部insert進(jìn)去,就是還原了。
具體可以參考insert into的用法。 可以把某張表的數(shù)據(jù),完全的復(fù)制到另外一個(gè)備份表里。
要還原的話,先刪除原先的表內(nèi)容,再反過來insert into一次就好了
Insert into Table2(field1,field2,...) select value1,value2,... from Table1 前提是你先創(chuàng)建好Table2表。
如果,備份幾張表的數(shù)據(jù),那么,可以備份到dmp文件中,用命令導(dǎo)出表比較快捷。\x0d\x0a語句如下:\x0d\x0aexp test/test@ora100G file=c:\17.dmp tables=(tb1,tb2,tb3,...)\x0d\x0a開始,運(yùn)行,在彈出的“運(yùn)行”框里,粘貼上面的語句,并修改,就可以備份。\x0d\x0a解釋一下這個(gè)語句(因?yàn)榻裉焓?7號(hào),所以,就拿17.dmp作為備份文件的名稱吧!):\x0d\x0aexp:導(dǎo)出。\x0d\x0atest/test@ora100g:“test/test”是用戶名和密碼;“ora100G”是“網(wǎng)絡(luò)服務(wù)名”。\x0d\x0afile=c:\17.dmp:“c:\17.dmp”是保存到本地的全文件路徑。\x0d\x0atables=(tb1,tb2,tb3,...):“(tb1,tb2,tb3,...)”是你選擇需要備份的那些表的名稱。\x0d\x0a因?yàn)?,備份的時(shí)候一般都寫一個(gè)日志備份文檔,以方便以后查找,所以,原語句可以改寫成\x0d\x0aexp test/test@ora100G file=c:\17.dmp tables=(tb1,tb2,tb3,...) log=c:\17.text
備份分為3種:
備份的方法
ORACLE數(shù)據(jù)庫有三種標(biāo)準(zhǔn)的備份。導(dǎo)出/導(dǎo)入(EXPORT/IMPORT) 、冷備份、熱備份。
導(dǎo)出備份是一種邏輯備份,這種方法包括讀取一系列的數(shù)據(jù)庫日志,并寫入文件中,這些日志的讀取與其所處位置無關(guān)。
冷備份和熱備份是物理備份(也稱低級(jí)備份),它涉及到組成數(shù)據(jù)庫的文件,但不考慮邏輯內(nèi)容。
我們分別介紹一下這三種備份方法及其特點(diǎn):
(一)、導(dǎo)出/導(dǎo)入(EXPORT/IMPORT)
EXPORT/IMPORT是用來將ORACLE中數(shù)據(jù)移出/移入數(shù)據(jù)庫。
1、EXPORT將數(shù)據(jù)庫中數(shù)據(jù)備份成一個(gè)二進(jìn)制系統(tǒng)文件稱為“導(dǎo)出轉(zhuǎn)儲(chǔ)文件”(EXPORT DUMP FILE),并將重新生成數(shù)據(jù)庫寫入文件中。
它有三種模式:
a.用戶模式:導(dǎo)出用戶所有對(duì)象以及對(duì)象中的數(shù)據(jù);
b.表模式:導(dǎo)出用戶所有表或者指定的表;
c.整個(gè)數(shù)據(jù)庫:導(dǎo)出數(shù)據(jù)庫中所有對(duì)象。
它的備份有三種類型:
a.完全型(COMPLETE EXPORT):備份整個(gè)數(shù)據(jù)庫;
b.積累型(COMULATIVE ERPORT):備份上一次積累型備份所改變的數(shù)據(jù);
c.增量型(INCREAMENTAL EXPORT):備份上一次備份后改變的數(shù)據(jù)。
EXPORT 的命令可以交互式進(jìn)行,各參數(shù)的具體含義見附錄。
在進(jìn)行導(dǎo)出備份時(shí)我們要考慮一點(diǎn)問題,那就是導(dǎo)出的一致性,在導(dǎo)出過程 中導(dǎo)出每讀一次就讀取一個(gè)表,因而盡管導(dǎo)出是在一個(gè)特點(diǎn)時(shí)自己開始的,但不同的表讀取的時(shí)間不同,因此,導(dǎo)出開始讀一個(gè)表時(shí),此時(shí)表中的數(shù)據(jù)才是導(dǎo)出的數(shù)據(jù),這樣當(dāng)大多數(shù)表按內(nèi)部關(guān)鍵字和外部關(guān)鍵字相互聯(lián)系時(shí),在導(dǎo)出過程中這些相關(guān)聯(lián)表的改變就會(huì)導(dǎo)致導(dǎo)出的不一致性,要避開這個(gè),我們可以將導(dǎo)出過程安排在不對(duì)表操作的時(shí)候進(jìn)行。另外,當(dāng)ORACLE中RESTRICTEP CONSISTENT 選項(xiàng)就可以保證導(dǎo)出數(shù)據(jù)一致性。
2、IMPORT導(dǎo)入:
導(dǎo)入的過程是導(dǎo)出的逆過程,這個(gè)命令先讀取導(dǎo)出來的導(dǎo)出轉(zhuǎn)儲(chǔ)二進(jìn)制文件,并運(yùn)行文件,恢復(fù)對(duì)象用戶和數(shù)據(jù)。
IMPORT命令執(zhí)行的方法和EXPORT方案有關(guān)。
1、如果EXPORT所實(shí)施的是完全型方案(FULL)則在IMPORT時(shí)所有的數(shù)據(jù)對(duì)象,包括表空間,數(shù)據(jù)文件,用戶都會(huì)在導(dǎo)入時(shí)創(chuàng)建,但考慮到數(shù)據(jù)庫中的物理布局,預(yù)先創(chuàng)建表空間和用戶是有用的。
2、如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式,則需要預(yù)先設(shè)置好表空間、用戶、數(shù)據(jù)文件。
(二):冷備份
冷備份發(fā)生在數(shù)據(jù)庫已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時(shí)會(huì)提供給我們一個(gè)完整的數(shù)據(jù)庫。
數(shù)據(jù)庫使用的每個(gè)文件都被備份下來,這些文件包括:
☆所有數(shù)據(jù)文件
☆所有控制文件
☆所有聯(lián)機(jī)REDO LOG 文件
☆I(lǐng)NIT.ORA文件(可選)
值得注意的是冷備份必須是數(shù)據(jù)庫關(guān)閉的情況下完成,當(dāng)數(shù)據(jù)庫開著的時(shí)候,執(zhí)行數(shù)據(jù)庫文件系統(tǒng)備份無效。
作冷備份一般步驟是:
1:正常關(guān)閉要備份的實(shí)例(instance);
2: 備份整個(gè)數(shù)據(jù)庫到一個(gè)目錄
3:?jiǎn)?dòng)數(shù)據(jù)庫
1: SQLDBAconnect internal
SQLDBAshutdown normal
2: SQLDBA! cp
或
SQLDBA!tar cvf /dev/rmt/0 /wwwdg/oracle
3: SQLDBAstartup
(三)熱備份(ACHIRELOG)
數(shù)據(jù)庫需要二十四小時(shí)運(yùn)行,而且隨時(shí)有新的數(shù)據(jù)加入.數(shù)據(jù)丟失將影響整個(gè)公司.采用archivelog mode物理備份.