第一部分:備份與還原核心原理
一、備份還原本質解析
-
數據存儲機制
- 數據存儲在物理文件頁中(最小單位4K-32K)
- 有效數據頁 = 文件描述頁 + 已分配使用頁
- 日志優先原則:操作先寫REDO日志再更新數據文件
-
三大核心操作
操作 作用 關鍵特性 備份 復制有效頁到備份集 需捕獲備份期間的歸檔日志 還原 備份集→數據文件 僅恢復物理結構 恢復 重做日志到時間點 保證事務一致性 -
容災價值
- 數據故障時恢復至故障前狀態
- 支持時間點恢復(PITR)滿足RPO要求
二、備份方式選擇矩陣
類型 | 操作狀態 | 歸檔要求 | 適用場景 | 恢復速度 |
---|---|---|---|---|
熱備 | 數據庫運行 | 需開啟歸檔 | 7×24業務 | ★★★★☆ |
冷備 | 數據庫關閉 | 無需歸檔 | 維護窗口期 | ★★★☆☆ |
增量 | 任意狀態 | 熱備需歸檔 | 生產環境日常 | ★★★★★ |
決策樹:
業務連續性要求高 → 熱備
數據量>1TB → 增量備份
法規要求離線副本 → 冷備
第二部分:全量備份實操手冊
一、熱備全流程(聯機備份)
前提條件:
- 開啟本地歸檔(兩種配置方式)
方法1:SQL命令配置歸檔
# 啟動服務
./DmAPService start # 啟DMAP服務
./DmService start # 啟數據庫服務# 配置歸檔
./disql SYSDBA/Dameng123@localhost:5236 <<EOF
alter database mount;
alter database add archivelog 'dest=/dm8/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400';
alter database archivelog;
alter database open;
EOF# 執行全備
./disql -s "backup database full backupset '/dm8/full_$(date +%Y%m%d)'"
方法2:配置文件配置歸檔
# 配置歸檔文件
cat > /dm8/data/DAMENG/dmarch.ini <<CONF
[ARCHIVE_LOCAL1]
ARCH_TYPE = local
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
CONF# 啟用歸檔
sed -i 's/ARCH_INI.*/ARCH_INI = 1/' /dm8/data/DAMENG/dm.ini# 重啟生效
./DmService restart# 執行備份
./dmrman <<CMD
backup database full backupset '/dm8/full_$(date +%Y%m%d)';
exit
CMD
二、冷備全流程(脫機備份)
# 關閉服務并啟DMAP
./DmService stop
./DmAPService start# 執行備份
./dmrman <<RMAN
backup database '/dm8/data/DAMENG/dm.ini'
backupset '/dm8/cold_full_$(date +%Y%m%d)';
exit
RMAN# 驗證備份
./dmrman "check backupset '/dm8/cold_full_$(date +%Y%m%d)'"
三、備份集還原實戰
# 停止數據庫
./DmService stop# 使用RMAN還原
./dmrman <<RECOVER
restore database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/full_20231001';recover database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/full_20231001';recover database '/dm8/data/DAMENG/dm.ini'
update db_magic;
exit
RECOVER# 重啟服務
./DmService start
第三部分:增量備份深度解析
一、增量備份原理
二、增量備份類型對比
特性 | 差異增量(默認) | 累積增量 |
---|---|---|
基備份要求 | 全量/增量備份集 | 僅全量備份集 |
備份鏈長度 | 長(鏈式依賴) | 短(直連全量) |
空間效率 | ★★★★★ | ★★★☆☆ |
恢復復雜度 | 高 | 低 |
備份集丟失風險 | 高(鏈斷裂失效) | 低 |
三、增量備份實戰
1. 基礎環境準備
-- 創建基準全備(每周一執行)
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full_mon';
2. 差異增量備份(每日)
-- 周二增量(基于周一全量)
BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/incr_tue';-- 周三增量(基于周二增量)
BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/incr_wed';
3. 累積增量備份(周四)
-- 直接基于周一全量
BACKUP DATABASE INCREMENT CUMULATIVE
BACKUPSET '/dm8/backup/cum_thur';
4. 路徑問題解決方案
-- 顯式指定基備份路徑
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/backup'
BACKUPSET '/dm8/backup/new_incr';
四、增量備份恢復
# 停止數據庫
./DmService stop# 還原差異增量鏈
./dmrman <<RESTORE
restore database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/backup/incr_wed'
with backupdir '/dm8/backup';recover database '/dm8/data/DAMENG/dm.ini'
from backupset '/dm8/backup/incr_wed';recover database '/dm8/data/DAMENG/dm.ini'
update db_magic;
exit
RESTORE
關鍵區別:
差異增量恢復需完整備份鏈
累積增量只需基礎全量+本次備份
第四部分:企業級備份策略
一、推薦備份方案
| 時間 | 備份類型 | 保留策略 | 特點 |
|--------|--------------|----------------|--------------------------|
| 每周一 | 全量備份 | 永久保留 | 基準點 |
| 周二三 | 差異增量 | 保留7天 | 節省空間 |
| 周四 | 累積增量 | 保留30天 | 打破長鏈降低風險 |
| 周五 | 差異增量 | 保留7天 | 基于周四增量 |
| 每月1日| 異地冷備 | 離線存儲12個月 | 滿足合規要求 |
二、最佳實踐清單
-
備份驗證
# 每周執行校驗 ./dmrman "check backupset '/dm8/backup/full_mon'"
-
歸檔管理
- 設置ARCH_SPACE_LIMIT防止磁盤寫滿
- 定期清理過期歸檔:
SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-30)
-
備份監控
-- 查詢備份歷史 SELECT * FROM V$BACKUPSET; -- 監控備份狀態 SELECT backup_name, begin_time, end_time, (end_time - begin_time)*24*60 as duration_min FROM V$BACKUP_HISTORY;
三、災難恢復口訣
三停:停應用→停服務→停進程
四步走:
- 定位備份集(with backupdir)
- 還原數據文件(restore)
- 重做日志(recover)
- 更新魔數(update db_magic)
一驗:啟動前校驗數據庫一致性
第五部分:常見故障處理
一、典型錯誤解決方案
錯誤碼 | 現象 | 解決方案 |
---|---|---|
[-8036] | 無基備份 | 1. 檢查備份路徑2. 使用with backupdir |
[-718] | 歸檔不完整 | 1. 檢查歸檔空間2. 驗證歸檔配置 |
[-610] | 備份集損壞 | 1. 校驗備份集2. 從備用副本恢復 |
二、數據恢復SOP
-
場景1:單表誤刪除
-- 表級時間點恢復 RECOVER TABLE 'EMP' FROM BACKUPSET '/dm8/backup/full_mon' UNTIL TIME '2023-10-01 14:30:00';
-
場景2:全庫損壞
# 使用增量備份恢復 dmrman restore... recover... update...
-
場景3:磁盤故障
# 替換磁盤后重做恢復 dmrman repair database '/new_path/dm.ini'
終極建議:
- 遵循3-2-1原則:3份備份、2種介質、1份異地
- 每月執行恢復演練:驗證備份有效性
- 關鍵業務配置實時主備:DMDataWatch方案
通過合理運用熱備、冷備與增量備份組合策略,可降低存儲成本50%以上,縮短備份窗口70%,RTO控制在15分鐘內,為業務系統提供堅若磐石的數據保障。