rman管理的備份恢復(fù)_第1頁
rman管理的備份恢復(fù)_第2頁
rman管理的備份恢復(fù)_第3頁
rman管理的備份恢復(fù)_第4頁
rman管理的備份恢復(fù)_第5頁
已閱讀5頁,還剩147頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、備份恢復(fù)1、備份物理備份:對(duì)數(shù)據(jù)文件、控制文件、歸檔日志文件的備份邏輯備份:對(duì)數(shù)據(jù)庫內(nèi)部邏輯對(duì)象的備份(exp、expdp)2、恢復(fù)數(shù)據(jù)庫數(shù)據(jù)損壞的情況下。使用備份將受損的數(shù)據(jù)恢復(fù)回來的過程備份是一切數(shù)據(jù)安全手段的底線備份數(shù)據(jù)庫里發(fā)生的所有事務(wù)都記錄在聯(lián)機(jī)重做日志文件中,聯(lián)機(jī)重做日志文件是循環(huán)覆蓋使用。聯(lián)機(jī)重做日志文件主要的作用是實(shí)例崩潰恢復(fù)Oracle有兩種運(yùn)行模式歸檔模式非歸檔模式歸檔模式就是將所有的聯(lián)機(jī)重做日志文件在循環(huán)覆蓋以前進(jìn)行歸檔,保留一份副本,非歸檔是默認(rèn)的運(yùn)行模式歸檔模式?jīng)Q定了備份模式冷備份1、如果數(shù)據(jù)庫是非歸檔模式,那么只能使用冷備份1、數(shù)據(jù)庫正常關(guān)閉,使用操作系統(tǒng)復(fù)制命令,

2、備份所有的控制文件、數(shù)據(jù)文件數(shù)據(jù)庫正常關(guān)閉,會(huì)觸發(fā)完全檢查點(diǎn)信息,所有臟內(nèi)存塊都寫入到了數(shù)據(jù)文件中,聯(lián)機(jī)重做日志文件沒有什么意義要備份所有的數(shù)據(jù)文件、控制文件,不需要聯(lián)機(jī)重做日志文件2、如果使用的是abort關(guān)閉數(shù)據(jù)庫,或者實(shí)例崩潰關(guān)閉,需要備份聯(lián)機(jī)重做日志文件關(guān)鍵是要獲取所有的數(shù)據(jù)文件和控制文件的位置熱備份1、數(shù)據(jù)庫需要處于歸檔模式2、數(shù)據(jù)庫打開的狀態(tài)下,可以進(jìn)行表空間、數(shù)據(jù)文件的備份3、歸檔對(duì)數(shù)據(jù)庫的性能還是有一定影響的4、歸檔可以不丟失任何數(shù)據(jù)歸檔模式歸檔模式啟用了自動(dòng)歸檔歸檔模式中,對(duì)聯(lián)機(jī)日志文件的歸檔分為兩種模式手工方式和自動(dòng)歸檔聯(lián)機(jī)日志文件A寫滿以后,切換到B,手工歸檔模式需要手工

3、的發(fā)出命令才能歸檔,如果不發(fā)出命令,A不會(huì)被歸檔,同時(shí)A也不能被覆蓋,這樣切換回來需要覆蓋A的時(shí)候,整個(gè)數(shù)據(jù)庫被掛起除非測試,不要將生產(chǎn)數(shù)據(jù)庫設(shè)置在手工歸檔模式自動(dòng)歸檔模式中,當(dāng)LGWR在將重做日志寫入當(dāng)前聯(lián)機(jī)重做日志文件中,發(fā)現(xiàn)寫滿時(shí),于是切換到另一個(gè)新的聯(lián)機(jī)重做日志文件,進(jìn)行日志切換,同時(shí)觸發(fā)歸檔進(jìn)程(ARCn),將當(dāng)前已經(jīng)寫滿的聯(lián)機(jī)日志文件進(jìn)行歸檔其中的n表示我們啟動(dòng)了多個(gè)歸檔進(jìn)程,oracle 10g中n從1到30啟動(dòng)6個(gè)歸檔進(jìn)程。歸檔日志文件的存放位置默認(rèn)歸檔到這個(gè)目錄里面。默認(rèn)存放在這個(gè)目錄里面。恢復(fù)區(qū)和新設(shè)置的歸檔區(qū)都是空的。日志歸檔到了我們?cè)O(shè)置的目錄中。只有一份歸檔。注意,我們

4、還可以將日志歸檔到另外一個(gè)服務(wù)器上。作為一個(gè)災(zāi)備的概念,但是需要要測試歸檔的性能。歸檔的一些參數(shù)只有在將聯(lián)機(jī)日志成功歸檔到這個(gè)目錄以后,該日志文件才能夠被覆蓋。Reopen表示一旦不能夠成功到目的地,則每隔一段時(shí)間(默認(rèn)300秒)嘗試一次,下面的語句設(shè)置時(shí)間間隔是600秒。歸檔到三個(gè)目的地,文件的名字都一樣。我們?cè)O(shè)置了三個(gè)歸檔目錄,兩個(gè)是強(qiáng)制的,一個(gè)是可選的如果最少歸檔的數(shù)目少于mandatory,那么沒有什么意義。我們?cè)O(shè)置為3,表示至少歸檔三個(gè)目的地,就相當(dāng)于設(shè)置了三個(gè)強(qiáng)制。我們將第三個(gè)目的地給刪除。發(fā)現(xiàn)也能夠成功的歸檔。發(fā)現(xiàn)還是能夠正常的歸檔,也就是最少成功備份參數(shù)沒有起作用。所以我們還是

