隨筆-200  評論-148  文章-15  trackbacks-0
          ORACLE數(shù)據(jù)庫有兩類備份方法。第一類為物理備份,該方法實現(xiàn)數(shù)據(jù)庫的完整恢復(fù),但 數(shù)據(jù)庫必須運行在歸擋模式下(業(yè)務(wù)數(shù)據(jù)庫在非歸擋模式下運行),且需要極大的外部 存儲設(shè)備,例如磁帶庫;第二類備份方式為邏輯備份,業(yè)務(wù)數(shù)據(jù)庫采用此種方式,此方 法不需要數(shù)據(jù)庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設(shè)備。 數(shù)據(jù)庫邏輯備份方法 ORACLE數(shù)據(jù)庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。 表模式 備份某個用戶模式下指定的對象(表)。業(yè)務(wù)數(shù)據(jù)庫通常采用這種備份方式。 若備份到本地文件,使用如下命令: 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 注:在磁盤空間允許的情況下,應(yīng)先備份到本地服務(wù)器,然后再拷貝到磁帶。出于速度 方面的考慮,盡量不要直接備份到磁帶設(shè)備。 用戶模式 備份某個用戶模式下的所有對象。業(yè)務(wù)數(shù)據(jù)庫通常采用這種備份方式。 若備份到本地文件,使用如下命令: 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 注:如果磁盤有空間,建議備份到磁盤,然后再拷貝到磁帶。如果數(shù)據(jù)庫數(shù)據(jù)量較小, 可采用這種辦法備份。 完全模式 備份完整的數(shù)據(jù)庫。業(yè)務(wù)數(shù)據(jù)庫不采用這種備份方式。備份命令為: 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 對于數(shù)據(jù)庫備份,建議采用增量備份,即只備份上一次備份以來更改的數(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)于增量備份必須滿足下列條件: 1. 只對完整數(shù)據(jù)庫備份有效,且第一次需要full=y參數(shù),以后需要inctype=increment al參數(shù)。 2. 用戶必須有EXP_FULL_DATABASE的系統(tǒng)角色。 3. 話務(wù)量較小時方可采用數(shù)據(jù)庫備份。 4. 如果磁盤有空間,建議備份到磁盤,然后再備份到磁帶。 業(yè)務(wù)數(shù)據(jù)庫備份方法及周期 用EXP進行備份前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不 要執(zhí)行這個腳本)。 沒有特殊說明,不允許在客戶端執(zhí)行備份命令。 備份命令參照表模式下的備份命令。 從磁盤文件備份到磁帶 如果首先備份到本地磁盤文件,則需要轉(zhuǎn)儲到磁帶設(shè)備上。 1. 若需查看主機上配置的磁帶設(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 標明Available的設(shè)備是可用的磁帶設(shè)備。 2. 若需查看磁帶存儲的內(nèi)容,使用如下命令: tar -tvf /dev/rmt0 顯示的結(jié)果如下例所示: -rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp 如果顯示類似如下內(nèi)容,則表示該磁帶存儲的備份數(shù)據(jù)是從數(shù)據(jù)庫直接備份到磁帶上, 而非從本地磁盤轉(zhuǎn)儲到磁帶的備份文件,因此操作系統(tǒng)無法識別。 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. 對于新磁帶或無需保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令: tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp 注:A. 該命令將無條件覆蓋磁帶上的現(xiàn)存數(shù)據(jù)。   B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。 4. 對于需要保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令: tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp 注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會覆蓋現(xiàn)存的數(shù)據(jù) 。 特別強調(diào):如果備份時是從數(shù)據(jù)庫直接備份到磁帶上,則不可再向該磁帶上追加復(fù)制任 何其他文件,否則該備份數(shù)據(jù)失效。 5. 若需將轉(zhuǎn)儲到磁帶上的備份文件復(fù)制到本地硬盤,使用如下命令: A. 將磁帶上的全部文件復(fù)制到本地硬盤的當前目錄 tar -xvf /dev/rmt0 B. 將磁帶上的指定文件復(fù)制到本地硬盤的當前目錄 tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp 備份時間安排 由于備份時對系統(tǒng)I/O有較大影響,所以,建議在晚上11點以后進行備份工作。 業(yè)務(wù)數(shù)據(jù)庫Oracle版本的恢復(fù) 恢復(fù)方案需根據(jù)備份方案確定。由于業(yè)務(wù)數(shù)據(jù)庫采用表備份和用戶備份相結(jié)合的方案, 所以業(yè)務(wù)數(shù)據(jù)庫的恢復(fù)需根據(jù)實際情況采用表恢復(fù)和用戶恢復(fù)相結(jié)合的方案。 恢復(fù)方案 數(shù)據(jù)庫的邏輯恢復(fù)分為表恢復(fù)、用戶恢復(fù)、完全恢復(fù)三種模式。 表模式 此方式將根據(jù)按照表模式備份的數(shù)據(jù)進行恢復(fù)。 A. 恢復(fù)備份數(shù)據(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 用戶模式 此方式將根據(jù)按照用戶模式備份的數(shù)據(jù)進行恢復(fù)。 A. 恢復(fù)備份數(shù)據(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ù)說明 1. ignore參數(shù) Oracle在恢復(fù)數(shù)據(jù)的過程中,當恢復(fù)某個表時,該表已經(jīng)存在, 就要根據(jù)ignore參數(shù)的設(shè)置來決定如何操作。 若ignore=y,Oracle不執(zhí)行CREATE TABLE語句,直接將數(shù)據(jù) 插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束, 則出錯的記錄不會插入,但合法的記錄會添加到表中。 若ignore=n,Oracle不執(zhí)行CREATE TABLE語句,同時也不會 將數(shù)據(jù)插入到表中,而是忽略該表的錯誤,繼續(xù)恢復(fù)下一個表。 2. indexes參數(shù) 在恢復(fù)數(shù)據(jù)的過程中,若indexes=n,則表上的索引不會被恢復(fù) ,但是主鍵對應(yīng)的唯一索引將無條件恢復(fù),這是為了保證數(shù)據(jù) 的完整性。 字符集轉(zhuǎn)換 對于單字節(jié)字符集(例如US7ASCII),恢復(fù)時,數(shù)據(jù)庫自動轉(zhuǎn) 換為該會話的字符集(NLS_LANG參數(shù));對于多字節(jié)字符集 (例如ZHS16CGB231280),恢復(fù)時,應(yīng)盡量使字符集相同 (避免轉(zhuǎn)換),如果要轉(zhuǎn)換,目標數(shù)據(jù)庫的字符集應(yīng)是輸出數(shù) 據(jù)庫字符集的超集。 恢復(fù)方法 業(yè)務(wù)數(shù)據(jù)庫采用表恢復(fù)方案。在用IMP進行恢復(fù)前,先在SYS 用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則 不要執(zhí)行這個腳本),然后執(zhí)行下列命令: IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名 注:要恢復(fù)的表名參照備份的表名   。恢復(fù)是在原表基礎(chǔ)上累加數(shù)據(jù)   。沒有特殊說明,不允許在客戶端執(zhí)行恢復(fù)命令 將一個數(shù)據(jù)庫的某用戶的所有表導(dǎo)到另外數(shù)據(jù)庫的一個用戶下面的例子   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 無聲 閱讀(552) 評論(0)  編輯  收藏 所屬分類: Oracle

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 平山县| 哈尔滨市| 桦南县| 翼城县| 蒙自县| 秭归县| 宝鸡市| 南通市| 马鞍山市| 镇康县| 五家渠市| 东阿县| 息烽县| 乌审旗| 泰宁县| 游戏| 井陉县| 名山县| 洛宁县| 乾安县| 辽源市| 临潭县| 浦县| 崇义县| 同心县| 大埔县| 饶河县| 黄陵县| 大余县| 来宾市| 东光县| 庐江县| 绿春县| 怀安县| 建湖县| 邹平县| 闽清县| 齐齐哈尔市| 宜州市| 高要市| 嘉祥县|