⊙ 平均故障間隔時間(MTBF)
怎麼樣延長MTBF:将重要的檔案分布在不同的卷組、不同的檔案系統、不同的RAID裝置上等設定硬體級、作業系統級備援以提高高可用性,可以對線上日志檔案檔案、控制檔案實作檔案鏡像分布到不同磁盤控制器下的不同磁盤上,以實作資料庫級的備援,實作高可用性,減少故障和DOWN機的頻率,避免MTBF過短。 ⊙ 平均恢複時間(MTTR) |
怎麼樣縮短MTTR: ◎ 通過将歸檔日志設定慢速媒體和快速媒體的方法進行多重歸檔,以實作“快速媒體”上快速媒體恢複。 | ◎ 通過設定備份的頻率及RMAN的增量和差量備份方式,減少恢複時間。 | ◎ 通過設定快速檢查點及并行恢複來提高崩潰恢複的平均恢複時間 | |
常見故障的類型
⊙ 語句故障 語句故障的類型包括: | ⊙ 應用程式中出現邏輯錯誤。 | ⊙ 使用者試圖向表中輸入無效資料,可能破壞完整性限制。 | ⊙ 使用者權限不足卻試圖執行某個操作,例如隻有SELECT 權限卻在表中執行插入操作。 | ⊙ 使用者試圖建立表,但超出了配置設定給該使用者的限額限制。 | ⊙ 使用者試圖對表執行INSERT 或UPDATE 操作,導緻配置設定了一個區,但是表空間中的可用空間不足 注:如果遇到語句故障,Oracle 伺服器或作業系統将傳回錯誤代碼和錯誤消息,可以根據錯誤代碼來解決問題 | 出現語句故障後,DBA 進行幹預的程度各不相同,這取決于故障的類型,可能包括以下内容: | ⊙ 修複應用程式以使邏輯流正确無誤。 ⊙ 修改并重新發出SQL 語句。 ⊙ 為使用者提供成功完成該語句所必需的資料庫權限。 ⊙ 發出ALTER USER 指令以更改限額限制。 | ⊙ 向表空間中添加檔案空間。 | 怎麼樣來解決使用者程序的故障呢? | ⊙ DBA 很少需要執行操作來解決使用者程序錯誤。該使用者程序不能繼續工作,盡管Oracle 伺服器和其它使用者程序會繼續正常運作。 | ⊙ PMON 背景程序出現異常終止的使用者程序後,PMON 背景程序通常足以清理該使用者程序。 | ⊙ PMON 程序檢測到異常終止的伺服器程序時,它将回退該異常終止程序的事務處理,并釋放它所獲得的任何資源和鎖 | ⊙使用者程序故障 ⊙ 使用者錯誤 使用者錯誤的常見類型 ⊙ 使用者意外地删除或TRUNCATE表。 ⊙ 使用者删除表中的所有行。 ⊙ 使用者送出了資料,但在其中發現一個錯誤 | ⊙ 執行個體故障 崩潰恢複 前滾---open---復原 那在打開資料庫時,然後來保證資料庫一緻性呢? 在打開的時候會有2次檢查:◎ 第一次檢查資料檔案頭中的Checkpoint cnt是否與對應控制檔案中的Checkpoint cnt一緻.如果相等,進行第二次檢查.◎ 第二次檢查資料檔案頭的開始SCN和對應控制檔案中的結束SCN是否一緻 執行個體恢複(RAC)來實作 | ⊙ 媒體故障(需要DBA進行幹預) 與媒體有關的問題的常見類型: | ⊙ 包含某一資料庫檔案的磁盤驅動器出現磁頭損壞。 | ⊙ 對實作正常資料庫操作所需的檔案進行讀寫操作時存在實體問題。 | ⊙ 檔案被意外删除。 媒體故障解決方法:經過測試的恢複政策是解決媒體故障問題的關鍵要素 恢複政策取決于以下因素: ⊙ 選擇的備份方法以及受到影響的檔案。 | ⊙ 資料庫操作的ARCHIVELOG 模式。 在選擇備份政策時,應考慮以下一些問題: ⊙ 根據對系統可用性的期望,管理層是否權衡了所選備份政策的利弊? | ⊙ 是否有專門的資源來確定成功實施備份和恢複政策? | ⊙ 是否已明确了解進行備份和準備恢複的步驟的重要性? | ⊙ 管理層要考慮成本投入和風險比. | | | ⊙ 網絡故障 |
改動向量
改動向量描述對資料庫中任何單個資料塊所做的一次改動,是以改動向量是資料塊變化的線索。改動向量中的資訊包括版本号、事務操作代碼以及被改動的資料塊的位址。改動向量中的資訊包括版本号、事務操作代碼以及被改動的資料塊的位址。當改動向量應用到資料塊時,該資料塊版本号(目前資料塊被修改次數的計數器)加1。 |
重做記錄 重做記錄是一組改動向量,用于描述對資料庫一個原子改動,也就是這一組改動向量是集體行動的。同一條重做記錄的一組改動向量要麼同時都應用恢複,要麼都不應用。 無論發生何種類型的系統故障,恢複都是按重做記錄為機關來應用的,它保證或者同時運用重做記錄中的全部改動向量,或者不運用其中任何一個改動向量。 | |
檢查點 兩類:增量檢查點和完全檢查點 ⊙ 完全檢查點
當關閉資料庫(異常關閉除外)或通過ALTER SYSTEM CHECKPOINTA 指令手動啟動檢查點操作時,将執行稱為完全檢查點的過程。在完全檢查點操作中,DBWn 将資料庫緩沖區高速緩存中的所有髒緩沖區資料寫入資料檔案。是以完全檢查點,寫入的資料最多。 ⊙ 增量檢查點 |
增量檢查點(跟快速啟動檢查點相關)是持續活動的檢查點,是一種心跳機制,每3秒檢查一次,DBWn 定期從檢查點隊列寫出緩沖區資料,進而不斷推進記憶體中的增量檢查點操作。 |
⊙ 部分檢查點
ALTER TABLESPACE BEGIN BACKUP 指令僅對緩沖區高速緩存中屬于該表空間的髒緩沖區啟動部分檢查點操作。 |
各種RBA
⊙ RBA RBA就是重做日志記錄在重做日志檔案中所對應的位置,相當于資料檔案中的ROWID,通過這個位址來定位重做日志條目,相當于重做日志的位址。 | |
◎ 日志檔案序列号(4位元組) ◎ 日志檔案塊編号(4位元組) ◎ 重做日志記錄在日志塊中的起始偏移位元組數(2位元組) |
◎ LRBA:資料緩存(buffer cache)中一個髒塊 最早一次被更新的時候産生的重做日志記錄在重做日志檔案中所對應的位置就稱為LRBA |
◎ HRBA:資料緩存(buffer cache)中一個髒塊 最近一次被更新的時候産生的重做日志記錄在重做日志檔案中所對應的位置就稱為HRBA ◎ checkpoint RBA:當一個checkpoint事件發生的時候,checkpoint程序會記錄下當時所寫的重做日志記錄的位址,即RBA,此時記錄的RBA被稱為checkpoint RBA。從上一個checkpoint RBA和目前的checkpoint RBA之間的日志所保護的buffer cache中的髒塊接下來将會由DBWR寫入到資料檔案當中去。 | |
◎ target rba:與增量檢查點密切相關。比如檢查點RBA=100,而計算出來的target rba=105,那我們這次增量檢查點要寫的髒資料是100-105的數 據,然後檢查點RBA被更新成105
checkpoint rba target rba <----------------------------------------> 這一部分是要重新整理到資料檔案的, 等重新整理完後,target rba變成了checkpoint rba,并記錄在控制檔案中,作為崩潰恢複的起點 |
◎ On-disk RBA 是指LGWR 已經寫到log file 中最後一個RBA的位址 |
檢視SCN
資料庫檢查點SCN select checkpoint_change# from v$database; 各個資料檔案檢查點SCN select name,checkpoint_change# from v$datafile; 資料檔案啟動SCN select checkpoint_change# from v$datafile_header; 資料檔案結束SCN select name,last_change# from v$datafile; |
select current_scn from v$database; |
或者用dbms_flashback包 select dbms_flashback.get_system_change_number from dual; |