5、要依靠強(qiáng)制來實(shí)現(xiàn)多路徑。多次執(zhí)行,當(dāng)要覆蓋第一個(gè)沒有歸檔成功的日志文件的時(shí)候,數(shù)據(jù)庫掛起重新建立了這個(gè)目錄。即使數(shù)據(jù)庫被掛起,還是可以登陸,還是可以進(jìn)行操作。連續(xù)的操作以后,發(fā)現(xiàn)數(shù)據(jù)庫掛起。大約過了10分鐘以后,因?yàn)閞eopen的原因,系統(tǒng)正常的歸檔以后,操作繼續(xù)進(jìn)行。歸檔出現(xiàn)問題以后,最好的解決辦法就是抓緊時(shí)間將歸檔目的地修復(fù)好。另外一種解決方式就是將這個(gè)目錄設(shè)置為defer。問題馬上解決。但是要注意不能少于這個(gè)參數(shù)。表示dest2目錄不可用。所有目錄都刪除以后怎么辦?使用defer的辦法是沒有用的。只能恢復(fù)目錄了。因?yàn)榭偸切枰獨(dú)w檔到一個(gè)地方去。將標(biāo)識(shí)為enable的修復(fù)。重新指定了一個(gè)歸檔

6、目錄,問題快速解決。解決思路1、首先將min_suceed設(shè)置成12、重新建立一個(gè)歸檔目錄3、將以前所有的歸檔目錄設(shè)置成為defer生成的歸檔日志文件的文件名?%s:日志序列號(hào)%S:固定長度的日志序列號(hào),不足位在左邊補(bǔ)0%t:日志線程號(hào)%T:固定長度的日志線程號(hào),不足位在左邊補(bǔ)0%a:激活I(lǐng)D%d:數(shù)據(jù)庫名%r:resetlogs生成的ID默認(rèn)為%t_%s_%r.dbf熱備份數(shù)據(jù)庫1、可以備份某個(gè)表空間所有的數(shù)據(jù)文件,也可以備份某個(gè)表空間下的某個(gè)數(shù)據(jù)文件,整個(gè)的備份過程中,表空間是可用的將日志進(jìn)行歸檔,然后備份到另外一個(gè)介質(zhì)上?;謴?fù)的時(shí)候,備份的數(shù)據(jù)文件要能夠使用,至少要求在begin bac

7、kup和end backup之間所有的歸檔日志,否則備份的介質(zhì)沒有任何意義。對(duì)每一個(gè)表空間,都重復(fù)上面的操作。1、開始備份2、備份文件3、結(jié)束備份4、歸檔日志、備份歸檔日志熱備份原理1、Oracle的數(shù)據(jù)塊大小是操作系統(tǒng)塊大小的整數(shù)倍,直接復(fù)制數(shù)據(jù)文件到備份介質(zhì)的過程中,由于數(shù)據(jù)庫一直可用,數(shù)據(jù)塊中不斷地有數(shù)據(jù)進(jìn)進(jìn)出出,使用操作系統(tǒng)命令復(fù)制數(shù)據(jù)文件時(shí),是基于操作系統(tǒng)塊進(jìn)行復(fù)制的,也就是說復(fù)制一個(gè)操作系統(tǒng)塊的時(shí)候,首先鎖定這個(gè)塊,復(fù)制完成以后,解鎖這個(gè)塊,這樣這個(gè)塊在復(fù)制前和復(fù)制后是一致的。但是對(duì)于一個(gè)Oracle數(shù)據(jù)庫來說,一個(gè)塊要分成幾次進(jìn)行復(fù)制,可能在復(fù)制一個(gè)操作系統(tǒng)數(shù)據(jù)塊的時(shí)候,另外一個(gè)

8、操作系統(tǒng)數(shù)據(jù)塊被改變了,導(dǎo)致oracle數(shù)據(jù)塊在復(fù)制到備份介質(zhì)以后,前一半是沒有改動(dòng)過的,后一半是改動(dòng)過的,數(shù)據(jù)塊的狀態(tài)就不一致,數(shù)據(jù)塊就能夠使用,備份也就不能夠使用,這叫做分離數(shù)據(jù)塊現(xiàn)象(split blocks)2、oracle在數(shù)據(jù)塊的頭部和尾部各存了一個(gè)版本號(hào),通過這個(gè)來確認(rèn)這個(gè)數(shù)據(jù)塊是否是分離數(shù)據(jù)塊,oracle修改過一個(gè)數(shù)據(jù)塊以后,將這個(gè)數(shù)據(jù)塊的版本號(hào)在頭部和尾部各存放了一份3、為了修復(fù)分離數(shù)據(jù)塊現(xiàn)象,我們?cè)趥浞菽硞€(gè)表空間的時(shí)候,首先進(jìn)行begin backup,通知數(shù)據(jù)庫開始備份,在沒有end backup命令之前,只要是進(jìn)程修改了被備份的表空間所包含的數(shù)據(jù)塊中的某條記錄,ora

9、cle就會(huì)把該數(shù)據(jù)塊中所包含的所有的數(shù)據(jù)行的數(shù)據(jù)生成重做記錄,記錄到日志文件中4、通過發(fā)出begin backup以后,第一次修改數(shù)據(jù)塊中的數(shù)據(jù)行之前,在聯(lián)機(jī)重做日志文件中記錄數(shù)據(jù)塊的修改前的數(shù)據(jù),這樣在熱備份恢復(fù)的時(shí)候,一旦發(fā)現(xiàn)某個(gè)數(shù)據(jù)塊被分離,則會(huì)利用日志文件里的記錄的數(shù)據(jù)對(duì)整個(gè)數(shù)據(jù)塊進(jìn)行恢復(fù)5、備份表空間中的所有的被修改過的數(shù)據(jù)塊的所有數(shù)據(jù)行都被保存在了聯(lián)機(jī)重做日志文件中,而不是只記錄被修改的數(shù)據(jù)行的記錄,因此在熱備份過程中,會(huì)發(fā)現(xiàn)生成的聯(lián)機(jī)重做日志文件的量比較大,這取決于業(yè)務(wù)的繁忙程度,例如DML量比較大,那么產(chǎn)生的日志會(huì)非常的多6、發(fā)出begin backup命令以后,oracle會(huì)

