Oracle DBA 教学(03)数据安全与备份恢复(RMAN / 冷备 / 热备 / 灾备)
目标:建立“可恢复、可验证、可演练”的数据安全体系,满足零数据丢失(RPO≈0)与最短恢复时间(RTO)的业务目标。
1. 备份策略设计
- 目标值:
- RPO:≤5分钟(归档+增量);RTO:按关键业务分级(P1≤30min)。
- 备份层次:
- 全备(周)+ 累积增量(天)+ 日志(实时);
- 控制文件/参数文件/密码文件;
- 离线拷贝元数据(备份目录清单、校验摘要)。
- 存储:本地 + 远端(对象存储/NAS)+ 异地容灾;加密、分层生命周期、不可变存储(WORM)。
2. RMAN 基础套路
- 配置与校验
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
RMAN> SHOW ALL;
- 例行备份(归档日志模式)
RUN {
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE TAG 'WEEKLY_FULL';
BACKUP ARCHIVELOG ALL NOT BACKED UP TAG 'ARCH';
BACKUP CURRENT CONTROLFILE TAG 'CTRLFILE';
}
- 日常增量
RUN {
RECOVER COPY OF DATABASE WITH TAG 'WEEKLY_FULL';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'WEEKLY_FULL' DATABASE;
BACKUP ARCHIVELOG ALL NOT BACKED UP;
}
- 备份校验
RMAN> VALIDATE DATABASE;
RMAN> CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP;
3. 恢复常见场景
- 误删单表(有回收站时)
FLASHBACK TABLE scott.emp TO BEFORE DROP;
- 误更新(有行移动/闪回数据归档)
FLASHBACK TABLE t TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);
- 控制文件/数据文件损坏
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RESTORE DATABASE; RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
- 媒体故障(块损坏)
RMAN> BLOCKRECOVER DATAFILE 7 BLOCK 1234;
4. 冷备与热备要点
- 冷备(关库物理拷贝):窗口大但风险低;适合首次“金像”备份或迁移前基线。
- 热备(联机 RMAN):窗口小;配合归档与增量滚动;注意 FRA 空间与归档频率。
5. 加密、压缩与脱敏
- 备份加密:
CONFIGURE ENCRYPTION FOR DATABASE ON;使用钱包/主密钥管理; - 压缩:
AS COMPRESSED BACKUPSET; - 脱敏:导出开发/测试数据前进行数据脱敏(字段打乱、哈希化、保型加密)。
6. 灾备(Data Guard)演练
- 保护模式:MAXIMUM AVAILABILITY(零/近零 RPO)与 MAXIMUM PERFORMANCE(低成本)。
- 关键检查清单:
- 归档传输/应用延迟 < 60s;
- 日志切换频率与网络带宽匹配;
- 只读报表与备份在备库承载;
- 每季度完成 switchover 与 failover 演练并留存报告。
7. 还原演练(建议每月)
- 选取最近一次全备 + 归档,
- 在独立测试环境完成还原,校验关键核对点:
- 数据字典与对象数;
- 业务关键表记录数;
- 关键视图/存储过程可用;
- 应用连接/读写验收。
8. 备份目录结构建议
/u02/backup/DBNAME/
|- full/ # 周全备
|- incr/ # 日增量
|- arch/ # 归档
|- ctrl/ # 控制文件
|- logs/ # 备份日志
|- manifest/ # 备份清单与校验
最佳实践:备份可还原才叫备份。建立“备份报告 + 恢复演练报告”的双闭环,接入季度审计。