




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、備份恢復(fù) 1、備份 物理備份:對數(shù)據(jù)文件、控制文件、歸檔日志文件的備份 邏輯備份:對數(shù)據(jù)庫內(nèi)部邏輯對象的備份(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ī)重做日志文件主要的作用是實例崩潰恢復(fù) Oracle有兩種運(yùn)行模式 歸檔模式 非歸檔模式 歸檔模式就是將所有的聯(lián)機(jī)重做日志文件在循環(huán)覆蓋以前進(jìn)行歸檔,保留一份副本,非歸檔是默認(rèn)的運(yùn)行模式 歸檔模式?jīng)Q定了備份模式,冷備份 1、如果數(shù)據(jù)庫是非歸檔模式,那么只能使用冷備份 1、數(shù)據(jù)庫
2、正常關(guān)閉,使用操作系統(tǒng)復(fù)制命令,備份所有的控制文件、數(shù)據(jù)文件 數(shù)據(jù)庫正常關(guān)閉,會觸發(fā)完全檢查點(diǎn)信息,所有臟內(nèi)存塊都寫入到了數(shù)據(jù)文件中,聯(lián)機(jī)重做日志文件沒有什么意義 要備份所有的數(shù)據(jù)文件、控制文件,不需要聯(lián)機(jī)重做日志文件 2、如果使用的是abort關(guān)閉數(shù)據(jù)庫,或者實例崩潰關(guān)閉,需要備份聯(lián)機(jī)重做日志文件 關(guān)鍵是要獲取所有的數(shù)據(jù)文件和控制文件的位置,熱備份 1、數(shù)據(jù)庫需要處于歸檔模式 2、數(shù)據(jù)庫打開的狀態(tài)下,可以進(jìn)行表空間、數(shù)據(jù)文件的備份 3、歸檔對數(shù)據(jù)庫的性能還是有一定影響的 4、歸檔可以不丟失任何數(shù)據(jù),歸檔模式,歸檔模式,啟用了自動歸檔,歸檔模式中,對聯(lián)機(jī)日志文件的歸檔分為兩種模式 手工方式和自
3、動歸檔 聯(lián)機(jī)日志文件A寫滿以后,切換到B,手工歸檔模式需要手工的發(fā)出命令才能歸檔,如果不發(fā)出命令,A不會被歸檔,同時A也不能被覆蓋,這樣切換回來需要覆蓋A的時候,整個數(shù)據(jù)庫被掛起 除非測試,不要將生產(chǎn)數(shù)據(jù)庫設(shè)置在手工歸檔模式,自動歸檔模式中,當(dāng)LGWR在將重做日志寫入當(dāng)前聯(lián)機(jī)重做日志文件中,發(fā)現(xiàn)寫滿時,于是切換到另一個新的聯(lián)機(jī)重做日志文件,進(jìn)行日志切換,同時觸發(fā)歸檔進(jìn)程(ARCn),將當(dāng)前已經(jīng)寫滿的聯(lián)機(jī)日志文件進(jìn)行歸檔 其中的n表示我們啟動了多個歸檔進(jìn)程,oracle 10g中n從1到30,啟動6個歸檔進(jìn)程。,歸檔日志文件的存放位置,默認(rèn)歸檔到這個目錄里面。,默認(rèn)存放在這個目錄里面。,恢復(fù)區(qū)和
4、新設(shè)置的歸檔區(qū)都是空的。,日志歸檔到了我們設(shè)置的目錄中。只有一份歸檔。 注意,我們還可以將日志歸檔到另外一個服務(wù)器上。作為一個災(zāi)備的概念,但是需要要測試歸檔的性能。,歸檔的一些參數(shù),只有在將聯(lián)機(jī)日志成功歸檔到這個目錄以后,該日志文件才能夠被覆蓋。Reopen表示一旦不能夠成功到目的地,則每隔一段時間(默認(rèn)300秒)嘗試一次,下面的語句設(shè)置時間間隔是600秒。,歸檔到三個目的地,文件的名字都一樣。,我們設(shè)置了三個歸檔目錄,兩個是強(qiáng)制的,一個是可選的 如果最少歸檔的數(shù)目少于mandatory,那么沒有什么意義。我們設(shè)置為3,表示至少歸檔三個目的地,就相當(dāng)于設(shè)置了三個強(qiáng)制。,我們將第三個目的地給刪除
5、。,發(fā)現(xiàn)也能夠成功的歸檔。,發(fā)現(xiàn)還是能夠正常的歸檔,也就是最少成功備份參數(shù)沒有起作用。 所以我們還是要依靠強(qiáng)制來實現(xiàn)多路徑。,多次執(zhí)行,當(dāng)要覆蓋第一個沒有歸檔成功的日志文件的時候,數(shù)據(jù)庫掛起,重新建立了這個目錄。 即使數(shù)據(jù)庫被掛起,還是可以登陸,還是可以進(jìn)行操作。,連續(xù)的操作以后,發(fā)現(xiàn)數(shù)據(jù)庫掛起。,大約過了10分鐘以后,因為reopen的原因,系統(tǒng)正常的歸檔以后,操作繼續(xù)進(jìn)行。,歸檔出現(xiàn)問題以后,最好的解決辦法就是抓緊時間將歸檔目的地修復(fù)好。,另外一種解決方式就是將這個目錄設(shè)置為defer。問題馬上解決。但是要注意不能少于這個參數(shù)。,表示dest2目錄不可用。,所有目錄都刪除以后怎么辦?,使用
6、defer的辦法是沒有用的。只能恢復(fù)目錄了。因為總是需要?dú)w檔到一個地方去。,將標(biāo)識為enable的修復(fù)。,重新指定了一個歸檔目錄,問題快速解決。,解決思路 1、首先將min_suceed設(shè)置成1 2、重新建立一個歸檔目錄 3、將以前所有的歸檔目錄設(shè)置成為defer,生成的歸檔日志文件的文件名?,%s:日志序列號 %S:固定長度的日志序列號,不足位在左邊補(bǔ)0 %t:日志線程號,%T:固定長度的日志線程號,不足位在左邊補(bǔ)0 %a:激活I(lǐng)D %d:數(shù)據(jù)庫名 %r:resetlogs生成的ID,默認(rèn)為%t_%s_%r.dbf,熱備份數(shù)據(jù)庫 1、可以備份某個表空間所有的數(shù)據(jù)文件,也可以備份某個表空間下的
7、某個數(shù)據(jù)文件,整個的備份過程中,表空間是可用的,將日志進(jìn)行歸檔,然后備份到另外一個介質(zhì)上。 恢復(fù)的時候,備份的數(shù)據(jù)文件要能夠使用,至少要求在begin backup和end backup之間所有的歸檔日志,否則備份的介質(zhì)沒有任何意義。 對每一個表空間,都重復(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ù)文件時,是基于操作系統(tǒng)塊進(jìn)行復(fù)制的,也就是說復(fù)制一個操作系統(tǒng)塊的時候,首先鎖定這個
8、塊,復(fù)制完成以后,解鎖這個塊,這樣這個塊在復(fù)制前和復(fù)制后是一致的。但是對于一個Oracle數(shù)據(jù)庫來說,一個塊要分成幾次進(jìn)行復(fù)制,可能在復(fù)制一個操作系統(tǒng)數(shù)據(jù)塊的時候,另外一個操作系統(tǒng)數(shù)據(jù)塊被改變了,導(dǎo)致oracle數(shù)據(jù)塊在復(fù)制到備份介質(zhì)以后,前一半是沒有改動過的,后一半是改動過的,數(shù)據(jù)塊的狀態(tài)就不一致,數(shù)據(jù)塊就能夠使用,備份也就不能夠使用,這叫做分離數(shù)據(jù)塊現(xiàn)象(split blocks) 2、oracle在數(shù)據(jù)塊的頭部和尾部各存了一個版本號,通過這個來確認(rèn)這個數(shù)據(jù)塊是否是分離數(shù)據(jù)塊,oracle修改過一個數(shù)據(jù)塊以后,將這個數(shù)據(jù)塊的版本號在頭部和尾部各存放了一份 3、為了修復(fù)分離數(shù)據(jù)塊現(xiàn)象,我們在
9、備份某個表空間的時候,首先進(jìn)行begin backup,通知數(shù)據(jù)庫開始備份,在沒有end backup命令之前,只要是進(jìn)程修改了被備份的表空間所包含的數(shù)據(jù)塊中的某條記錄,oracle就會把該數(shù)據(jù)塊中所包含的所有的數(shù)據(jù)行的數(shù)據(jù)生成重做記錄,記錄到日志文件中,4、通過發(fā)出begin backup以后,第一次修改數(shù)據(jù)塊中的數(shù)據(jù)行之前,在聯(lián)機(jī)重做日志文件中記錄數(shù)據(jù)塊的修改前的數(shù)據(jù),這樣在熱備份恢復(fù)的時候,一旦發(fā)現(xiàn)某個數(shù)據(jù)塊被分離,則會利用日志文件里的記錄的數(shù)據(jù)對整個數(shù)據(jù)塊進(jìn)行恢復(fù) 5、備份表空間中的所有的被修改過的數(shù)據(jù)塊的所有數(shù)據(jù)行都被保存在了聯(lián)機(jī)重做日志文件中,而不是只記錄被修改的數(shù)據(jù)行的記錄,因此
10、在熱備份過程中,會發(fā)現(xiàn)生成的聯(lián)機(jī)重做日志文件的量比較大,這取決于業(yè)務(wù)的繁忙程度,例如DML量比較大,那么產(chǎn)生的日志會非常的多 6、發(fā)出begin backup命令以后,oracle會對被備份的表空間所對應(yīng)的數(shù)據(jù)文件觸發(fā)文件級別的檢查點(diǎn)進(jìn)程,將內(nèi)存中屬于該表空間的所有臟數(shù)據(jù)塊寫入數(shù)據(jù)文件,檢查點(diǎn)結(jié)束以后,數(shù)據(jù)文件頭部(第一個和第一個數(shù)據(jù)塊)的檢查點(diǎn)SCN和日志序列號都不在變化,直至發(fā)出end backup,數(shù)據(jù)文件頭部的SCN和日志序列號才被更新 7、在熱備份的過程中,數(shù)據(jù)文件頭部的SCN和日志序列號被凍結(jié),但是數(shù)據(jù)文件本身還是最新的,和正常一樣的更新和使用,DML更新了某個表,這些更新都會被寫
11、入到數(shù)據(jù)文件中去 8、凍結(jié)數(shù)據(jù)文件頭部的SCN號和日志序列號,是為了將來使用熱備份進(jìn)行恢復(fù)的時候,能夠知道應(yīng)該從哪里開始應(yīng)用重做記錄,也就是備份的數(shù)據(jù)文件頭部所記錄的SCN和日志序列號,定位到日志文件中,從日志文件中找到開始的SCN,向后應(yīng)用所有的日志文件 9、end backup以后,所有的數(shù)據(jù)文件的頭部SCN和日志序列號推進(jìn)到最新,因為數(shù)據(jù)文件本身就是最新的,知道那個表空間正處于熱備份狀態(tài)?,在備份的過程中,數(shù)據(jù)庫意外的崩潰,重新啟動,出現(xiàn)了一個意外的情況,我們下面繼續(xù)解決。 1、實例沒有啟動,因此不能修改參數(shù),只能生成pfile,修改后再倒入到spfile,修改pfile,系統(tǒng)提示一個數(shù)
12、據(jù)文件損壞,我們懷疑可能是這個數(shù)據(jù)文件正在備份過程中實例崩潰。,果然是因為數(shù)據(jù)庫備份過程中實例崩潰,輕松解決。,備份控制文件 只要在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化以后,例如增加、刪除、重命名數(shù)據(jù)文件或日志文件以后,都應(yīng)該備份控制文件。 兩種方式備份控制文件 1、二進(jìn)制備份,2、SQL命令方式,備份到了這個文件中,里面是控制文件的重建語句。,文件部分內(nèi)容。,初始化參數(shù)文件和密碼文件也需要備份,只要復(fù)制即可。,介質(zhì)恢復(fù) 1、還原restore 使用備份的文件替換損壞或丟失的文件,該階段使用操作系統(tǒng)命令完成 2、恢復(fù)recovery 將歸檔的日志文件以及聯(lián)機(jī)重做日志文件里的重做記錄應(yīng)用到還原出來的文件上,該階段
13、在SQLPLUS的recover命令完成 打開數(shù)據(jù)庫的時候,數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件必須同步,如果不同步,需要進(jìn)行恢復(fù),恢復(fù)成功以后才能打開數(shù)據(jù)庫 一致性是基于檢查點(diǎn)SCN和日志序列號而言 控制文件里記錄了三種重要的檢查點(diǎn)SCN號 1、系統(tǒng)檢查點(diǎn)SCN 當(dāng)檢查點(diǎn)進(jìn)程啟動時,會將檢查點(diǎn)結(jié)束時間的SCN號記錄在控制文件中(SCN是一個以時間為參數(shù)的函數(shù)值),該檢查點(diǎn)是全局范圍內(nèi)的,當(dāng)發(fā)生文件級別的檢查點(diǎn)(比如將某個表空間設(shè)置為begin backup而引起的檢查點(diǎn))時,則不會更新該系統(tǒng)檢查點(diǎn)SCN,數(shù)據(jù)文件檢查點(diǎn) 當(dāng)檢查點(diǎn)進(jìn)程啟動時,包括全局范圍的(例如發(fā)生日志切換)以及文件級別的(將
14、表空間設(shè)置為只讀、begin backup、或?qū)⒛硞€數(shù)據(jù)文件設(shè)置為offline)檢查點(diǎn),這時會在控制文件里面記錄每個數(shù)據(jù)文件上所發(fā)生的檢查點(diǎn)SCN (將數(shù)據(jù)文件設(shè)置為正常離線、只讀時,將表空間設(shè)置為begin backup時,觸發(fā)文件級別的檢查點(diǎn),并將該檢查點(diǎn)更新控制文件和數(shù)據(jù)文件頭部以后,就不再變化),這個文件的檢查點(diǎn)明顯的高于其余文件,因為我們剛才執(zhí)行一個begin backup命令,觸發(fā)了一個文件檢查點(diǎn)。,結(jié)束SCN 每個數(shù)據(jù)文件都會有一個結(jié)束SCN,在數(shù)據(jù)庫正常運(yùn)行期間,只要是在線的、可讀寫的數(shù)據(jù)文件,其終止SCN都為空 正常關(guān)閉數(shù)據(jù)庫時,或者將數(shù)據(jù)文件正常離線、或只讀時,都會由于觸
15、發(fā)了檢查點(diǎn)進(jìn)程,從而在控制文件里記錄每個數(shù)據(jù)文件上的結(jié)束時 的SCN號,Begin backup不能設(shè)置數(shù)據(jù)文件的結(jié)束SCN,通過設(shè)置數(shù)據(jù)文件的只讀可以讓結(jié)束SCN記錄到數(shù)據(jù)文件中。,正常關(guān)閉數(shù)據(jù)庫,每個數(shù)據(jù)文件的結(jié)束SCN都是一致的(只讀、離線的除外),數(shù)據(jù)庫啟動以后,數(shù)據(jù)文件的結(jié)束SCN都變成空。,在每個數(shù)據(jù)文件的頭部,也記錄了檢查點(diǎn)SCN,該檢查點(diǎn)SCN與控制文件中記錄的數(shù)據(jù)文件的檢查點(diǎn)SCN是一致的。也就是說,全局范圍和數(shù)據(jù)文件級別的檢查點(diǎn),不僅會將檢查點(diǎn)SCN記錄在控制文件中,還會記錄在數(shù)據(jù)文件的頭部。,數(shù)據(jù)庫正常關(guān)閉時,會觸發(fā)一個完全檢查點(diǎn),并用該檢查點(diǎn)結(jié)束時的SCN號更新以上4個
16、檢查點(diǎn)SCN(除了離線和只讀的),下次數(shù)據(jù)庫啟動的時候,會比較這四個檢查點(diǎn)SCN,如果他們相同,說明數(shù)據(jù)庫是一致的,可以正常打開 如果數(shù)據(jù)庫非正常關(guān)閉,例如掉電 導(dǎo)致數(shù)據(jù)庫沒有進(jìn)行完全檢查點(diǎn)就關(guān)掉了,每個在線、讀寫的數(shù)據(jù)文件的終止SCN仍然為空,下次數(shù)據(jù)庫啟動的時候,發(fā)現(xiàn)在線和讀寫的數(shù)據(jù)文件的終止SCN為空,則SMON進(jìn)程會進(jìn)行實例恢復(fù) 如果備份的數(shù)據(jù)文件覆蓋當(dāng)前的數(shù)據(jù)文件,則數(shù)據(jù)庫會發(fā)現(xiàn)記錄在控制文件里面的數(shù)據(jù)文件的檢查點(diǎn)SCN號與從備份中還原的數(shù)據(jù)文件的頭部記錄的檢查點(diǎn)SCN不一致,控制文件中的SCN比較新,備份中還原的數(shù)據(jù)文件頭部的SCN比較舊,控制文件的SCN大于數(shù)據(jù)文件頭部的SCN,
17、數(shù)據(jù)庫不能打開,要求對還原的數(shù)據(jù)文件進(jìn)行恢復(fù),應(yīng)用重做記錄,從而將該數(shù)據(jù)文件頭部的SCN提升到控制文件里記錄的SCN號,如果我們將備份的控制文件覆蓋當(dāng)前的控制文件,這時控制文件比較舊,而數(shù)據(jù)文件則是當(dāng)前最新的的數(shù)據(jù)文件,因此數(shù)據(jù)庫會發(fā)現(xiàn)控制文件里面的SCN小于數(shù)據(jù)文件頭部記錄的SCN,于是進(jìn)行恢復(fù) 啟動數(shù)據(jù)庫的時候,如果發(fā)現(xiàn)控制文件里記錄的數(shù)據(jù)文件檢查點(diǎn)SCN與數(shù)據(jù)文件頭部記錄的SCN相同,但是在每個在線的以及可讀寫的數(shù)據(jù)文件之間,他們的檢查點(diǎn)SCN不同,那么會要求進(jìn)行介質(zhì)恢復(fù),例如begin backup后,實例崩潰,重啟數(shù)據(jù)庫時就會發(fā)生這種情況,必須發(fā)出end backup命令才能打開數(shù)據(jù)
18、庫。,完全恢復(fù) 將數(shù)據(jù)庫恢復(fù)到最新狀態(tài) 非歸檔模式 歸檔模式 非歸檔模式下面的完全恢復(fù) 1、在非歸檔模式下面,如果出現(xiàn)介質(zhì)的損壞,則必須使用一個在關(guān)閉狀態(tài)下面所做的備份進(jìn)行恢復(fù) 2、即使只丟失了一個數(shù)據(jù)文件,也必須還原所有的數(shù)據(jù)文件 3、關(guān)閉數(shù)據(jù)庫,還原所有的控制文件、數(shù)據(jù)文件,如果備份了聯(lián)機(jī)重做,也可以還原,不還原聯(lián)機(jī)重做日志文件也是可以的 4、所用的備份,必須是在同一個時間點(diǎn)上做的備份,非歸檔模式的還原分為兩種情況 1、備份時,同時備份了聯(lián)機(jī)重做日志文件 關(guān)閉數(shù)據(jù)庫,使用最近的備份,通過操作系統(tǒng)命令進(jìn)行復(fù)制,將數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件復(fù)制到這些文件所在的目錄 2、備份時,沒有備
19、份聯(lián)機(jī)重做日志文件 關(guān)閉數(shù)據(jù)庫 從最近的備份中,還原所有的數(shù)據(jù)文件和控制文件 啟動數(shù)據(jù)庫,會報告找不到聯(lián)機(jī)重做日志文件或者聯(lián)機(jī)重做日志文件不匹配的錯誤消息 recover database until cancel using backup controlfile; 提示輸入日志信息時,輸入cancel alter database open resetlogs; 最大的問題,丟失自上次備份以來所有的數(shù)據(jù),我們下面來做一個還原(沒有備份reodlog的還原),建立了一個新的數(shù)據(jù)庫。,將三類文件的位置和名字找出來,一個都不能少。,將所有數(shù)據(jù)文件、控制文件備份出來,不能漏掉任何的一個。,刪除一個數(shù)
20、據(jù)文件后,數(shù)據(jù)庫啟動時報錯,數(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ī)重做日志文件都沒有損壞,而只是數(shù)據(jù)文件損壞,并且只要存在備份以及自從該備份以來所有的歸檔日志文件,就能夠把數(shù)據(jù)庫完全恢復(fù)到發(fā)生介質(zhì)損壞的那個時間點(diǎn)上,通過recover命令實現(xiàn)恢復(fù)操作 如果所有控制文件損壞,或者整個聯(lián)機(jī)重做日志文件丟失,或者自從上次備份以來丟失了某
21、個歸檔日志文件,則需要進(jìn)行不完全恢復(fù) 因此對于控制文件、聯(lián)機(jī)重做日志文件、歸檔日志文件,一定要注意保存好,歸檔模式下面的完全恢復(fù)分為三個階段 數(shù)據(jù)庫級別 數(shù)據(jù)文件級別 表空間級別 如果恢復(fù)整個數(shù)據(jù)庫,則需要將數(shù)據(jù)庫啟動到mount狀態(tài) 如果恢復(fù)某個數(shù)據(jù)文件或者恢復(fù)某個表空間,則可以在數(shù)據(jù)庫打開狀態(tài)下進(jìn)行,當(dāng)發(fā)出recover命令時,oracle會從所有被還原的數(shù)據(jù)文件頭中選擇一個最小的檢查點(diǎn)SCN號以及日志序列號,從該日志序列號所指定的日志文件開始,向后依次開始應(yīng)用所有的重做記錄,直到每個數(shù)據(jù)文件頭部的檢查點(diǎn)SCN達(dá)到控制文件中所記錄的數(shù)據(jù)文件檢查點(diǎn)SCN為止,所有日志文件的序列號必須連貫,不
22、能中斷。 在恢復(fù)數(shù)據(jù)文件的時候,必須以獨(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ù),兩個重要的視圖 v$recover_file:哪些數(shù)據(jù)文件需要恢復(fù) v$recovery_log:為了完全恢復(fù)受損的數(shù)據(jù)文件,需要哪些日志文件 三種恢復(fù)方式 1、recover database,關(guān)閉數(shù)據(jù)庫使用 如果系統(tǒng)表空間或者undo表空間 所有數(shù)據(jù)文件損壞 2、recover tablespace 非系統(tǒng)表空間、undo表空間損壞時建議使用這種方式 需要首
23、先將受損的表空間離線 3、recover datafile 同上面的命令 都是在數(shù)據(jù)庫打開和關(guān)閉的時候使用,在恢復(fù)數(shù)據(jù)的過程中,會使用到數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件、歸檔日志文件 前三者都是聯(lián)機(jī)的,后者是脫機(jī)的,因此在應(yīng)用到歸檔日志文件的時候,數(shù)據(jù)庫往往會提示輸入歸檔日志的目錄,一般來說,我們可能將歸檔日志備份到另外一個位置,然后刪除當(dāng)前位置的歸檔日志,但是通常不去改變他的名字。 如果我們將要恢復(fù)的歸檔日志放在了一個不同的位置,我們在恢復(fù)的時候,可以手工的指定位置,也可以通過設(shè)置下面的參數(shù),讓系統(tǒng)在我們指定的目錄里面自動尋找 因為歸檔日志很多,我們在應(yīng)用的時候,不希望都去指定,希望將歸
24、檔日志都放在一個目錄里面,通過指定參數(shù),讓oracle在恢復(fù)的時候,自動的去尋找歸檔日志,自動的去應(yīng)用。,將數(shù)據(jù)庫改成歸檔模式。,數(shù)據(jù)庫進(jìn)行恢復(fù),自動尋找歸檔日志的方法有三種 前提:將需要的歸檔日志集中存放在一個目錄里面,然后設(shè)置了正確的dest路徑 1、,2、恢復(fù)時提示我們輸入日志文件的路徑,輸入auto即可,oracle會自動搜索日志文件進(jìn)行應(yīng)用,3、sqlrecover automatic datafile 4,直接自動進(jìn)行恢復(fù),完全恢復(fù)的四種方法 1、數(shù)據(jù)庫打開狀態(tài),系統(tǒng)表空間和undo表空間未損壞,其他表空間損壞,清空buffer cahche,系統(tǒng)提示數(shù)據(jù)文件損壞。,突然發(fā)現(xiàn)在歸檔
25、模式下面沒有備份數(shù)據(jù)庫。只能恢復(fù)數(shù)據(jù)庫到冷備時刻。,將冷備的控制文件、數(shù)據(jù)文件都拷貝到指定目錄。,啟動報錯。提示聯(lián)機(jī)重做日志文件有問題,因為我們在冷備的時候沒有備份聯(lián)機(jī)重做日志文件。,數(shù)據(jù)庫恢復(fù),但只是恢復(fù)到上次冷備的時刻。,數(shù)據(jù)庫還是非歸檔模式。,設(shè)置為歸檔,將所有的備份刪除。,對users表空間進(jìn)行了備份。,在users表空間上進(jìn)行了操作。,模擬了日志的歸檔。,對日志文件進(jìn)行了歸檔的備份。,故障出現(xiàn)。,將表空間offline,將所有歸檔日志所在的目錄改成歸檔目錄。 我們也可以采用這樣的方式,不改變歸檔目錄,但是將所有的需要的歸檔日志拷貝到歸檔目錄中,總之就是將歸檔日志放在數(shù)據(jù)庫能夠找到的地
26、方,數(shù)據(jù)文件頭部的SCN,當(dāng)初發(fā)出begin backup命令時,數(shù)據(jù)文件頭部的SCN,控制文件中記錄的數(shù)據(jù)文件的檢查點(diǎn)SCN,出問題時的SCN是454751,offline時的檢查點(diǎn)是455656.,因為備份已經(jīng)恢復(fù)、歸檔已經(jīng)設(shè)置,聯(lián)機(jī)和控制文件都沒有問題。,2、數(shù)據(jù)庫處于關(guān)閉狀態(tài),系統(tǒng)表空間和undo表空間損壞。,日常的操作,備份system數(shù)據(jù)庫,要使用自動恢復(fù),就需要設(shè)置好歸檔日志所在的目錄。,模擬故障。,只啟動到mount,數(shù)據(jù)庫正在運(yùn)行,undo表空間損壞。,沒有報錯,使用的應(yīng)該是system的回滾段,因為用戶是sys。,改變用戶后馬上報錯。,重建失敗。,只能進(jìn)行恢復(fù)。,重新進(jìn)行模
27、擬上面的故障,對四個表空間進(jìn)行了備份。,模擬一個故障,報錯,提示undotbs1錯誤,備份拷貝回來。,恢復(fù)undo表空間不能在數(shù)據(jù)庫打開狀態(tài)下進(jìn)行。,關(guān)閉數(shù)據(jù)庫,將undo在線。,問題解決。,數(shù)據(jù)庫在打開的情況下,system表空間崩潰。,恢復(fù)備份文件,System自動聯(lián)機(jī)。,Undo和system表空間的損壞都需要重啟數(shù)據(jù)庫進(jìn)行修復(fù)。,數(shù)據(jù)庫關(guān)閉,非system和undo表空間損壞,運(yùn)行中突然掉電,一個數(shù)據(jù)文件損壞,還原備份文件。,只要是控制文件、聯(lián)機(jī)重做日志文件沒有損壞、歸檔日志全,數(shù)據(jù)文件有備份,恢復(fù)就非常的簡單。不管你是什么故障。,數(shù)據(jù)文件沒有備份,具有自創(chuàng)建該數(shù)據(jù)文件以來所有的歸檔日
28、志文件 創(chuàng)建了一個數(shù)據(jù)文件,就需要立即進(jìn)行備份,如果該文件丟失,又沒有備份,該如何處理,只能從歸檔日志中進(jìn)行恢復(fù)。,添加了一個數(shù)據(jù)文件給users表空間,給表test15分配extent的時候,手工指定使用user02.dbf文件。,數(shù)據(jù)文件出現(xiàn)故障。,創(chuàng)建該文件的SCN,將5號文件離線是的SCN,因為該文件被刪除,所以文件頭部的SCN是0 因為沒有備份該文件,所以重建該文件。,文件的SCN是當(dāng)時文件創(chuàng)建時的SCN。,不完全恢復(fù)的場合 1、進(jìn)行完全恢復(fù)的時候,在應(yīng)用歸檔日志的過程中,丟失了其中一個或者多個歸檔日志文件,因此我們只能將數(shù)據(jù)庫不完全恢復(fù)到丟失的最早的那個歸檔日志文件為止 2、丟失了
29、整個聯(lián)機(jī)重做日志文件組,而該聯(lián)機(jī)重做日志文件還沒有完成歸檔 3、用戶誤刪除了表里的數(shù)據(jù),或誤刪除了表,或誤刪除了某個重要的用戶,要恢復(fù)被誤刪除的數(shù)據(jù),可以通過不完全恢復(fù),將數(shù)據(jù)庫恢復(fù)到誤操作之前的時間點(diǎn) 4、當(dāng)前控制文件全部丟失,并使用了備份的控制文件進(jìn)行恢復(fù),這時進(jìn)行的不完全恢復(fù),但是只要所有的歸檔日志、聯(lián)機(jī)重做日志文件都在,仍然能夠恢復(fù)所有的數(shù)據(jù) 不完全恢復(fù)有下面的兩個前提 1、具有所有數(shù)據(jù)文件的備份,并且該備份是在要恢復(fù)到的時間點(diǎn)之前做的,例如要恢復(fù)到11:00點(diǎn),那么備份就需要是11:00之前做的 2、具有從備份完成的時間點(diǎn)開始,到要恢復(fù)的時間點(diǎn)之間的所有歸檔文件,三種類型的不完全恢復(fù)
30、 1、基于時間點(diǎn)的不完全恢復(fù)(time-based),恢復(fù)到指定的,歷史上的某個時間點(diǎn)為止 recover database until time yyyy-mm-dd hh24:mi:ss; 2、基于撤銷的不完全恢復(fù)(cancel-based),恢復(fù)到我們輸入cancel命令時為止,這通常用于丟失聯(lián)機(jī)重做日志文件或歸檔日志文件,當(dāng)恢復(fù)到丟失的日志文件的時候,只能輸入cancel命令,表示恢復(fù)到此為止 recover database until cancel 3、基于SCN號的不完全恢復(fù)(change-based),恢復(fù)到我們指定的、歷史上的某個SCN,從本質(zhì)上來說,這與基于時間的不完全恢復(fù)
31、一樣,除非我們能夠確定要恢復(fù)到SCN號,否則建議使用基于時間點(diǎn)的恢復(fù) recover database until cancel scn 建議在進(jìn)行不完全恢復(fù)之前,將整個數(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 current alter database backup controlfile to ,不完全恢復(fù)之前,應(yīng)該檢查alter.ora,可能從中找出誤操作的一些有關(guān)時間和SCN方面的信息 不完全恢復(fù)
32、的步驟 1、關(guān)閉數(shù)據(jù)庫,可以使用shutdown abort 2、從備份中還原所有的數(shù)據(jù)文件,整個數(shù)據(jù)庫所有數(shù)據(jù)文件都恢復(fù),因為SCN要整體推進(jìn)到要恢復(fù)的時間點(diǎn)上,數(shù)據(jù)庫要能夠打開,所有數(shù)據(jù)文件頭部記錄的SCN號要一致 3、將數(shù)據(jù)庫啟動到mount狀態(tài) 4、選擇一種不完全恢復(fù)類型(time、cancel、change) 5、以resetlogs選項打開數(shù)據(jù)庫,一旦使用了resetlogs選項打開數(shù)據(jù)庫,則說明以后所有的重做記錄不再需要,同時,數(shù)據(jù)庫的日志序列號從1開始,在oracle 10g數(shù)據(jù)庫之前,如果我們以resetlogs方式打開數(shù)據(jù)庫以后,沒有做數(shù)據(jù)庫的全備份,一旦再次發(fā)生介質(zhì)損壞,
33、導(dǎo)致數(shù)據(jù)文件的丟失,那么我們只能使用發(fā)出resetlogs之前的所做的備份進(jìn)行恢復(fù),最多只能恢復(fù)到發(fā)出resetlogs時這個時間點(diǎn)上,從而導(dǎo)致以resetlogs選項打開數(shù)據(jù)庫以后,所有的數(shù)據(jù)變化丟失 因此,一旦resetlog打開數(shù)據(jù)庫以后,第一個工作就是全備整個的數(shù)據(jù)庫 到了Oracle10g之后,應(yīng)用日志的算法有了改變,我們能夠做到 利用發(fā)出resetlogs之前做的備份,發(fā)出resetlogs之前的歸檔日志文件,發(fā)出resetlogs之后的歸檔日志、當(dāng)前的聯(lián)機(jī)重做日志文件,將數(shù)據(jù)庫恢復(fù)到發(fā)出resetlogs之后介質(zhì)損壞的那個時間點(diǎn)上,備份,Resetlogs打開數(shù)據(jù)庫,重做記錄不再
34、需要,日志序列號從1開始,10g之前,Oracle 10g之前,對數(shù)據(jù)庫進(jìn)行不完全恢復(fù),需要對數(shù)據(jù)文件的狀態(tài)進(jìn)行查看v$datafile 1、確認(rèn)所有的必要的數(shù)據(jù)文件都是在線的 2、只有使用了normal選項進(jìn)行表空間離線的表空間、或只讀表空間所對應(yīng)的數(shù)據(jù)文件可以不需要在線的 3、如果不完全恢復(fù)期間,數(shù)據(jù)文件是離線的,那么他將不能夠被恢復(fù) 4、如果表空間使用immediate進(jìn)行了離線,同時,在使用resetlogs選項進(jìn)行打開數(shù)據(jù)庫以后,該數(shù)據(jù)文件仍然處于離線狀態(tài),那么該表空間需要被舍棄,并且重新創(chuàng)建,因為該文件需要使用resetlogs以前的日志進(jìn)行介質(zhì)恢復(fù),恢復(fù)后的數(shù)據(jù)文件,使用日志進(jìn)行
35、不完全恢復(fù),日志應(yīng)用到此為止,使用resetlogs打開數(shù)據(jù)庫,這段日志不需要再應(yīng)用了,從日志序列號1開始記錄新的日志,這些日志是有用的,使用resetlogs打開數(shù)據(jù)庫以后,從resetlogs以后的一段重做記錄確認(rèn)不再使用了,打開數(shù)據(jù)庫以后,操作正常進(jìn)行,產(chǎn)生新的日志,對于現(xiàn)在這個數(shù)據(jù)庫來說,新產(chǎn)生的日志是有意義的,從日志序列號1開始,resetlogs以前的日志不能夠應(yīng)用現(xiàn)在的數(shù)據(jù)庫中了,現(xiàn)在的數(shù)據(jù)庫已經(jīng)不認(rèn)識了,因為我們又從1開始了,以前的1已經(jīng)不認(rèn)識了。,使用normal選項使某個數(shù)據(jù)文件離線,離線以前,oracle會發(fā)出文件級別的檢查點(diǎn),從而喚醒DBWn將內(nèi)存中屬于該文件的所有臟數(shù)
36、據(jù)塊寫入數(shù)據(jù)文件,并且控制文件中檢查點(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的時候,控制文件中記錄的SCN和數(shù)據(jù)文件頭部的SCN是一致的,那么說明數(shù)據(jù)文件不需要進(jìn)行介質(zhì)恢復(fù),因此可以直接online,執(zhí)行依次checkpoint,對數(shù)據(jù)文件頭部和控制文件中的SCN和結(jié)束SCN進(jìn)行了更新。,控制文件中記錄的數(shù)據(jù)文件的檢查點(diǎn)信息 數(shù)據(jù)文件頭部的檢查點(diǎn)一定是540159,而數(shù)據(jù)文件offline時的系統(tǒng)
37、檢查點(diǎn)分別是540282和540285,下一次數(shù)據(jù)文件online的時候,需要執(zhí)行介質(zhì)恢復(fù)。,備份數(shù)據(jù)文件,數(shù)據(jù)文件immediate offline,Resetlogs打開數(shù)據(jù)庫的點(diǎn),文件在這個點(diǎn)online,重做記錄一直到這個點(diǎn),請問這個點(diǎn)的數(shù)據(jù)文件能夠online嗎?,對新添加的數(shù)據(jù)文件進(jìn)行了備份。 對temp表空間沒有進(jìn)行備份。,默認(rèn)的永久表空間不能刪除。,正在操作中,DBA做了一個錯誤的操作,將表空間刪除了。我們需要將數(shù)據(jù)恢復(fù)到出問題的那個時刻。 需要進(jìn)行不完全恢復(fù)。,表空間被刪除以后,繼續(xù)進(jìn)行正常操作,產(chǎn)生了一些數(shù)據(jù)。,通過查看備份,我們確認(rèn)所有數(shù)據(jù)文件都有備份,不是同一個時刻,而
38、且temp沒有備份,所有歸檔還都在。,通過日志,發(fā)現(xiàn)12:29:40發(fā)生了誤刪除,我們恢復(fù)到提前一秒鐘,備份當(dāng)前所有的數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件,恢復(fù)所有的數(shù)據(jù)文件 這些數(shù)據(jù)文件都不是同一個時刻備份的。但都是出事前備份的。,發(fā)現(xiàn)已經(jīng)沒有6號文件了。,發(fā)現(xiàn)6號數(shù)據(jù)文件還是沒有回來。,6號數(shù)據(jù)文件回來了。,發(fā)現(xiàn)6號數(shù)據(jù)文件的名字不對。,對文件名字進(jìn)行修改。,數(shù)據(jù)文件需要校正。,數(shù)據(jù)回來了,但是因為是不完全恢復(fù),還是丟失了部分?jǐn)?shù)據(jù)。,基于SCN的恢復(fù)和基于時間的恢復(fù)一樣,只不過基于SCN的恢復(fù)更加精確。 前提都是 1、控制文件沒有損壞、聯(lián)機(jī)文件沒有損壞、歸檔日志文件沒有損壞 我們有意識的將
39、數(shù)據(jù)庫恢復(fù)到過去的某個點(diǎn),例如為了恢復(fù)誤刪除 對于聯(lián)機(jī)重做日志文件和歸檔日志文件的丟失,我們通常使用基于cancel的不完全恢復(fù),下面的實驗就是刪除聯(lián)機(jī)重做日志文件后的恢復(fù),2號日志文件組為當(dāng)前的聯(lián)機(jī)重做日志文件組,將它刪除,數(shù)據(jù)庫在進(jìn)行正常的操作,Current日志文件組被刪除。,關(guān)閉數(shù)據(jù)庫,備份所有的數(shù)據(jù)文件、聯(lián)機(jī)重做日志文件、控制文件,還原所有的數(shù)據(jù)文件,這些數(shù)據(jù)文件是在不同的時期備份的,啟動到mount狀態(tài),打開控制文件。,當(dāng)恢復(fù)到SCN564007的時候,系統(tǒng)報錯,而這個文件正是我們刪除的聯(lián)機(jī)重做日志文件。,使用auto,再次執(zhí)行,輸入cancel,打開數(shù)據(jù)庫。,SCN564007以
40、后的所有的數(shù)據(jù)庫的改變都會丟失。 因此丟失聯(lián)機(jī)重做日志文件是一件很可怕的事情。 特別是丟失當(dāng)前正在使用的聯(lián)機(jī)日志文件組。,聯(lián)機(jī)日志文件自動回來了。但是丟失了數(shù)據(jù)。,丟失所有控制文件時的恢復(fù),可以使用兩種方法 1、使用以前備份的控制文件 2、創(chuàng)建新的控制文件 使用以前備份的控制文件 1、創(chuàng)建表t21、t22,以便使用備份的控制文件進(jìn)行完全恢復(fù)以后仍然存在,刪除所有控制文件。,關(guān)閉數(shù)據(jù)庫,備份整個數(shù)據(jù)庫,將備份的控制文件恢復(fù)到相應(yīng)位置,不要恢復(fù)數(shù)據(jù)文件,提示找不到控制文件,修改pfile,在dbs目錄下面,注意名字和創(chuàng)建日期。,發(fā)現(xiàn)控制文件中的SCN比數(shù)據(jù)文件頭部的SCN要舊。,系統(tǒng)使用完了歸檔日志文件,要使用聯(lián)機(jī)重做日志文件,因為使用的是以前的控制文件,因此無法知道
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- wifi覆蓋工程合同范本
- 充電樁充電合同范本
- 化肥 購銷合同范本
- 公司增資合同范例
- 勞動薪酬合同范本
- 出售新地磅合同范本
- 勞務(wù)派遣簡短合同范本
- 公司代理財務(wù)記賬合同范本
- 生活用水水箱清洗施工方案
- 農(nóng)村礦山出租合同范本
- 2025年01月2025廣東深圳市何香凝美術(shù)館公開招聘應(yīng)屆高校畢業(yè)生2人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 園林聘用勞動合同
- 300畝文冠果樹栽培基地建設(shè)項目可行性研究報告
- 2025年菏澤職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江西生物科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年山東力明科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 六年級下冊音樂全冊教案湖南文藝出版社湘教版
- Tracepro-實例學(xué)習(xí)教程
- 進(jìn)貨單出貨單(Excel表格模板)
- 中 國 作 家 協(xié) 會 入 會 申 請 表
- (完整版)最新人教版小學(xué)三年級美術(shù)下冊全冊教案(最新整理)
評論
0/150
提交評論