10、對(duì)被備份的表空間所對(duì)應(yīng)的數(shù)據(jù)文件觸發(fā)文件級(jí)別的檢查點(diǎn)進(jìn)程,將內(nèi)存中屬于該表空間的所有臟數(shù)據(jù)塊寫入數(shù)據(jù)文件,檢查點(diǎn)結(jié)束以后,數(shù)據(jù)文件頭部(第一個(gè)和第一個(gè)數(shù)據(jù)塊)的檢查點(diǎn)SCN和日志序列號(hào)都不在變化,直至發(fā)出end backup,數(shù)據(jù)文件頭部的SCN和日志序列號(hào)才被更新7、在熱備份的過程中,數(shù)據(jù)文件頭部的SCN和日志序列號(hào)被凍結(jié),但是數(shù)據(jù)文件本身還是最新的,和正常一樣的更新和使用,DML更新了某個(gè)表,這些更新都會(huì)被寫入到數(shù)據(jù)文件中去8、凍結(jié)數(shù)據(jù)文件頭部的SCN號(hào)和日志序列號(hào),是為了將來使用熱備份進(jìn)行恢復(fù)的時(shí)候,能夠知道應(yīng)該從哪里開始應(yīng)用重做記錄,也就是備份的數(shù)據(jù)文件頭部所記錄的SCN和日志序列號(hào),

11、定位到日志文件中,從日志文件中找到開始的SCN,向后應(yīng)用所有的日志文件9、end backup以后,所有的數(shù)據(jù)文件的頭部SCN和日志序列號(hào)推進(jìn)到最新,因?yàn)閿?shù)據(jù)文件本身就是最新的知道那個(gè)表空間正處于熱備份狀態(tài)?在備份的過程中,數(shù)據(jù)庫意外的崩潰,重新啟動(dòng),出現(xiàn)了一個(gè)意外的情況,我們下面繼續(xù)解決。1、實(shí)例沒有啟動(dòng),因此不能修改參數(shù),只能生成pfile,修改后再倒入到spfile修改pfile系統(tǒng)提示一個(gè)數(shù)據(jù)文件損壞,我們懷疑可能是這個(gè)數(shù)據(jù)文件正在備份過程中實(shí)例崩潰。果然是因?yàn)閿?shù)據(jù)庫備份過程中實(shí)例崩潰輕松解決。備份控制文件只要在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化以后,例如增加、刪除、重命名數(shù)據(jù)文件或日志文件以后,都應(yīng)

12、該備份控制文件。兩種方式備份控制文件1、二進(jìn)制備份2、SQL命令方式備份到了這個(gè)文件中,里面是控制文件的重建語句。文件部分內(nèi)容。初始化參數(shù)文件和密碼文件也需要備份,只要復(fù)制即可。介質(zhì)恢復(fù)1、還原restore使用備份的文件替換損壞或丟失的文件,該階段使用操作系統(tǒng)命令完成2、恢復(fù)recovery將歸檔的日志文件以及聯(lián)機(jī)重做日志文件里的重做記錄應(yīng)用到還原出來的文件上,該階段在SQLPLUS的recover命令完成打開數(shù)據(jù)庫的時(shí)候,數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件必須同步,如果不同步,需要進(jìn)行恢復(fù),恢復(fù)成功以后才能打開數(shù)據(jù)庫一致性是基于檢查點(diǎn)SCN和日志序列號(hào)而言控制文件里記錄了三種重要的檢查點(diǎn)

13、SCN號(hào)1、系統(tǒng)檢查點(diǎn)SCN當(dāng)檢查點(diǎn)進(jìn)程啟動(dòng)時(shí),會(huì)將檢查點(diǎn)結(jié)束時(shí)間的SCN號(hào)記錄在控制文件中(SCN是一個(gè)以時(shí)間為參數(shù)的函數(shù)值),該檢查點(diǎn)是全局范圍內(nèi)的,當(dāng)發(fā)生文件級(jí)別的檢查點(diǎn)(比如將某個(gè)表空間設(shè)置為begin backup而引起的檢查點(diǎn))時(shí),則不會(huì)更新該系統(tǒng)檢查點(diǎn)SCN數(shù)據(jù)文件檢查點(diǎn)當(dāng)檢查點(diǎn)進(jìn)程啟動(dòng)時(shí),包括全局范圍的(例如發(fā)生日志切換)以及文件級(jí)別的(將表空間設(shè)置為只讀、begin backup、或?qū)⒛硞€(gè)數(shù)據(jù)文件設(shè)置為offline)檢查點(diǎn),這時(shí)會(huì)在控制文件里面記錄每個(gè)數(shù)據(jù)文件上所發(fā)生的檢查點(diǎn)SCN(將數(shù)據(jù)文件設(shè)置為正常離線、只讀時(shí),將表空間設(shè)置為begin backup時(shí),觸發(fā)文件級(jí)別的檢

14、查點(diǎn),并將該檢查點(diǎn)更新控制文件和數(shù)據(jù)文件頭部以后,就不再變化)這個(gè)文件的檢查點(diǎn)明顯的高于其余文件,因?yàn)槲覀儎偛艌?zhí)行一個(gè)begin backup命令,觸發(fā)了一個(gè)文件檢查點(diǎn)。結(jié)束SCN每個(gè)數(shù)據(jù)文件都會(huì)有一個(gè)結(jié)束SCN,在數(shù)據(jù)庫正常運(yùn)行期間,只要是在線的、可讀寫的數(shù)據(jù)文件,其終止SCN都為空正常關(guān)閉數(shù)據(jù)庫時(shí),或者將數(shù)據(jù)文件正常離線、或只讀時(shí),都會(huì)由于觸發(fā)了檢查點(diǎn)進(jìn)程,從而在控制文件里記錄每個(gè)數(shù)據(jù)文件上的結(jié)束時(shí) 的SCN號(hào)Begin backup不能設(shè)置數(shù)據(jù)文件的結(jié)束SCN通過設(shè)置數(shù)據(jù)文件的只讀可以讓結(jié)束SCN記錄到數(shù)據(jù)文件中。正常關(guān)閉數(shù)據(jù)庫,每個(gè)數(shù)據(jù)文件的結(jié)束SCN都是一致的(只讀、離線的除外)數(shù)據(jù)

