大多數資料庫僅存最新狀態,無法追溯歷史變更。當需重建歷史資料 (如稽核、糾紛、法遵) 時,面臨極大挑戰。三種可行路徑:
1. 第三方稽核工具 (最完整、效能影響最小)
- Lumigent AuditDB / Idera SQL Compliance Manager
- 基於記錄檔讀取,捕獲每筆 DML/DDL 變更、前後值、用戶、時間。
- 選擇性稽核重要資料表,最小化儲存與效能負擔。
- 可重建任意時間點資料視圖。
2. 觸發器 / 應用程式修改 (自建、效能風險高)
- 在關鍵表建立
INSERT/UPDATE/DELETE 觸發器寫入歷史表。
- 或修改應用程式每次異動同步寫入歷史表。
- 缺點:高併發下觸發器嚴重拖慢寫入;儲存空間暴增;維護複雜。
3. 備份與還原重建 (成本高、時間點粗糙)
- 依賴長期保留的完整/差異/記錄檔備份。
- 逐個還原至目標時間點,匯出所需資料。
- 風險:備份遺失/損壞、磁帶不可讀、還原耗時極長、儲存空間不足 (歷史備份佔用大)。
- 案例:月備份僅能建立月快照,日內變更無法重建;9 GB 資料庫在 9 GB 磁碟時代反覆還原極痛苦。
現代替代方案 (SQL 2008+)
- Change Data Capture (CDC):非侵入式異動擷取,自動建立變更表。
- Temporal Tables (SQL 2016+):系統版本化資料表,自動保留歷史版本,
FOR SYSTEM_TIME AS OF 查詢任意時間點。
- Change Tracking:輕量級同步追蹤,僅記錄主鍵變更。
DBA 責任
評估業務對歷史資料需求 (哪些表、保留多久、查詢頻率),選擇適當方案並納入架構設計。**保護資料完整性、確保可追溯性是 DBA 核心價值。**