帶您了解Oracle恢復(fù)結(jié)構(gòu)
Oracle恢復(fù)結(jié)構(gòu)是我們都需要掌握的基礎(chǔ)知識(shí),下面就為您詳細(xì)介紹Oracle恢復(fù)結(jié)構(gòu)的組成,希望對(duì)您能夠有所啟迪。
當(dāng)客戶應(yīng)用或工具程序通過網(wǎng)絡(luò)訪問Oracle服務(wù)器時(shí),客戶端會(huì)為應(yīng)用程序分配用戶進(jìn)程,而服務(wù)器端會(huì)為其為配服務(wù)器進(jìn)程,并且客戶應(yīng)用的所有SQL操作最終都由服務(wù)器進(jìn)程來執(zhí)行的。
Oracle服務(wù)器由例程和數(shù)據(jù)數(shù)據(jù)庫兩部分組成。為了使客戶應(yīng)用程序能夠訪問Oracle服務(wù)器,必須啟動(dòng)例程并打開數(shù)據(jù)庫。如果沒有啟動(dòng)例程,那么會(huì)顯示錯(cuò)誤信息ORA-01034:Oracle not available;如果沒有打開數(shù)據(jù)庫,則會(huì)顯示錯(cuò)誤ORA-01033:Oracle initization or shutdown in progress.
例程,例程是一組內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程的集合,內(nèi)存結(jié)構(gòu)主要包括數(shù)據(jù)高速緩存、重做日志緩沖區(qū)、以及共享池,并且這些內(nèi)存結(jié)構(gòu)合稱為SGA(Sytem Global Area,系統(tǒng)全局區(qū));后臺(tái)進(jìn)程主要包括SMON、PMON、DBWR、CKPT、LGWR等。當(dāng)客戶端應(yīng)用訪問Oracle服務(wù)器時(shí),必須要確保數(shù)據(jù)庫已經(jīng)被打開,通過查詢動(dòng)態(tài)性能視圖V$INSTANCE,可以確定當(dāng)前例程的信息(包括例程名、例程所在主機(jī)機(jī)名、例程狀態(tài)等).
數(shù)據(jù)庫。數(shù)據(jù)庫是一組OS(Operate System)文件的集合,它由數(shù)據(jù)文件、控制文件和重做日志文件三種文件組成。當(dāng)在數(shù)據(jù)庫上執(zhí)行備份與恢復(fù)操作之前,需要制定備份與恢復(fù)策略,日志操作模式不同,需要采用的備份與恢復(fù)策略也不同。通過查詢動(dòng)態(tài)性能視圖V$DATABASE,可以確定當(dāng)前數(shù)據(jù)庫的信息(包括數(shù)據(jù)庫名、日志操作模式、當(dāng)前SCN值)。
數(shù)據(jù)庫是由數(shù)據(jù)文件、控制文件和重做日志文件三種文件組成。當(dāng)管理Oracle數(shù)據(jù)庫時(shí),不僅需要管理數(shù)據(jù)文件、控制文件和重做日志,而且經(jīng)常需要用到其他OS文件(歸檔文件、參數(shù)文件等)。
數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)庫數(shù)據(jù)、包括系統(tǒng)數(shù)據(jù)(數(shù)據(jù)字典)、用戶數(shù)據(jù)(表、索引、簇)、UNDO數(shù)據(jù)等。當(dāng)建立數(shù)據(jù)庫或表空間時(shí),數(shù)據(jù)文件是通過DATAFILE選項(xiàng)指定的。數(shù)據(jù)庫邏輯上由一個(gè)和多個(gè)表空間(TABLESPACE)組成,而表空間物理上則由一個(gè)和多個(gè)數(shù)據(jù)文件組成。
表空間。表空間是數(shù)據(jù)庫邏輯組成部分,表空間不同,需要采用的備份與恢復(fù)策略也有所不同。例如SYSTEM表空間必須在MOUNT狀態(tài)恢復(fù),數(shù)據(jù)表空間可以在OPEN狀態(tài)下恢復(fù),而臨時(shí)表空間不需要恢復(fù)。通過查詢數(shù)據(jù)字典DBA_TABLESPACES,可以顯示表空間詳細(xì)信息。
數(shù)據(jù)文件,表空間由一個(gè)或多個(gè)數(shù)據(jù)文件組成,表空間尺寸實(shí)際是其所包含的所有數(shù)據(jù)文件尺寸之和,通過查詢數(shù)據(jù)字典DBA_DATA_FILES,可以顯示表空間和數(shù)據(jù)文件的對(duì)應(yīng)關(guān)系。
當(dāng)執(zhí)行備份與恢復(fù)操作時(shí),經(jīng)常需要提供數(shù)據(jù)文件的動(dòng)態(tài)信息,為了數(shù)據(jù)文件的動(dòng)態(tài)信息,可以查詢動(dòng)態(tài)性能視圖V$DATAFILE和V$DATAFILE_HEADER,其中V$DATAFILE的動(dòng)態(tài)信息來自于控制文件,而V$DATAFILE_HEADER的動(dòng)態(tài)信息來自于數(shù)據(jù)文件頭部。在數(shù)據(jù)庫正常情況下,這兩個(gè)動(dòng)態(tài)性能視圖的檢查點(diǎn)SCN值完全一致;但如果數(shù)據(jù)文件出現(xiàn)損壞,并且轉(zhuǎn)儲(chǔ)了數(shù)據(jù)文件備份,那么V$DATAFILE_HEADER可以確定應(yīng)用重做的起始SCN值,而V$DATAFILE可以確定應(yīng)用重做的結(jié)束SCN值。
日志組,在單實(shí)例環(huán)境中,只有一個(gè)重做線程;在RAC(Real Appplication Cluster)環(huán)境中,包括多個(gè)重做線程,每個(gè)重做線程至少包括兩個(gè)日志組,通過查詢動(dòng)態(tài)性能視圖V$LOG,可以顯示重做線程的所有日志組信息,包括日志組編號(hào)、日志成員個(gè)數(shù)、日志組狀態(tài)、尺寸、日志序列號(hào)。
控制文件用于記錄和維護(hù)數(shù)據(jù)庫的物理結(jié)構(gòu),并且每個(gè)Oracle數(shù)據(jù)庫至少要包含一個(gè)控制文件,當(dāng)使用Oracle Server時(shí),一個(gè)例程只能訪問一個(gè)數(shù)據(jù)庫,Oracle正是通過控制文件在例程和數(shù)據(jù)庫之間建立關(guān)聯(lián)的。當(dāng)裝載數(shù)據(jù)庫時(shí),Oracle會(huì)根據(jù)初始化參數(shù)control_file來定控制文件;當(dāng)打開數(shù)據(jù)庫時(shí),Oracle會(huì)依據(jù)控制文件所記載的信息打開所有數(shù)據(jù)文件和重做日志,通過查詢V$CONTROLFILE,可以顯示當(dāng)前數(shù)據(jù)庫的所有控制文件。
歸檔日志是非活動(dòng)重做日志,通過使用歸檔日志,可以保留所有重做歷史記錄,當(dāng)數(shù)據(jù)庫出現(xiàn)介質(zhì)失敗時(shí),使用數(shù)據(jù)文件副本和重做歷史記錄可以完全恢復(fù)數(shù)據(jù)庫。只有數(shù)據(jù)庫在歸檔模式下才會(huì)生成歸檔日志,并且當(dāng)進(jìn)行日志切換時(shí),Oracle會(huì)自動(dòng)生成歸檔日志。
【編輯推薦】