15、庫啟動(dòng)以后,數(shù)據(jù)文件的結(jié)束SCN都變成空。在每個(gè)數(shù)據(jù)文件的頭部,也記錄了檢查點(diǎn)SCN,該檢查點(diǎn)SCN與控制文件中記錄的數(shù)據(jù)文件的檢查點(diǎn)SCN是一致的。也就是說,全局范圍和數(shù)據(jù)文件級(jí)別的檢查點(diǎn),不僅會(huì)將檢查點(diǎn)SCN記錄在控制文件中,還會(huì)記錄在數(shù)據(jù)文件的頭部。數(shù)據(jù)庫正常關(guān)閉時(shí),會(huì)觸發(fā)一個(gè)完全檢查點(diǎn),并用該檢查點(diǎn)結(jié)束時(shí)的SCN號(hào)更新以上4個(gè)檢查點(diǎn)SCN(除了離線和只讀的),下次數(shù)據(jù)庫啟動(dòng)的時(shí)候,會(huì)比較這四個(gè)檢查點(diǎn)SCN,如果他們相同,說明數(shù)據(jù)庫是一致的,可以正常打開如果數(shù)據(jù)庫非正常關(guān)閉,例如掉電導(dǎo)致數(shù)據(jù)庫沒有進(jìn)行完全檢查點(diǎn)就關(guān)掉了,每個(gè)在線、讀寫的數(shù)據(jù)文件的終止SCN仍然為空,下次數(shù)據(jù)庫啟動(dòng)的時(shí)候,

16、發(fā)現(xiàn)在線和讀寫的數(shù)據(jù)文件的終止SCN為空,則SMON進(jìn)程會(huì)進(jìn)行實(shí)例恢復(fù)如果備份的數(shù)據(jù)文件覆蓋當(dāng)前的數(shù)據(jù)文件,則數(shù)據(jù)庫會(huì)發(fā)現(xiàn)記錄在控制文件里面的數(shù)據(jù)文件的檢查點(diǎn)SCN號(hào)與從備份中還原的數(shù)據(jù)文件的頭部記錄的檢查點(diǎn)SCN不一致,控制文件中的SCN比較新,備份中還原的數(shù)據(jù)文件頭部的SCN比較舊,控制文件的SCN大于數(shù)據(jù)文件頭部的SCN,數(shù)據(jù)庫不能打開,要求對(duì)還原的數(shù)據(jù)文件進(jìn)行恢復(fù),應(yīng)用重做記錄,從而將該數(shù)據(jù)文件頭部的SCN提升到控制文件里記錄的SCN號(hào)如果我們將備份的控制文件覆蓋當(dāng)前的控制文件,這時(shí)控制文件比較舊,而數(shù)據(jù)文件則是當(dāng)前最新的的數(shù)據(jù)文件,因此數(shù)據(jù)庫會(huì)發(fā)現(xiàn)控制文件里面的SCN小于數(shù)據(jù)文件頭部

17、記錄的SCN,于是進(jìn)行恢復(fù)啟動(dòng)數(shù)據(jù)庫的時(shí)候,如果發(fā)現(xiàn)控制文件里記錄的數(shù)據(jù)文件檢查點(diǎn)SCN與數(shù)據(jù)文件頭部記錄的SCN相同,但是在每個(gè)在線的以及可讀寫的數(shù)據(jù)文件之間,他們的檢查點(diǎn)SCN不同,那么會(huì)要求進(jìn)行介質(zhì)恢復(fù),例如begin backup后,實(shí)例崩潰,重啟數(shù)據(jù)庫時(shí)就會(huì)發(fā)生這種情況,必須發(fā)出end backup命令才能打開數(shù)據(jù)庫。完全恢復(fù)將數(shù)據(jù)庫恢復(fù)到最新狀態(tài)非歸檔模式歸檔模式非歸檔模式下面的完全恢復(fù)1、在非歸檔模式下面,如果出現(xiàn)介質(zhì)的損壞,則必須使用一個(gè)在關(guān)閉狀態(tài)下面所做的備份進(jìn)行恢復(fù)2、即使只丟失了一個(gè)數(shù)據(jù)文件,也必須還原所有的數(shù)據(jù)文件3、關(guān)閉數(shù)據(jù)庫,還原所有的控制文件、數(shù)據(jù)文件,如果備份了

18、聯(lián)機(jī)重做,也可以還原,不還原聯(lián)機(jī)重做日志文件也是可以的4、所用的備份,必須是在同一個(gè)時(shí)間點(diǎn)上做的備份非歸檔模式的還原分為兩種情況1、備份時(shí),同時(shí)備份了聯(lián)機(jī)重做日志文件關(guān)閉數(shù)據(jù)庫,使用最近的備份,通過操作系統(tǒng)命令進(jìn)行復(fù)制,將數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件復(fù)制到這些文件所在的目錄2、備份時(shí),沒有備份聯(lián)機(jī)重做日志文件關(guān)閉數(shù)據(jù)庫從最近的備份中,還原所有的數(shù)據(jù)文件和控制文件啟動(dòng)數(shù)據(jù)庫,會(huì)報(bào)告找不到聯(lián)機(jī)重做日志文件或者聯(lián)機(jī)重做日志文件不匹配的錯(cuò)誤消息recover database until cancel using backup controlfile;提示輸入日志信息時(shí),輸入cancelalt

19、er database open resetlogs;最大的問題,丟失自上次備份以來所有的數(shù)據(jù)我們下面來做一個(gè)還原(沒有備份reodlog的還原)建立了一個(gè)新的數(shù)據(jù)庫。將三類文件的位置和名字找出來,一個(gè)都不能少。將所有數(shù)據(jù)文件、控制文件備份出來,不能漏掉任何的一個(gè)。刪除一個(gè)數(shù)據(jù)文件后,數(shù)據(jù)庫啟動(dòng)時(shí)報(bào)錯(cuò),數(shù)據(jù)文件丟失,看一下數(shù)據(jù)庫的模式是非歸檔,只能進(jìn)行完全恢復(fù)。剛才做的恢復(fù)就相當(dāng)于是備份了聯(lián)機(jī)重做日志文件的恢復(fù)操作。非常的簡單。沒有恢復(fù)聯(lián)機(jī)重做日志文件?;謴?fù)了所有的數(shù)據(jù)文件和控制文件。提示日志文件比控制文件更新。非歸檔模式下面下的完全恢復(fù)歸檔模式下的完全恢復(fù)在歸檔模式下面,如果控制文件和聯(lián)機(jī)重

