第15 章 物理日誌記錄、檢查點和快速恢復; 第16 章 管理物理日誌

liahtobjtosh發表於2009-10-27
第15 章 物理日誌記錄、檢查點和快速恢復
第16 章 管理物理日誌[@more@]

一、更改物理日誌位置和大小

因為給物理日誌分配的空間必須是連續的,所以在將物理日誌移動至沒有足夠連續空間的資料庫空間或者將日誌大小增大到超過可用的連續空間,則會產生錯誤。
可以使用 oncheck -ce 檢視每個 dbspace 的 chunk 以及每個 chunk 的大小和使用情況。

1.1 使用文字編輯器來更改物理日誌位置或大小
可以在資料庫伺服器處於聯機方式時,透過編輯 ONCONFIG 檔案來更改物理日誌位置和大小。
PHYSFILE :指定物理日誌檔案的大小(以千位元組計)
PHYSDBS:將物理日誌移動至指定的資料庫空間
直至您關閉並重新啟動資料庫伺服器後,更改才會生效。然後立即建立 0 級備份以確保所有恢復機制可用。

1.2 使用 onparams 更改物理日誌位置和大小
要更改物理日誌的大小和位置,請在將資料庫伺服器轉為靜默或單使用者方式後執行以下命令:
onparams -p -s size -d dbspace -y

size :是物理日誌的新大小(以千位元組計)
dbspace:指定物理日誌要駐留的資料庫空間

以下示例更改物理日誌的大小和位置。新的物理日誌大小為 400 千位元組,且日誌將駐留在 dbspace6 資料庫空間中。如下所示,該命令還用 -y 選項重新初始化共享記憶體,以使更改可立即生效:
onparams -p -s 400 -d dbspace6 -y
在關閉並重新啟動資料庫伺服器之後,建立 0 級備份以確保所有恢復機制可用。


二、監控物理和邏輯日誌記錄活動
2.1 onstat -l
第一行顯示每個物理日誌緩衝區的資訊
其中:
numwrits:從緩衝區到磁碟的寫入次數
pages/IO:向緩衝區寫入的頁數與向磁碟寫入的次數之比率

第二行顯示每個邏輯日誌緩衝區的資訊

2.2 監控檢查點資訊
onstat -m
檢視訊息日誌中的最近 20 行。 如果檢查點訊息未出現在最近 20 行中,則直接用文字編輯器讀取訊息日誌。資料庫伺服器在檢查點結束時將個別檢查點訊息寫入日誌。如果發生了檢查點,但資料庫伺服器沒有頁可寫入磁碟,則資料庫伺服器不會將任何訊息寫入訊息日誌。
onstat -p
numckpts:自資料庫伺服器聯機以來發生的檢查點數。
ckptwaits:使用者執行緒等待檢查點完成的次數。

三、檢查點
“檢查點”定義:磁碟上的頁與共享記憶體緩衝池中的頁同步時的時間點。
檢查點發生的時機:
1. 在物理日誌達到總體的75%時觸發
2. 由 CKPTINTVL 配置引數指定的檢查點的時間間隔
3. 由 RTO_SERVER_RESTART 配置引數指定的快速恢復所需要的時間。
當配置了 RTO_SERVER_RESTART 時,系統忽略 CKPTINTVL 。系統監視物理和邏輯日誌使用情況,以估計快速恢復的持續時間。如果系統估計快速恢復所需要的時間超過 RTO_SERVER_RESTART 所指定的時間,那麼伺服器將自動觸發檢查點。所以 RTO_SERVER_RESTART 是目標時間量,不能是保證的時間量。

在檢查點資料庫伺服器所執行的操作:
()
1. 資料庫伺服器阻止使用者執行緒進入臨界段。
2. 將邏輯日誌緩衝區清倉到磁碟上當前邏輯日誌檔案。 (先邏輯日誌)
3. 資料庫伺服器將物理日誌緩衝區清倉到物理日誌。 (再物理日誌)
4. 將所有已修改的頁清倉到磁碟。 (最後是資料)
5. 資料庫伺服器將檢查點記錄寫入邏輯日誌緩衝區。
6. 邏輯清空物理日誌。(可以覆蓋當前條目)。

