ORACLE數(shù)據(jù)庫(kù)有兩類(lèi)備份方法。第一類(lèi)為物理備份,該方法實(shí)現(xiàn)數(shù)據(jù)庫(kù)的完整恢復(fù),但
數(shù)據(jù)庫(kù)必須運(yùn)行在歸擋模式下(業(yè)務(wù)數(shù)據(jù)庫(kù)在非歸擋模式下運(yùn)行),且需要極大的外部
存儲(chǔ)設(shè)備,例如磁帶庫(kù);第二類(lèi)備份方式為邏輯備份,業(yè)務(wù)數(shù)據(jù)庫(kù)采用此種方式,此方
法不需要數(shù)據(jù)庫(kù)運(yùn)行在歸擋模式下,不但備份簡(jiǎn)單,而且可以不需要外部存儲(chǔ)設(shè)備。
數(shù)據(jù)庫(kù)邏輯備份方法
ORACLE數(shù)據(jù)庫(kù)的邏輯備份分為三種模式:表備份、用戶(hù)備份和完全備份。
表模式
備份某個(gè)用戶(hù)模式下指定的對(duì)象(表)。業(yè)務(wù)數(shù)據(jù)庫(kù)通常采用這種備份方式。
若備份到本地文件,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_csd_yyyymmdd.dmp
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
若直接備份到磁帶設(shè)備,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
注:在磁盤(pán)空間允許的情況下,應(yīng)先備份到本地服務(wù)器,然后再拷貝到磁帶。出于速度
方面的考慮,盡量不要直接備份到磁帶設(shè)備。
用戶(hù)模式
備份某個(gè)用戶(hù)模式下的所有對(duì)象。業(yè)務(wù)數(shù)據(jù)庫(kù)通常采用這種備份方式。
若備份到本地文件,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_yyyymmdd.dmp
log=exp_icdmain_yyyymmdd.log
若直接備份到磁帶設(shè)備,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_yyyymmdd.log
注:如果磁盤(pán)有空間,建議備份到磁盤(pán),然后再拷貝到磁帶。如果數(shù)據(jù)庫(kù)數(shù)據(jù)量較小,
可采用這種辦法備份。
完全模式
備份完整的數(shù)據(jù)庫(kù)。業(yè)務(wù)數(shù)據(jù)庫(kù)不采用這種備份方式。備份命令為:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y
file=exp_fulldb_yyyymmdd.dmp(磁帶設(shè)備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
對(duì)于數(shù)據(jù)庫(kù)備份,建議采用增量備份,即只備份上一次備份以來(lái)更改的數(shù)據(jù)。增量備份
命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y inctype=incremental
file=exp_fulldb_yyyymmdd.dmp(磁帶設(shè)備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
注:關(guān)于增量備份必須滿(mǎn)足下列條件:
1.
只對(duì)完整數(shù)據(jù)庫(kù)備份有效,且第一次需要full=y參數(shù),以后需要inctype=increment
al參數(shù)。
2. 用戶(hù)必須有EXP_FULL_DATABASE的系統(tǒng)角色。
3. 話(huà)務(wù)量較小時(shí)方可采用數(shù)據(jù)庫(kù)備份。
4. 如果磁盤(pán)有空間,建議備份到磁盤(pán),然后再備份到磁帶。
業(yè)務(wù)數(shù)據(jù)庫(kù)備份方法及周期
用EXP進(jìn)行備份前,先在SYS用戶(hù)下運(yùn)行CATEXP.SQL文件(如果以前已運(yùn)行該文件,則不
要執(zhí)行這個(gè)腳本)。
沒(méi)有特殊說(shuō)明,不允許在客戶(hù)端執(zhí)行備份命令。
備份命令參照表模式下的備份命令。
從磁盤(pán)文件備份到磁帶
如果首先備份到本地磁盤(pán)文件,則需要轉(zhuǎn)儲(chǔ)到磁帶設(shè)備上。
1. 若需查看主機(jī)上配置的磁帶設(shè)備,使用如下命令:
lsdev -Cc tape
顯示的結(jié)果如下例所示:
rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
rmt1 Defined 30-58-00-0,0 SCSI 4mm Tape Drive
標(biāo)明Available的設(shè)備是可用的磁帶設(shè)備。
2. 若需查看磁帶存儲(chǔ)的內(nèi)容,使用如下命令:
tar -tvf /dev/rmt0
顯示的結(jié)果如下例所示:
-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp
如果顯示類(lèi)似如下內(nèi)容,則表示該磁帶存儲(chǔ)的備份數(shù)據(jù)是從數(shù)據(jù)庫(kù)直接備份到磁帶上,
而非從本地磁盤(pán)轉(zhuǎn)儲(chǔ)到磁帶的備份文件,因此操作系統(tǒng)無(wú)法識(shí)別。
tar: 0511-193 An error occurred while reading from the media.
There is an input or output error.
或
tar: 0511-169 A directory checksum error on media; -267331077 not equal to
2
5626.
3. 對(duì)于新磁帶或無(wú)需保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令:
tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
注:A. 該命令將無(wú)條件覆蓋磁帶上的現(xiàn)存數(shù)據(jù)。
B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。
4. 對(duì)于需要保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令:
tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會(huì)覆蓋現(xiàn)存的數(shù)據(jù)
。
特別強(qiáng)調(diào):如果備份時(shí)是從數(shù)據(jù)庫(kù)直接備份到磁帶上,則不可再向該磁帶上追加復(fù)制任
何其他文件,否則該備份數(shù)據(jù)失效。
5. 若需將轉(zhuǎn)儲(chǔ)到磁帶上的備份文件復(fù)制到本地硬盤(pán),使用如下命令:
A. 將磁帶上的全部文件復(fù)制到本地硬盤(pán)的當(dāng)前目錄
tar -xvf /dev/rmt0
B. 將磁帶上的指定文件復(fù)制到本地硬盤(pán)的當(dāng)前目錄
tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
備份時(shí)間安排
由于備份時(shí)對(duì)系統(tǒng)I/O有較大影響,所以,建議在晚上11點(diǎn)以后進(jìn)行備份工作。
業(yè)務(wù)數(shù)據(jù)庫(kù)Oracle版本的恢復(fù)
恢復(fù)方案需根據(jù)備份方案確定。由于業(yè)務(wù)數(shù)據(jù)庫(kù)采用表備份和用戶(hù)備份相結(jié)合的方案,
所以業(yè)務(wù)數(shù)據(jù)庫(kù)的恢復(fù)需根據(jù)實(shí)際情況采用表恢復(fù)和用戶(hù)恢復(fù)相結(jié)合的方案。
恢復(fù)方案
數(shù)據(jù)庫(kù)的邏輯恢復(fù)分為表恢復(fù)、用戶(hù)恢復(fù)、完全恢復(fù)三種模式。
表模式
此方式將根據(jù)按照表模式備份的數(shù)據(jù)進(jìn)行恢復(fù)。
A. 恢復(fù)備份數(shù)據(jù)的全部?jī)?nèi)容
若從本地文件恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_cs
d_yyyymmdd.dmp
log=imp_icdmain_csd_yyyymmdd.log
若從磁帶設(shè)備恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_csd_yyyymmdd.log
B. 恢復(fù)備份數(shù)據(jù)中的指定表
若從本地文件恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_cs
d_yyyymmdd.dmp
log=imp_icdmain_csd_yyyymmdd.log
tables=commoninformation,serviceinfo
若從磁帶設(shè)備恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=/dev/rmt0
log=imp_icdmain_csd_yyyymmdd.log
tables=commoninformation,serviceinfo
用戶(hù)模式
此方式將根據(jù)按照用戶(hù)模式備份的數(shù)據(jù)進(jìn)行恢復(fù)。
A. 恢復(fù)備份數(shù)據(jù)的全部?jī)?nèi)容
若從本地文件恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yy
yymmdd.dmp
log=imp_icdmain_yyyymmdd.log
若從磁帶設(shè)備恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
B. 恢復(fù)備份數(shù)據(jù)中的指定表
若從本地文件恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yy
yymmdd.dmp
log=imp_icdmain_yyyymmdd.log
tables=commoninformation,serviceinfo
若從磁帶設(shè)備恢復(fù),使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
tables=commoninformation,serviceinfo
完全模式
如果備份方式為完全模式,采用下列恢復(fù)方法:
若從本地文件恢復(fù),使用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 full=y
file=exp_icdmain_yyyymmdd.dmp
log=imp_icdmain_yyyymmdd.log
若從磁帶設(shè)備恢復(fù),使用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 full=y
file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
參數(shù)說(shuō)明
1. ignore參數(shù)
Oracle在恢復(fù)數(shù)據(jù)的過(guò)程中,當(dāng)恢復(fù)某個(gè)表時(shí),該表已經(jīng)存在,
就要根據(jù)ignore參數(shù)的設(shè)置來(lái)決定如何操作。
若ignore=y,Oracle不執(zhí)行CREATE TABLE語(yǔ)句,直接將數(shù)據(jù)
插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束,
則出錯(cuò)的記錄不會(huì)插入,但合法的記錄會(huì)添加到表中。
若ignore=n,Oracle不執(zhí)行CREATE TABLE語(yǔ)句,同時(shí)也不會(huì)
將數(shù)據(jù)插入到表中,而是忽略該表的錯(cuò)誤,繼續(xù)恢復(fù)下一個(gè)表。
2. indexes參數(shù)
在恢復(fù)數(shù)據(jù)的過(guò)程中,若indexes=n,則表上的索引不會(huì)被恢復(fù)
,但是主鍵對(duì)應(yīng)的唯一索引將無(wú)條件恢復(fù),這是為了保證數(shù)據(jù)
的完整性。
字符集轉(zhuǎn)換
對(duì)于單字節(jié)字符集(例如US7ASCII),恢復(fù)時(shí),數(shù)據(jù)庫(kù)自動(dòng)轉(zhuǎn)
換為該會(huì)話(huà)的字符集(NLS_LANG參數(shù));對(duì)于多字節(jié)字符集
(例如ZHS16CGB231280),恢復(fù)時(shí),應(yīng)盡量使字符集相同
(避免轉(zhuǎn)換),如果要轉(zhuǎn)換,目標(biāo)數(shù)據(jù)庫(kù)的字符集應(yīng)是輸出數(shù)
據(jù)庫(kù)字符集的超集。
恢復(fù)方法
業(yè)務(wù)數(shù)據(jù)庫(kù)采用表恢復(fù)方案。在用IMP進(jìn)行恢復(fù)前,先在SYS
用戶(hù)下運(yùn)行CATEXP.SQL文件(如果以前已運(yùn)行該文件,則
不要執(zhí)行這個(gè)腳本),然后執(zhí)行下列命令:
IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y
COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名
注:要恢復(fù)的表名參照備份的表名
。恢復(fù)是在原表基礎(chǔ)上累加數(shù)據(jù)
。沒(méi)有特殊說(shuō)明,不允許在客戶(hù)端執(zhí)行恢復(fù)命令
將一個(gè)數(shù)據(jù)庫(kù)的某用戶(hù)的所有表導(dǎo)到另外數(shù)據(jù)庫(kù)的一個(gè)用戶(hù)下面的例子
exp userid=system/manager owner=username1 file=expfile.dmp
imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp
posted on 2006-06-13 17:17
無(wú)聲 閱讀(544)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
Oracle