20、做日志文件都沒有損壞,而只是數(shù)據(jù)文件損壞,并且只要存在備份以及自從該備份以來所有的歸檔日志文件,就能夠把數(shù)據(jù)庫完全恢復(fù)到發(fā)生介質(zhì)損壞的那個(gè)時(shí)間點(diǎn)上,通過recover命令實(shí)現(xiàn)恢復(fù)操作如果所有控制文件損壞,或者整個(gè)聯(lián)機(jī)重做日志文件丟失,或者自從上次備份以來丟失了某個(gè)歸檔日志文件,則需要進(jìn)行不完全恢復(fù)因此對(duì)于控制文件、聯(lián)機(jī)重做日志文件、歸檔日志文件,一定要注意保存好歸檔模式下面的完全恢復(fù)分為三個(gè)階段數(shù)據(jù)庫級(jí)別數(shù)據(jù)文件級(jí)別表空間級(jí)別如果恢復(fù)整個(gè)數(shù)據(jù)庫,則需要將數(shù)據(jù)庫啟動(dòng)到mount狀態(tài)如果恢復(fù)某個(gè)數(shù)據(jù)文件或者恢復(fù)某個(gè)表空間,則可以在數(shù)據(jù)庫打開狀態(tài)下進(jìn)行當(dāng)發(fā)出recover命令時(shí),oracle會(huì)從所有

21、被還原的數(shù)據(jù)文件頭中選擇一個(gè)最小的檢查點(diǎn)SCN號(hào)以及日志序列號(hào),從該日志序列號(hào)所指定的日志文件開始,向后依次開始應(yīng)用所有的重做記錄,直到每個(gè)數(shù)據(jù)文件頭部的檢查點(diǎn)SCN達(dá)到控制文件中所記錄的數(shù)據(jù)文件檢查點(diǎn)SCN為止,所有日志文件的序列號(hào)必須連貫,不能中斷。在恢復(fù)數(shù)據(jù)文件的時(shí)候,必須以獨(dú)占的方式鎖定被恢復(fù)的數(shù)據(jù)文件數(shù)據(jù)文件聯(lián)機(jī)或者正在被恢復(fù),都不能進(jìn)行恢復(fù)好處1、只需要恢復(fù)受損的數(shù)據(jù)文件2、如果不是system或者undo表空間損壞,那么可以在數(shù)據(jù)庫打開的情況下進(jìn)行恢復(fù)兩個(gè)重要的視圖v$recover_file:哪些數(shù)據(jù)文件需要恢復(fù)v$recovery_log:為了完全恢復(fù)受損的數(shù)據(jù)文件,需要哪些

22、日志文件三種恢復(fù)方式1、recover database,關(guān)閉數(shù)據(jù)庫使用如果系統(tǒng)表空間或者undo表空間所有數(shù)據(jù)文件損壞2、recover tablespace 非系統(tǒng)表空間、undo表空間損壞時(shí)建議使用這種方式需要首先將受損的表空間離線3、recover datafile 同上面的命令都是在數(shù)據(jù)庫打開和關(guān)閉的時(shí)候使用在恢復(fù)數(shù)據(jù)的過程中,會(huì)使用到數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件、歸檔日志文件前三者都是聯(lián)機(jī)的,后者是脫機(jī)的,因此在應(yīng)用到歸檔日志文件的時(shí)候,數(shù)據(jù)庫往往會(huì)提示輸入歸檔日志的目錄,一般來說,我們可能將歸檔日志備份到另外一個(gè)位置,然后刪除當(dāng)前位置的歸檔日志,但是通常不去改變他的名字。

23、如果我們將要恢復(fù)的歸檔日志放在了一個(gè)不同的位置,我們?cè)诨謴?fù)的時(shí)候,可以手工的指定位置,也可以通過設(shè)置下面的參數(shù),讓系統(tǒng)在我們指定的目錄里面自動(dòng)尋找因?yàn)闅w檔日志很多,我們?cè)趹?yīng)用的時(shí)候,不希望都去指定,希望將歸檔日志都放在一個(gè)目錄里面,通過指定參數(shù),讓oracle在恢復(fù)的時(shí)候,自動(dòng)的去尋找歸檔日志,自動(dòng)的去應(yīng)用。將數(shù)據(jù)庫改成歸檔模式。數(shù)據(jù)庫進(jìn)行恢復(fù),自動(dòng)尋找歸檔日志的方法有三種前提:將需要的歸檔日志集中存放在一個(gè)目錄里面,然后設(shè)置了正確的dest路徑1、2、恢復(fù)時(shí)提示我們輸入日志文件的路徑,輸入auto即可,oracle會(huì)自動(dòng)搜索日志文件進(jìn)行應(yīng)用3、sqlrecover automatic dat

24、afile 4,直接自動(dòng)進(jìn)行恢復(fù)完全恢復(fù)的四種方法1、數(shù)據(jù)庫打開狀態(tài),系統(tǒng)表空間和undo表空間未損壞,其他表空間損壞清空buffer cahche系統(tǒng)提示數(shù)據(jù)文件損壞。突然發(fā)現(xiàn)在歸檔模式下面沒有備份數(shù)據(jù)庫。只能恢復(fù)數(shù)據(jù)庫到冷備時(shí)刻。將冷備的控制文件、數(shù)據(jù)文件都拷貝到指定目錄。啟動(dòng)報(bào)錯(cuò)。提示聯(lián)機(jī)重做日志文件有問題,因?yàn)槲覀冊(cè)诶鋫涞臅r(shí)候沒有備份聯(lián)機(jī)重做日志文件。數(shù)據(jù)庫恢復(fù),但只是恢復(fù)到上次冷備的時(shí)刻。數(shù)據(jù)庫還是非歸檔模式。設(shè)置為歸檔將所有的備份刪除。對(duì)users表空間進(jìn)行了備份。在users表空間上進(jìn)行了操作。模擬了日志的歸檔。對(duì)日志文件進(jìn)行了歸檔的備份。故障出現(xiàn)。將表空間offline將所有歸

