系統崩潰後,DB2 透過交易日誌將資料庫恢復至一致可用狀態。你是否遇過 SQL0946C The transaction log for the database is full 錯誤?理解日誌存在的意義與運作機制,能幫助你從容應對災難恢復。
交易(工作單元)是一或多個 SQL 操作序列,具原子性:全做或全不做。交易開始於首次 SQL 執行或上一交易結束後,結束方式:
autocommit,每條 SQL 獨立成交易COMMIT:永久套用所有變更ROLLBACK:撤銷所有變更,回復交易前狀態COMMIT [WORK]
ROLLBACK [WORK]
未提交變更對其他連線不可見(除非使用 UR 隔離等級),提交後即對所有連線可見。
資料變更流程:
此寫前日誌(Write-Ahead Logging, WAL)機制保證:資料修改落盤前,對應日誌已持久化。

每筆日誌記錄標記交易 ID,單一日誌檔可包含多交易交織記錄。提交/回滾記錄同樣寫入日誌,形成完整邊界。
當未提交交易遇停電/異常終止,或已提交交易資料頁寫入中斷導致資料庫不一致時,執行崩潰恢復:
RESTART DATABASE [DatabaseName]
USER [UserName] [USING [Password]]
[DROP PENDING TABLESPACES (TS_Name, ...)]
[WRITE RESUME]
亦可設定 AUTORESTART=ON,連線時自動觸發。
恢復兩階段:
COMMIT 記錄的交易操作COMMIT 記錄的交易(利用日誌中的前值資訊)因日誌頻繁外部化且修改僅在交易成功終止時落盤,故恢復至一致性狀態能力獲保證。
崩潰恢復僅是日誌功能之一。後續將介紹前滾恢復,示範如何利用日誌將資料庫精確恢復至任意時間點,前置知識包含備份映像與版本恢復概念。