一、意義:
當(dāng)我們使用一個(gè)數(shù)據(jù)庫時(shí),總希望數(shù)據(jù)庫的內(nèi)容是可靠的、正確的,但由于計(jì)算機(jī)系統(tǒng)的故障(硬件故障、網(wǎng)絡(luò)故障、進(jìn)程故障和系統(tǒng)故障)影響數(shù)據(jù)庫系統(tǒng)的操作,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,甚至破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分?jǐn)?shù)據(jù)丟失。因此當(dāng)發(fā)生上述故障后,希望能重新建立一個(gè)完整的數(shù)據(jù)庫,該處理稱為數(shù)據(jù)庫恢復(fù)。恢復(fù)子系統(tǒng)是數(shù)據(jù)庫管理系統(tǒng)的一個(gè)重要組成部分。恢復(fù)處理隨所發(fā)生的故障類型所影響的結(jié)構(gòu)而變化。
二、備份的方法
ORACLE數(shù)據(jù)庫有三種標(biāo)準(zhǔn)的備份。導(dǎo)出/導(dǎo)入(EXPORT/IMPORT) 、冷備份、熱備份。
導(dǎo)出備份是一種邏輯備份,這種方法包括讀取一系列的數(shù)據(jù)庫日志,并寫入文件中,這些日志的讀取與其所處位置無關(guān)。
冷備份和熱備份是物理備份(也稱低級備份),它涉及到組成數(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)儲文件”(EXPORT DUMP FILE),并將重新生成數(shù)據(jù)庫寫入文件中。
它有三種模式:
a.用戶模式:導(dǎo)出用戶所有對象以及對象中的數(shù)據(jù);
b.表模式:導(dǎo)出用戶所有表或者指定的表;
c.整個(gè)數(shù)據(jù)庫:導(dǎo)出數(shù)據(jù)庫中所有對象。
它的備份有三種類型:
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)出過程安排在不對表操作的時(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)儲二進(jìn)制文件,并運(yùn)行文件,恢復(fù)對象用戶和數(shù)據(jù)。
IMPORT命令執(zhí)行的方法和EXPORT方案有關(guān)。
1、如果EXPORT所實(shí)施的是完全型方案(FULL)則在IMPORT時(shí)所有的數(shù)據(jù)對象,包括表空間,數(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:啟動(dòng)數(shù)據(jù)庫
1: SQLDBA>connect internal
SQLDBA>shutdown normal
2: SQLDBA>! cp
或
SQLDBA>!tar cvf /dev/rmt/0 /wwwdg/oracle
3: SQLDBA>startup
(三)熱備份(ACHIRELOG)
數(shù)據(jù)庫需要二十四小時(shí)運(yùn)行,而且隨時(shí)有新的數(shù)據(jù)加入.數(shù)據(jù)丟失將影響整個(gè)公司.采用archivelog mode物理備份.
?設(shè)置數(shù)據(jù)庫為automatic archivelog mode,
#su - oracle
%svrmgrl
svrmgrl>connect internal
svrmgrl>startup mount
svrmgrl>alter database archivelog
svrmgrl>shutdown
svrmgrl>exit
%vi initoracle7.ora
加入log_archive_start = true # if you want automatic archiving
log_archive_dest = $ORACLE_HOME/dbs/arch
log_archive_format = log%s.arc
%dbstart
%ps -ef|grep arch
oracle 1743 1 0 15:20:20 ? 0:00 ora_arch_oracle7
注:oracle database is in automatic archivelog mode
?full offline entire database backup, 當(dāng)數(shù)據(jù)庫初始完成后 這份備份是將來備份的基礎(chǔ)。它提供了所有與數(shù)據(jù)庫有關(guān)的拷貝.
%dbshut
%cp /oracle/oradata/oracle7/system.dbf |
|