25、檔日志所在的目錄改成歸檔目錄。我們也可以采用這樣的方式,不改變歸檔目錄,但是將所有的需要的歸檔日志拷貝到歸檔目錄中,總之就是將歸檔日志放在數(shù)據(jù)庫能夠找到的地方數(shù)據(jù)文件頭部的SCN,當(dāng)初發(fā)出begin backup命令時(shí),數(shù)據(jù)文件頭部的SCN控制文件中記錄的數(shù)據(jù)文件的檢查點(diǎn)SCN,出問題時(shí)的SCN是454751,offline時(shí)的檢查點(diǎn)是455656.因?yàn)閭浞菀呀?jīng)恢復(fù)、歸檔已經(jīng)設(shè)置,聯(lián)機(jī)和控制文件都沒有問題。2、數(shù)據(jù)庫處于關(guān)閉狀態(tài),系統(tǒng)表空間和undo表空間損壞。日常的操作備份system數(shù)據(jù)庫要使用自動(dòng)恢復(fù),就需要設(shè)置好歸檔日志所在的目錄。模擬故障。只啟動(dòng)到mount數(shù)據(jù)庫正在運(yùn)行,undo表

26、空間損壞。沒有報(bào)錯(cuò),使用的應(yīng)該是system的回滾段,因?yàn)橛脩羰莝ys。改變用戶后馬上報(bào)錯(cuò)。重建失敗。只能進(jìn)行恢復(fù)。重新進(jìn)行模擬上面的故障對(duì)四個(gè)表空間進(jìn)行了備份。模擬一個(gè)故障報(bào)錯(cuò),提示undotbs1錯(cuò)誤備份拷貝回來?;謴?fù)undo表空間不能在數(shù)據(jù)庫打開狀態(tài)下進(jìn)行。關(guān)閉數(shù)據(jù)庫將undo在線。問題解決。數(shù)據(jù)庫在打開的情況下,system表空間崩潰?;謴?fù)備份文件System自動(dòng)聯(lián)機(jī)。Undo和system表空間的損壞都需要重啟數(shù)據(jù)庫進(jìn)行修復(fù)。數(shù)據(jù)庫關(guān)閉,非system和undo表空間損壞運(yùn)行中突然掉電,一個(gè)數(shù)據(jù)文件損壞還原備份文件。只要是控制文件、聯(lián)機(jī)重做日志文件沒有損壞、歸檔日志全,數(shù)據(jù)文件有備份

27、,恢復(fù)就非常的簡單。不管你是什么故障。數(shù)據(jù)文件沒有備份,具有自創(chuàng)建該數(shù)據(jù)文件以來所有的歸檔日志文件創(chuàng)建了一個(gè)數(shù)據(jù)文件,就需要立即進(jìn)行備份,如果該文件丟失,又沒有備份,該如何處理,只能從歸檔日志中進(jìn)行恢復(fù)。添加了一個(gè)數(shù)據(jù)文件給users表空間,給表test15分配extent的時(shí)候,手工指定使用user02.dbf文件。數(shù)據(jù)文件出現(xiàn)故障。創(chuàng)建該文件的SCN將5號(hào)文件離線是的SCN因?yàn)樵撐募粍h除,所以文件頭部的SCN是0因?yàn)闆]有備份該文件,所以重建該文件。文件的SCN是當(dāng)時(shí)文件創(chuàng)建時(shí)的SCN。不完全恢復(fù)的場合1、進(jìn)行完全恢復(fù)的時(shí)候,在應(yīng)用歸檔日志的過程中,丟失了其中一個(gè)或者多個(gè)歸檔日志文件,因此

28、我們只能將數(shù)據(jù)庫不完全恢復(fù)到丟失的最早的那個(gè)歸檔日志文件為止2、丟失了整個(gè)聯(lián)機(jī)重做日志文件組,而該聯(lián)機(jī)重做日志文件還沒有完成歸檔3、用戶誤刪除了表里的數(shù)據(jù),或誤刪除了表,或誤刪除了某個(gè)重要的用戶,要恢復(fù)被誤刪除的數(shù)據(jù),可以通過不完全恢復(fù),將數(shù)據(jù)庫恢復(fù)到誤操作之前的時(shí)間點(diǎn)4、當(dāng)前控制文件全部丟失,并使用了備份的控制文件進(jìn)行恢復(fù),這時(shí)進(jìn)行的不完全恢復(fù),但是只要所有的歸檔日志、聯(lián)機(jī)重做日志文件都在,仍然能夠恢復(fù)所有的數(shù)據(jù)不完全恢復(fù)有下面的兩個(gè)前提1、具有所有數(shù)據(jù)文件的備份,并且該備份是在要恢復(fù)到的時(shí)間點(diǎn)之前做的,例如要恢復(fù)到11:00點(diǎn),那么備份就需要是11:00之前做的2、具有從備份完成的時(shí)間點(diǎn)開

29、始,到要恢復(fù)的時(shí)間點(diǎn)之間的所有歸檔文件三種類型的不完全恢復(fù)1、基于時(shí)間點(diǎn)的不完全恢復(fù)(time-based),恢復(fù)到指定的,歷史上的某個(gè)時(shí)間點(diǎn)為止recover database until time yyyy-mm-dd hh24:mi:ss;2、基于撤銷的不完全恢復(fù)(cancel-based),恢復(fù)到我們輸入cancel命令時(shí)為止,這通常用于丟失聯(lián)機(jī)重做日志文件或歸檔日志文件,當(dāng)恢復(fù)到丟失的日志文件的時(shí)候,只能輸入cancel命令,表示恢復(fù)到此為止recover database until cancel3、基于SCN號(hào)的不完全恢復(fù)(change-based),恢復(fù)到我們指定的、歷史上的某

