--======================
-- Oracle 備份恢復(fù)概念
--======================
?
??? 數(shù)據(jù)庫維護(hù)中,備份或恢復(fù)是重中之重的問題。盡管很多時候數(shù)據(jù)庫系統(tǒng)運(yùn)行緩慢,但對數(shù)據(jù)庫數(shù)據(jù)的丟失而言,顯然后者損失的代價是
不言而喻的。因此 DBA 至少在保證數(shù)據(jù)不丟失的情況下來提高系統(tǒng)的性能是最起碼的要求。關(guān)于什么是備份與回復(fù),在此不做贅言。
?
一、物理備份與邏輯備份
??? 物理備份
??????? 是所有物理文件的一個副本,比如數(shù)據(jù)文件,控制文件,歸檔日志等。該副本能被存儲在本地磁盤或磁帶等等。
??????? 物理備份是備份或恢復(fù)的基礎(chǔ)
??????? 包括冷備份 ( 非歸檔模式 ) 或熱備份 ( 歸檔模式 )
??? 邏輯備份
??????? 將表、存儲過程等數(shù)據(jù)使用 Oracle 的 export 等工具導(dǎo)出到二進(jìn)制文件,后續(xù)根據(jù)需要再使用 import 工具導(dǎo)入數(shù)據(jù)庫。
??????? 邏輯備份則是對物理備份的方式的一種補(bǔ)充,多用于數(shù)據(jù)遷移。
?
二、備份恢復(fù)工具
??? 1. 使用 RMAN 來備份恢復(fù),支持命令行及 GUI 接口,支持第三方磁帶庫備份,功能比較強(qiáng)大。
??????? 支持備份數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、控制文件、歸檔日志等
??????? 可以保存頻繁使用備份恢復(fù)腳本
??????? 支持增量備份,跳過未使用的塊,以及控制備份速度
??????? 在備份期間偵測損壞的數(shù)據(jù)
??????? 通過自動并發(fā)、限制 I / O 等提高備份性能
??? 2. 用戶托管的備份與恢復(fù),是一種手動備份恢復(fù)的方式。使用操作系統(tǒng)命令和 SQL * plus 來完成相關(guān)的備份與恢復(fù)。
???
三、備份與恢復(fù)的策略
??? 1. 多路復(fù)用控制文件及多個并發(fā)備份
??? 2. 多路復(fù)用聯(lián)機(jī)重做日志文件
??? 3. 在 ARCHIVELOG 模式下運(yùn)行數(shù)據(jù)庫,并將重做日志存檔至多個位置
??? 4. 時常備份物理數(shù)據(jù)文件,盡可能創(chuàng)建多個副本到可靠的位置
??? 關(guān)于數(shù)據(jù)庫的日常規(guī)劃請參考: Oracle 常見故障及日常規(guī)劃 ??
?
四、備份與恢復(fù)的幾類重要數(shù)據(jù)結(jié)構(gòu)
??? 1. 數(shù)據(jù)文件
??? 2. 聯(lián)機(jī)重做日志文件
??? 3. 控制文件
??? 4. 自動管理的撤銷
??? 5. 可選的備份文件 ( 參數(shù)文件、密碼文件 )
??? 上述有關(guān)概念請參考: Oracle 實例和Oracle 數(shù)據(jù)庫(Oracle 體系結(jié)構(gòu))
?
五、常見的備份類型
??? 聯(lián)機(jī)數(shù)據(jù)庫備份 ????? --> 使用 archivelog 模式 ,SCN 不一致
??? 脫機(jī)數(shù)據(jù)庫備份 ????? --> 使用 noarchivelog 模式 ,SCN 保持一致
??? 整個數(shù)據(jù)庫 ????????? --> 可以在不同的時間段來備份,減輕 I/O 壓力,從而構(gòu)建整個數(shù)據(jù)庫
??? 表空間 ????????? ?? --> 在 archivelog 模式下,當(dāng)處于 noarchivelog 模式下,則該表空間必須為只讀或脫機(jī)
??? 數(shù)據(jù)文件 ??????? ???? --> 同表空間備份
??? 控制文件 ??????????? --> 可以使用 SQL 語句或 RMAN 來備份
??? 歸檔日志 ???????????
??? 參數(shù)文件
???
六、備份的分類
??? 前面提到了邏輯備份與物理備份的概念,下面描述根據(jù)備份的內(nèi)容、大小、性質(zhì)等進(jìn)行再分類
??? 1. 全部備份與部分備份
??????? 全部備份:包含所有的數(shù)據(jù)文件及至少一個控制文件,參數(shù)文件,密碼文件等。
??????? 部分備份:包含零個或多個表空間,零個或多個數(shù)據(jù)文件,可能包含控制文件等。部分備份僅在歸檔模式下才有效。
?
??? 2. 完整備份與增量備份
??????? 完整備份:一個或多個數(shù)據(jù)文件的一個完整副本,包含從備份開始處所有的數(shù)據(jù)塊。
??????? 增量備份:包含從最近一次次備份以來被修改或添加的數(shù)據(jù)塊。
??????????? 又可分為
??????????????? 差異增量:是備份上級及同級備份以來所有變化的數(shù)據(jù)塊,差異增量是默認(rèn)增量備份方式
??????????????? 累計增量:是備份上級備份以來所有變化的塊
??????????? 增量備份的幾種形式
??????????????? 0 級增量備份:是所有備份的基礎(chǔ),是一個完整備份,包含所有的數(shù)據(jù)塊
??????????????? 1 級差異增量備份:包含最近一次 1 級累計備份或差異備份以來被更改的數(shù)據(jù)塊
??????????????? 1 級累計增量備份:只包含最近一次 0 級備份以來被更改的數(shù)據(jù)塊
???????????
??????????? 增量備份支持 archivelog 和 noarchivelog 模式,也可以在打開或關(guān)閉時進(jìn)行。但只有 RMAN 才能實現(xiàn)增量備
???????????
??? 3. 脫機(jī)備份與聯(lián)機(jī)備份
??????? 脫機(jī)備份:在數(shù)據(jù)庫關(guān)閉階段發(fā)生的備份,又稱為一致性備份或冷備份。在一致性關(guān)閉數(shù)據(jù)庫后,控制文件 SCN 與數(shù)據(jù)文件頭部 SCN 一致
??????? 聯(lián)機(jī)備份:在數(shù)據(jù)庫使用階段發(fā)生的備份,又稱為非一致性備份或熱備份。聯(lián)機(jī)備份一個數(shù)據(jù)文件不與任何特定的 SCN 以及控制文件同步
??????????? ????? 可以是全部備份,也可以是部分備份,能夠使用 RMAN 或操作系統(tǒng)命令完成
??????????????? ? 僅僅在 archivelog 模式下
??????????????? ?
??? 4. 映像副本與備份集
??????? 映像副本:是某個文件的完整拷貝,未經(jīng)過任何壓縮處理,每個字節(jié)都與源文件相同。不支持增量備份也不能備份到磁帶。
??????? 備份集:由一個或多個稱為 piece 的物理文件組成的邏輯結(jié)構(gòu)。備份片中可以是數(shù)據(jù)文件,控制文件以及歸檔日志文件。
??????????????? 支持?jǐn)?shù)據(jù)的壓縮,支持增量備份。
??????????????? 可以備份到磁盤,也可以備份到磁帶。
???????
七、還原與恢復(fù) ?????
??? 數(shù)據(jù)庫恢復(fù)的策略,是使用最近的一次備份來實現(xiàn)數(shù)據(jù)庫的還原,然后使用歸檔日志和聯(lián)機(jī)日志將數(shù)據(jù)庫恢復(fù)到最新或特定狀態(tài)。
??????? 還原:從最近的備份文件中檢索所需要的內(nèi)容,并將其拷回到原來位置的過程稱為還原。
??????????? ? 可以基于數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、控制文件、參數(shù)文件進(jìn)行還原
???????????
??????? 恢復(fù):在還原的基礎(chǔ)上,使用歸檔日志和聯(lián)機(jī)日志將數(shù)據(jù)庫刷新到最新的 SCN ,使數(shù)據(jù)庫保持一致性。
???
??? 恢復(fù)的類型
??????? 實例恢復(fù)
??????????? 在 RAC 中,當(dāng)一個實例崩潰,則幸存的示例將自動使用聯(lián)機(jī)日志來前滾已提交的事務(wù),撤銷未提交的事務(wù)并釋放鎖。
??????? 崩潰恢復(fù)
??????????? 指在單實例的環(huán)境中,或多實例環(huán)境中所有的實例崩潰發(fā)生。在崩潰恢復(fù)中,實例必須首先打開數(shù)據(jù)庫,然后執(zhí)行恢復(fù)操作。
??????????? 一般而言,在崩潰或關(guān)機(jī)退出之后第一個打開數(shù)據(jù)庫的實例將自動執(zhí)行崩潰恢復(fù)。
??????? 介質(zhì)恢復(fù)
??????????? 介質(zhì)恢復(fù)通常為響應(yīng)介質(zhì)故障并根據(jù)用戶的命令來執(zhí)行恢復(fù)。
??????????? 可以使用聯(lián)機(jī)或歸檔日志來使還原的備份為最新或?qū)⑵涓轮烈粋€特定的時間點(diǎn)。
??????????? 介質(zhì)恢復(fù)可以將整個數(shù)據(jù)庫、一個表空間一個數(shù)據(jù)文件還原至指定的時間點(diǎn)
??????????? 可分為完全恢復(fù)或不完全恢復(fù)
??????????????? 完全恢復(fù):使用歸檔、聯(lián)機(jī)日志與數(shù)據(jù)庫、表空間或數(shù)據(jù)文件等的備份結(jié)合使用以將其更新至最新的時間點(diǎn)。
??????????????????? 步驟
??????????????????????? a . 將受損的數(shù)據(jù)文件脫機(jī)
??????????????????????? b . 還原受損的數(shù)據(jù)文件
??????????????????????? c . 恢復(fù)受損的數(shù)據(jù)文件
??????????????????????? d . 將已恢復(fù)的數(shù)據(jù)文件聯(lián)機(jī)
??????????????? 不完全恢復(fù):使用歸檔、聯(lián)機(jī)日志與數(shù)據(jù)庫、表空間或數(shù)據(jù)文件等的備份結(jié)合使用以將其更新至過去的某個時間點(diǎn)或 SCN 等
??????????????????? 步驟
??????????????????????? a . 加載數(shù)據(jù)庫
??????????????????????? b . 還原所有數(shù)據(jù)文件,同時可以選擇還原控制文件
??????????????????????? c . 將數(shù)據(jù)庫恢復(fù)至某個時間點(diǎn)、序列、或系統(tǒng)改變號
??????????????????????? d . 使用 RESETLOGS 關(guān)鍵字打開數(shù)據(jù)庫
??????????????????????? 不完全恢復(fù)
??????????????????? 不完全恢復(fù)選項
??????????????????????? 基于時間的恢復(fù),也稱為時點(diǎn)恢復(fù),將數(shù)據(jù)庫恢復(fù)到一個指定的時間點(diǎn)
??????????????????????? 基于表空間時間點(diǎn)恢復(fù),使用戶能夠?qū)⒁粋€或多個表空間恢復(fù)至與數(shù)據(jù)庫其余的部分不同的某個時間點(diǎn)。
??????????????????????? 基于取消的恢復(fù),它恢復(fù)到執(zhí)行 CANCEL 命令為止。
??????????????????????? 基于更改的恢復(fù)或日志序列恢復(fù) , 如果使用了 O / S 命令 , 則基于更改的恢復(fù)將一直恢復(fù)到重做記錄中一個指定的 SCN 為止
??????????????????????? 從人為錯誤中閃回
?
??????? 使用閃回特性從人為的錯誤中恢復(fù)
???????????????
??? 恢復(fù)工具
??????? 使用 RMAN 來進(jìn)行恢復(fù)
??????????? RMAN 可以從備份機(jī)或映像副本中將數(shù)據(jù)文件還原至當(dāng)前位置或新位置。當(dāng)需要使用歸檔日志時, RMAN 將自動還原并應(yīng)用歸檔日志
??????????? RMAN 支持完全介質(zhì)恢復(fù)、不完全介質(zhì)恢復(fù)
??????????? RMAN 恢復(fù)的基本命令式 restore 和 recover
???????????
??????? 使用 SQL * plus 來進(jìn)行恢復(fù)
??????????? 確定要恢復(fù)哪些文件。通常可以查詢視圖 V$RECOVER_FILE 。
??????????? 從備份中還原介質(zhì)故障損壞的文件 . 當(dāng)用戶沒有備份時 , 可以使用必要的重做日志且控制文件包含損壞文件名稱時仍可以執(zhí)行恢復(fù)。
??????????? 如果無法將文件還原至其原始位置,則用戶必須重新定位還原的文件并將該新位置更新到控制文件。
??????????? 還原必要的存檔重做日志文件。
?
八、更多參考 ???????????????
???????
?
SPFILE 錯誤導(dǎo)致數(shù)據(jù)庫無法啟動
?
?
Oracle 用戶、對象權(quán)限、系統(tǒng)權(quán)限
?
?
? Oracle 聯(lián)機(jī)重做日志文件(ONLINE LOG FILE)
?
?
?
???????
???????????????
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