四、快速恢復
“快速恢復”定義:當資料庫服務在非正常情況下被關閉後在重新啟動時將其恢復為一致狀態的一個自動過程。快速恢復的過程:
()
1. 使用物理日誌中的資料將所有磁碟頁返回至它們在最近檢查點之時的狀態。
物理日誌的每個前映象包含在檢查點之後所對應的更新頁的地址,所以系統可以將物理日誌中的每個前映象頁寫到共享記憶體並又寫回到磁碟

2. 在邏輯日誌檔案中查詢最新的檢查點記錄。
資料庫伺服器在邏輯日誌中定位最近檢查點記錄的地址

3. 前滾所有在最近檢查點記錄之後寫入的邏輯日誌記錄。 (前滾是對已提交的事務而言)
這樣便可以再現自最近檢查點時刻以來直到發生非正常關機之時對資料庫的所有更改

4. 回滾那些在邏輯日誌中沒有相關聯的 COMMIT 或 BEGCOM 記錄的事務。
(資料庫伺服器在事務提交時寫 BEGCOM 記錄。)

五、物理日誌
“物理日誌”定義:它是磁碟頁的集合,在此儲存將要更改頁(還未修改時)的映象。
在下一檢查點之前有多次修改的情況下,僅在物理日誌中記錄第一個前映象。資料庫伺服器將前映像儲存在物理日誌中,直至下一檢查點。


六、物理日誌記錄
“物理日誌記錄”定義:把將要更改頁的映象儲存到物理日誌的過程。
資料庫伺服器修改共享記憶體緩衝池中的某些頁之前,它將頁的前映象儲存在共享記憶體中的物理日誌緩衝區。在該被修改的頁從共享記憶體的頁緩衝區重新整理到磁碟上之前,該頁的“前映象”首先被重新整理到磁碟上物理日誌中。
該過程有以下6步驟:
()
1.將資料頁從磁碟讀到共享記憶體中的頁緩衝區中(如果資料頁已不在共享記憶體頁緩衝區)。

2.將未更改的頁複製到物理日誌緩衝區。
對儲存在物理日誌緩衝區中的已修改頁的前映象,最終會將其從物理日誌緩衝區重新整理到磁碟上的物理日誌。

3.在應用程式修改資料後在頁緩衝區中反映該更改。

4.將物理日誌緩衝區清倉到磁碟上的物理日誌。
資料庫伺服器在清倉資料緩衝區之前清倉物理日誌緩衝區(這時候並沒有清空物理日誌,只是清空了物理日誌緩衝區)

5.清倉頁緩衝區並將其寫回到磁碟上。
在清倉物理日誌緩衝區後,將共享記憶體頁緩衝區清倉到磁碟,並將資料寫入磁碟

6.當出現檢查點時,將物理日誌緩衝區清倉到磁碟上的物理日誌,並清空物理日誌。
資料庫伺服器將物理日誌作為迴圈檔案來管理,不斷覆蓋不需要的資料。檢查點過程透過在標記下一組所需前映像開始的物理日誌中復位指標來清空物理日誌。
可見當在檢查點結束時,物理日誌被清空。
物理日誌在清倉頁緩衝區的過程中逐漸被填上發生修改的“前映象”。當再一次檢查點操作發生以後的瞬間,這時Online中的資料在物理上是一致的,而此時也就再不需要原來的Online物理日誌中的“前映象”了。(如果某一個正在執行的事務需要執行回滾操作,則執行回滾所需的資訊都已包含在邏輯日誌檔案中了。)在檢查點操作完成時,Online將邏輯上清空邏輯日誌,Online僅僅重置物理日誌中的指標,標明下一組“前映象”所儲存的起始位置。Online 迴圈使用物理日誌,不斷地覆蓋那些已過時的資料。檢查點操作是唯一可以清空物理日誌的機制。
http://blog.chinaunix.net/u1/36468/showart_435759.html

注:“緩衝區清倉”是指清倉“緩衝池”、“物理日誌緩衝區 ”以及“邏輯日誌緩衝區”
(見:)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22565551/viewspace-1028206/,如需轉載,請註明出處,否則將追究法律責任。

相關文章