30、個(gè)SCN,從本質(zhì)上來說,這與基于時(shí)間的不完全恢復(fù)一樣,除非我們能夠確定要恢復(fù)到SCN號(hào),否則建議使用基于時(shí)間點(diǎn)的恢復(fù)recover database until cancel scn 建議在進(jìn)行不完全恢復(fù)之前,將整個(gè)數(shù)據(jù)庫進(jìn)行冷備份,備份所有的數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件,萬一恢復(fù)失敗,我們還能夠?qū)F(xiàn)場徹底還原到進(jìn)行不完全恢復(fù)之前的狀態(tài)或者至少歸檔當(dāng)前的聯(lián)機(jī)日志文件、備份當(dāng)前控制文件alter system archive log currentalter database backup controlfile to 不完全恢復(fù)之前,應(yīng)該檢查alter.ora,可能從中找出誤操作的一些

31、有關(guān)時(shí)間和SCN方面的信息不完全恢復(fù)的步驟1、關(guān)閉數(shù)據(jù)庫,可以使用shutdown abort2、從備份中還原所有的數(shù)據(jù)文件,整個(gè)數(shù)據(jù)庫所有數(shù)據(jù)文件都恢復(fù),因?yàn)镾CN要整體推進(jìn)到要恢復(fù)的時(shí)間點(diǎn)上,數(shù)據(jù)庫要能夠打開,所有數(shù)據(jù)文件頭部記錄的SCN號(hào)要一致3、將數(shù)據(jù)庫啟動(dòng)到mount狀態(tài)4、選擇一種不完全恢復(fù)類型(time、cancel、change)5、以resetlogs選項(xiàng)打開數(shù)據(jù)庫,一旦使用了resetlogs選項(xiàng)打開數(shù)據(jù)庫,則說明以后所有的重做記錄不再需要,同時(shí),數(shù)據(jù)庫的日志序列號(hào)從1開始在oracle 10g數(shù)據(jù)庫之前,如果我們以resetlogs方式打開數(shù)據(jù)庫以后,沒有做數(shù)據(jù)庫的全備份

32、,一旦再次發(fā)生介質(zhì)損壞,導(dǎo)致數(shù)據(jù)文件的丟失,那么我們只能使用發(fā)出resetlogs之前的所做的備份進(jìn)行恢復(fù),最多只能恢復(fù)到發(fā)出resetlogs時(shí)這個(gè)時(shí)間點(diǎn)上,從而導(dǎo)致以resetlogs選項(xiàng)打開數(shù)據(jù)庫以后,所有的數(shù)據(jù)變化丟失因此,一旦resetlog打開數(shù)據(jù)庫以后,第一個(gè)工作就是全備整個(gè)的數(shù)據(jù)庫到了Oracle10g之后,應(yīng)用日志的算法有了改變,我們能夠做到利用發(fā)出resetlogs之前做的備份,發(fā)出resetlogs之前的歸檔日志文件,發(fā)出resetlogs之后的歸檔日志、當(dāng)前的聯(lián)機(jī)重做日志文件,將數(shù)據(jù)庫恢復(fù)到發(fā)出resetlogs之后介質(zhì)損壞的那個(gè)時(shí)間點(diǎn)上備份Resetlogs打開數(shù)據(jù)庫

33、重做記錄不再需要,日志序列號(hào)從1開始10g之前Oracle 10g之前,對(duì)數(shù)據(jù)庫進(jìn)行不完全恢復(fù),需要對(duì)數(shù)據(jù)文件的狀態(tài)進(jìn)行查看v$datafile1、確認(rèn)所有的必要的數(shù)據(jù)文件都是在線的2、只有使用了normal選項(xiàng)進(jìn)行表空間離線的表空間、或只讀表空間所對(duì)應(yīng)的數(shù)據(jù)文件可以不需要在線的3、如果不完全恢復(fù)期間,數(shù)據(jù)文件是離線的,那么他將不能夠被恢復(fù)4、如果表空間使用immediate進(jìn)行了離線,同時(shí),在使用resetlogs選項(xiàng)進(jìn)行打開數(shù)據(jù)庫以后,該數(shù)據(jù)文件仍然處于離線狀態(tài),那么該表空間需要被舍棄,并且重新創(chuàng)建,因?yàn)樵撐募枰褂胷esetlogs以前的日志進(jìn)行介質(zhì)恢復(fù)恢復(fù)后的數(shù)據(jù)文件使用日志進(jìn)行不完

34、全恢復(fù)日志應(yīng)用到此為止,使用resetlogs打開數(shù)據(jù)庫這段日志不需要再應(yīng)用了從日志序列號(hào)1開始記錄新的日志,這些日志是有用的使用resetlogs打開數(shù)據(jù)庫以后,從resetlogs以后的一段重做記錄確認(rèn)不再使用了,打開數(shù)據(jù)庫以后,操作正常進(jìn)行,產(chǎn)生新的日志,對(duì)于現(xiàn)在這個(gè)數(shù)據(jù)庫來說,新產(chǎn)生的日志是有意義的,從日志序列號(hào)1開始,resetlogs以前的日志不能夠應(yīng)用現(xiàn)在的數(shù)據(jù)庫中了,現(xiàn)在的數(shù)據(jù)庫已經(jīng)不認(rèn)識(shí)了,因?yàn)槲覀冇謴?開始了,以前的1已經(jīng)不認(rèn)識(shí)了。使用normal選項(xiàng)使某個(gè)數(shù)據(jù)文件離線,離線以前,oracle會(huì)發(fā)出文件級(jí)別的檢查點(diǎn),從而喚醒DBWn將內(nèi)存中屬于該文件的所有臟數(shù)據(jù)塊寫入數(shù)據(jù)文

