DB2 V9 引入革命性的 RESTORE DATABASE ... REBUILD 功能,允許僅使用表空間級備份映像(無需全庫備份)即可重建整個資料庫,並可選擇性恢復關鍵表空間以達到 RTO 最小化。本文結合實戰場景,詳細演示從異構表空間備份集恢復資料庫的完整三階段操作流程。
資料庫 TEST(歸檔日誌模式)遭遇儲存損壞,手邊資源:
TS1:SYSCATSPACE + USERSPACE1 @ 20060515135047TS2:USERSPACE2 + USERSPACE3 @ 20060516135136TS3:USERSPACE3 @ 20060517135208(最新)傳統 RESTORE 需全備映像,直接用表空間備份還原會報 SQL2560N。
db2 restore db test rebuild with all tablespaces in database taken at 20060517135208
機制:DB2 以指定時間戳的備份為「目標映像」(含資料庫配置、日誌序列、表空間結構),自動掃描歷史記錄,尋找並還原所有缺失表空間的最新可用備份。本例中:
USERSPACE3 由 TS3 (最新) 還原USERSPACE2 由 TS2 還原(TS3 不含此表空間)SYSCATSPACE + USERSPACE1 由 TS1 還原執行後,所有表空間進入 ROLL-FORWARD PENDING 狀態(歷史記錄顯示 WITH RF 標記)。
db2 rollforward db test to end of logs
前提:從最早備份時間點 (20060515135047) 到最新 (20060517135208) 之間的所有日誌檔必須存在於 LOGPATH 或透過 OVERFLOW LOG PATH 指定。DB2 會將不同時點還原的表空間透過日誌重放同步至同一 LSN。
db2 rollforward db test stop
資料庫進入 NORMAL 狀態,業務可即刻接入。
LIST HISTORY 必須完整記錄所有相關備份條目,且備份檔案需位於歷史記錄指示的路徑。REBUILD WITH TABLESPACE (SYSCATSPACE, USERSPACE1) 僅恢復關鍵表空間,非關鍵表空間稍後補齊。db2 "list history all for test"
# 應看到 REBUILD 條目 (Type=R, Obj=D) 及各表空間還原條目 (Type=R, Obj=P),狀態均為 A (Active)
此特性將「表空間備份」從輔助角色提升為「獨立可重建資料庫的基石」,大幅降低大型資料庫的 RTO 與儲存成本,是 DB2 V9 以降高可用架構設計的核心能力之一。