第13章 邏輯日誌

liahtobjtosh發表於2009-10-18
第13章 邏輯日誌[@more@]

一、什麼是邏輯日誌
在《第11章 日誌記錄》中已經簡單談過邏輯日誌記錄,在這一篇將詳細說明邏輯日誌。
為了保留自上次儲存空間備份以來的事務和資料庫伺服器更改的歷史記錄,資料庫伺服器生成日誌記錄。資料庫伺服器將日誌記錄儲存在邏輯日誌中,這是由三個或更多邏輯日誌檔案組成的迴圈檔案。將該日誌稱為邏輯的是因為日誌記錄代表資料庫伺服器的邏輯操作(而不是物理操作)。儲存空間備份加上邏輯日誌備份的組合在任何時候均包含資料庫伺服器資料的完整副本。

資料庫伺服器將“邏輯日誌記錄”儲存在“邏輯日誌”中。邏輯日誌由邏輯日誌檔案組成,資料庫伺服器在磁碟上管理它們,直至這些檔案已安全地轉為離線(備份)。所有“邏輯日誌記錄”在資料庫伺服器將其寫入磁碟上的“邏輯日誌”之前,均經過“共享記憶體”中的“邏輯日誌緩衝區”。即使對於“未緩衝的事務日誌記錄”形式的資料庫。所以可見“邏輯日誌記錄”的生存週期至少經過“共享記憶體”中的“邏輯日誌緩衝區”以及磁碟上的“邏輯日誌”兩個階段。

二、邏輯日誌檔案的位置
從上可知“邏輯日誌”是由3個以上的“邏輯日誌檔案”組成的迴圈檔案。在資料庫伺服器初始化磁碟空間時,邏輯日誌檔案和物理日誌放在根資料庫空間中,但可將邏輯日誌檔案從根資料庫空間移出至未被活動表或物理日誌共享的 dbspace 中(建議為邏輯日誌檔案建立單獨的 dbspace )。當把邏輯日誌檔案備份到介質並釋放邏輯日誌檔案後,邏輯日誌檔案從資料庫空間轉移到物理介質上。

三、
使用 onstat -l 可以看到 number(邏輯日誌檔案號)、flags(邏輯日誌檔案的狀態標誌)、uniqid(邏輯日誌檔案的唯一標識號)、size(邏輯日誌檔案大小)、used(邏輯日誌檔案的已經使用的大小)以及%used(邏輯日誌檔案使用的百分比)
3.1 flags
flags 第一位置均具有以下狀態標誌之一:已新增(A)、已刪除(D)、可用(F)或已使用(U)。可能的日誌狀態組合:

狀態標誌 邏輯日誌檔案的狀態
A------ 日誌檔案已新增且可用,但尚未使用。
D------ 如果您刪除具有狀態 U-B 的日誌檔案,則它會標記為已刪除。該日誌檔案被刪除,其空間得以釋放,可在您為所有儲存空間進行 0 級備份時重新使用。
F------ 日誌檔案是空閒的且可供使用。 邏輯日誌檔案在備份後得以釋放,邏輯日誌檔案中的所有事務均關閉,儲存在該檔案中的最舊更新會清倉到磁碟。
U 日誌檔案已使用但尚未備份。
U-B---- 日誌檔案已備份但仍是恢復所需。(當恢復不再需要該日誌檔案時就釋放它。)
U-B---L 日誌已備份但仍是恢復所需。包含最近檢查點記錄。
U---C 資料庫伺服器當前正在填充日誌檔案。
U---C-L 當前日誌檔案包含最近檢查點記錄。

3.2 number
每個邏輯日誌檔案所佔分配的實際磁碟空間的標識號稱之為“邏輯日誌檔案號:number”,所以“邏輯日誌檔案號”的固定不變的。例如:如果配置 6 個邏輯日誌檔案,則這些檔案具有從 1 到 6 的日誌號。邏輯日誌號可以不按順序。在備份並釋放邏輯日誌檔案時,資料庫伺服器將磁碟空間重新用於邏輯日誌檔案。

3.3 uniqid
每個邏輯日誌檔案(不管是否備份到介質)都有唯一的標識號,稱之為“唯一標識號:unique”。初始化資料庫伺服器磁碟空間後所填充的第一個邏輯日誌檔案的uniqid為 1 。在當前邏輯日誌檔案已滿時,資料庫伺服器按照邏輯日誌檔案的順序切換到下一個邏輯日誌檔案併為新日誌檔案將唯一標識號增加 1。因此 unique 會一直增加,但新新增的或標記為刪除的日誌檔案的唯一標識號為 0,在第一次使用該邏輯日誌檔案時,它的 unique 為 0,但下一次再使用這個邏輯日誌檔案時就上最大的 unique + 1 了。

因為邏輯日誌檔案的使用是嚴格按照邏輯日誌檔案的順序進行的,如果資料庫伺服器嘗試切換到下一個邏輯日誌檔案但發現順次的下一個日誌檔案仍在使用中,則資料庫伺服器立即暫掛所有處理。即使其它邏輯日誌檔案是可用的,資料庫伺服器也無法跳過使用中的檔案而寫入非順次的可用檔案。處理將停止,以保護邏輯日誌檔案中的資料。
所以,當
3.3.1 檔案包含尚未清倉到磁碟的最近檢查點或最舊更新。
則發出 onmode -c 命令以執行完全檢查點並釋放邏輯日誌檔案。

3.3.2 檔案包含開啟的事務。
當下一個邏輯日誌檔案包含開啟的事務,資料庫伺服器在當前日誌檔案後自動分配日誌檔案。這種操作稱為“動態日誌分配”(見或P13-5)。

3.3.3 檔案未備份。
如果邏輯日誌檔案未備份,則當您使用 ON–Bar 或 ontape 來備份邏輯日誌檔案時,處理會恢復進行。

3.4 size
邏輯日誌檔案最小為 200KB,最大為 1048576 頁。如果設定了連續日誌備份,則邏輯日誌檔案在填滿時會自動備份。在併發較的系統中,應該使用較大的日誌檔案。
邏輯日誌檔案檔案填滿時,必須對其備份。

3.5 邏輯日誌檔案的個數
介於3到32767之間。


四、資料庫空間日誌記錄過程:

資料庫伺服器對涉及資料庫空間中所儲存資料的操作使用以下日誌記錄過程:

1.將資料頁從磁碟讀到共享記憶體頁緩衝區
2.將未更改的頁複製到物理日誌緩衝區(如有需要)
3.將新資料寫入頁緩衝區並建立該事務的邏輯日誌記錄(如有需要)
4.將物理日誌緩衝區清倉到磁碟上的物理日誌
5.將邏輯日誌緩衝區清倉到磁碟上的邏輯日誌檔案
6.清倉頁緩衝區並將其寫回到磁碟上

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

相關文章