35、件,并且控制文件中檢查點(diǎn)SCN與數(shù)據(jù)文件一致。即便是在不完全恢復(fù)期間該數(shù)據(jù)文件仍然保持離線狀態(tài)的話,也可以在不完全恢復(fù)成功以后,再將該文件在線,由于該文件不需要介質(zhì)恢復(fù),所以oracle可以直接將數(shù)據(jù)文件頭的SCN修改成當(dāng)前SCN關(guān)鍵是在數(shù)據(jù)文件online的時(shí)候,控制文件中記錄的SCN和數(shù)據(jù)文件頭部的SCN是一致的,那么說明數(shù)據(jù)文件不需要進(jìn)行介質(zhì)恢復(fù),因此可以直接online執(zhí)行依次checkpoint,對(duì)數(shù)據(jù)文件頭部和控制文件中的SCN和結(jié)束SCN進(jìn)行了更新??刂莆募杏涗浀臄?shù)據(jù)文件的檢查點(diǎn)信息數(shù)據(jù)文件頭部的檢查點(diǎn)一定是540159,而數(shù)據(jù)文件offline時(shí)的系統(tǒng)檢查點(diǎn)分別是540282

36、和540285,下一次數(shù)據(jù)文件online的時(shí)候,需要執(zhí)行介質(zhì)恢復(fù)。備份數(shù)據(jù)文件數(shù)據(jù)文件immediate offlineResetlogs打開數(shù)據(jù)庫的點(diǎn)文件在這個(gè)點(diǎn)online重做記錄一直到這個(gè)點(diǎn)請(qǐng)問這個(gè)點(diǎn)的數(shù)據(jù)文件能夠online嗎?對(duì)新添加的數(shù)據(jù)文件進(jìn)行了備份。對(duì)temp表空間沒有進(jìn)行備份。默認(rèn)的永久表空間不能刪除。正在操作中,DBA做了一個(gè)錯(cuò)誤的操作,將表空間刪除了。我們需要將數(shù)據(jù)恢復(fù)到出問題的那個(gè)時(shí)刻。需要進(jìn)行不完全恢復(fù)。表空間被刪除以后,繼續(xù)進(jìn)行正常操作,產(chǎn)生了一些數(shù)據(jù)。通過查看備份,我們確認(rèn)所有數(shù)據(jù)文件都有備份,不是同一個(gè)時(shí)刻,而且temp沒有備份,所有歸檔還都在。通過日志,發(fā)現(xiàn)

37、12:29:40發(fā)生了誤刪除,我們恢復(fù)到提前一秒鐘備份當(dāng)前所有的數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件恢復(fù)所有的數(shù)據(jù)文件這些數(shù)據(jù)文件都不是同一個(gè)時(shí)刻備份的。但都是出事前備份的。發(fā)現(xiàn)已經(jīng)沒有6號(hào)文件了。發(fā)現(xiàn)6號(hào)數(shù)據(jù)文件還是沒有回來。6號(hào)數(shù)據(jù)文件回來了。發(fā)現(xiàn)6號(hào)數(shù)據(jù)文件的名字不對(duì)。對(duì)文件名字進(jìn)行修改。數(shù)據(jù)文件需要校正。數(shù)據(jù)回來了,但是因?yàn)槭遣煌耆謴?fù),還是丟失了部分?jǐn)?shù)據(jù)?;赟CN的恢復(fù)和基于時(shí)間的恢復(fù)一樣,只不過基于SCN的恢復(fù)更加精確。前提都是1、控制文件沒有損壞、聯(lián)機(jī)文件沒有損壞、歸檔日志文件沒有損壞我們有意識(shí)的將數(shù)據(jù)庫恢復(fù)到過去的某個(gè)點(diǎn),例如為了恢復(fù)誤刪除對(duì)于聯(lián)機(jī)重做日志文件和歸檔日志文件的

38、丟失,我們通常使用基于cancel的不完全恢復(fù),下面的實(shí)驗(yàn)就是刪除聯(lián)機(jī)重做日志文件后的恢復(fù)2號(hào)日志文件組為當(dāng)前的聯(lián)機(jī)重做日志文件組,將它刪除數(shù)據(jù)庫在進(jìn)行正常的操作Current日志文件組被刪除。關(guān)閉數(shù)據(jù)庫備份所有的數(shù)據(jù)文件、聯(lián)機(jī)重做日志文件、控制文件還原所有的數(shù)據(jù)文件,這些數(shù)據(jù)文件是在不同的時(shí)期備份的啟動(dòng)到mount狀態(tài),打開控制文件。當(dāng)恢復(fù)到SCN564007的時(shí)候,系統(tǒng)報(bào)錯(cuò),而這個(gè)文件正是我們刪除的聯(lián)機(jī)重做日志文件。使用auto再次執(zhí)行,輸入cancel,打開數(shù)據(jù)庫。SCN564007以后的所有的數(shù)據(jù)庫的改變都會(huì)丟失。因此丟失聯(lián)機(jī)重做日志文件是一件很可怕的事情。特別是丟失當(dāng)前正在使用的聯(lián)機(jī)日志文件組。聯(lián)機(jī)日志文件自動(dòng)回來了。但是丟失了數(shù)據(jù)。丟失所有控制文件時(shí)的恢復(fù),可以使用兩種方法1、使用以前備份的控制文件2、創(chuàng)建新的控制文件使用以前備份的控制文件1、創(chuàng)建表t21、t22,以便使用備份的控制文件進(jìn)行完全恢復(fù)以后仍然存在刪除所有控制文件。關(guān)閉數(shù)據(jù)庫備份整個(gè)數(shù)據(jù)庫將備份的控制文件恢復(fù)到相應(yīng)位置,不要恢復(fù)數(shù)據(jù)文件提示找不到控制文件修改pfile,在dbs目錄下面,注意名字和創(chuàng)建日期。發(fā)現(xiàn)控制文件中的SCN比數(shù)據(jù)文件頭部的SCN要舊。系統(tǒng)使用完了歸檔日志文件,要使用聯(lián)機(jī)重做日志文件,因?yàn)槭褂玫氖且郧暗目刂?/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論