(2010 07 14)Oracle例項恢復詳解

2021-05-23 01:44:36 字數 2096 閱讀 4828

又有一段時間沒接觸oracle了,也就是沒有天天都保證乙個小時以上的oracle學習時間,慚愧,意志力不夠。

感覺oracle的學習真的是乙個比較長期的過程,在其中的學習過程中會經歷沮喪,恐懼,甚至受挫感,我想這就是我這整整一年oracle的學習體會吧。然而oracle的學習也是乙個柳暗花明的過程,在一段堅持不懈的學習過程後會在不經意間發現自己慢慢的進步了,只是自己的這些進步被當初的受挫感而擊敗吧。總之我會堅持oracle+linux的學習的,我不會放棄的。既然堅持了一年了,那就再繼續堅持吧。

好了,溫故而知新,現在開始oracle備份和恢復的專項研究吧,或許我會從oracle的備份與還原學習中又一次體會到oracle的博大精深吧。首先是oracle的例項恢復:

先要明白一些概念:

日誌檔案中的資訊為了當系統出現failure時,保證事務可以恢復。當使用者事務完成發出commit時,總是先等待lgwr程序將事務所需的redo資訊寫到日誌檔案(之前可能在redo buffer中)後,才會收到commit complete資訊。

dbwr程序總是比lgwr程序寫的速度慢(dbwr程序是隨機寫,lgwr程序是順序寫,隨機寫比順序寫要慢)

當dbwr程序要將快取區中的資訊寫入到資料檔案時,會先通知lgwr程序將事務相關的redo資訊寫入到日誌檔案。

scn可以理解為乙個標籤,oracle對資料庫中的每個操作都打上乙個標籤。這個標籤是順序增加的。永遠不會歸0(除非資料庫重建)

checkpoint是oracle為了記錄哪些資料已經被寫入到資料檔案中。

checkpoint的作用就是要保證當checkpoint發生時,這個checkpoint scn之前的資料都要由dbwr寫入到資料檔案中,而在dbwr寫之前,又會觸發lgwr程序將相關的redo資訊寫入到日誌檔案中。這樣,checkpoint完成後,發生instance failure時就不再需要恢復這個checkpoint scn前的資訊.

理解例項恢復的相關資訊:

instance recovery所需要的資訊,就是最近一次checkpoint之後到日誌檔案結尾的這些redo資訊。

因為checkpoint之前的資料都已經一致性地寫入到資料檔案中了,而之後的資料可能有一部分已經寫進資料檔案,而有一部分沒有寫進資料檔案。

instance recovery所需要的時間,將資料檔案 從最近一次checkpoint開始,恢復到控制檔案中記錄的這個資料檔案的最後乙個scn值為止,應用這兩者之間redo資訊的時間就是instance recovery所要花費的時間。

例項恢復的調整:

由上面的資訊可以總結出,例項恢復最關鍵的問題的就是最近一次checkpoint發生的時間,以及checkpoint發生的頻率。只有確認了最近一次checkpoin發生的時間點,才能確定恢復所需的redo資訊,以及恢復所要花費的時間。

對於instance recovery花費時間的調優,就是對引數fast_start_mttr_targe的調整,單位「秒」,最大值為3600秒。

也就是說fast_start_mttr_target這個引數的設定會直接影響到checkpoint發生的頻率。

fast_start_mttr_targe所設定的時間就是使用者希望資料庫用在instance recovery的時間。也就是從應用最近一次checkpoint到日誌資訊最後這兩個點之間redo資訊所要花費的時間。

mttr設定的時間過小的話,會造成系統checkpoint過於頻繁,而發生checkpoint時就要dbwr,lgwr等程序寫資料檔案,產生物理io,久而久之,資料庫效能會越來越慢;

mttr設定的時間過大的話,當例項失敗時,instance recover所花費的時間就會過長。

從10g開始,資料庫可以實現自動調整,如果fast_start_mttr_target=0時,可以從alert裡面看到如下資訊:

mttr advisory is disabled because fast_start_mttr_target is not set

此時,資料庫會根據負載自動調整checkpoint發生的頻率。

如果要嚴格要求instance recovery時間的話,就設定fast_start_mttr_target引數,如果不是那麼嚴格的話,建議用10g的自動調整。

Oracle實訓筆記1

1 desc 列出表定義,列出pl sql語句定義。2 disc 斷開連線。conn scott tiger orcl 連線 3 passw 更改密碼 4 nvl 函式的使用,處理null。sal nvl comm,0 即當comm為null時,將它看成0,當不是null時,將其忽略。5 如果列別名...

SELCET TOP n在Oracle中的實現

聽說sql server和mysql中有top關鍵字,可以返回排序記錄的前n條記錄,如select top 10 from table name order by col name,我想oracle也必定有類似的功能,只是oracle沒有top關鍵字,而是使用rownum關鍵字。to retriev...

Oracle實操四之DML(二)

操作符 1.算術運算 只有加減乘除運算子,出號 結構是浮點數,求餘運算函式 mod x,y 2.關係運算和邏輯運算 3.字串連線操作符 注意 oracle 中字串可以用單引號,也可以用雙引號,在別名中存在空格時,必須用雙 引號。在表名 列名時用雙引號。高階查詢 1.消除重複行 中結果中,可能出現若干...