
以下是针对 Oracle 19c 中 V$BACKUP_CONTROLFILE_SUMMARY 动态性能视图的全面解析,涵盖作用、使用场景、字段含义、关联视图、底层原理及常用 SQL。
1. 视图作用
V$BACKUP_CONTROLFILE_SUMMARY 提供控制文件备份的聚合统计信息,主要功能包括:
- 📊 汇总控制文件备份次数、大小及时间范围
- ⏱️ 快速识别最后一次控制文件备份的时间
- 🔍 区分自动备份与手动备份的统计
- 📉 分析控制文件备份的增长趋势
- ✅ 验证备份策略执行情况(如自动备份是否启用)
💡 核心价值:快速评估控制文件备份状态,无需遍历详细记录。
2. 使用场景
- 备份健康检查:每日验证控制文件备份是否成功
- 容量规划:分析控制文件备份的存储消耗
- 合规审计:证明控制文件备份策略的执行
- 故障恢复准备:确认可用备份的时间窗口
- 性能优化:检测备份频率是否合理
3. 字段详解(Oracle 19c)
| 字段名 | 数据类型 | 描述 |
|---|---|---|
AUTOBACKUP_COUNT | NUMBER | 自动备份的控制文件次数 |
BACKUP_COUNT | NUMBER | 控制文件备份总次数(自动+手动) |
LAST_AUTOBACKUP | DATE | 最近一次自动备份的完成时间 |
LAST_BACKUP | DATE | 最近一次任何类型备份的完成时间 |
TOTAL_SIZE | NUMBER | 所有控制文件备份的总大小(字节) |
AUTOBACKUP_SIZE | NUMBER | 自动备份的总大小(字节) |
MANUAL_SIZE | NUMBER | 手动备份的总大小(字节) |
📌 关键点:
- 仅统计当前控制文件中存在的记录(受
CONTROL_FILE_RECORD_KEEP_TIME限制)- 不包含已删除或过期的备份
4. 相关视图与基表
关联视图
| 视图名称 | 描述 |
|---|---|
V$BACKUP_CONTROLFILE_DETAILS | 详细的控制文件备份记录 |
V$BACKUP_SET | 备份集元数据 |
V$RMAN_CONFIGURATION | RMAN 配置(检查 CONTROLFILE AUTOBACKUP 状态) |
RC_BACKUP_CONTROLFILE_SUMMARY | 恢复目录中的等效视图(若使用恢复目录) |
底层基表
X$KRCBFC_SUM:动态性能表,存储控制文件备份的聚合数据(内存结构)X$KRCBFC:详细备份记录基表(V$BACKUP_CONTROLFILE_DETAILS的源)
⚠️ 基表为 Oracle 内部结构,禁止直接查询。
5. 底层原理
数据生成机制
- 备份触发:
- RMAN 执行控制文件备份(自动或手动)
- 元数据写入控制文件循环记录区
- 实时聚合:
- Oracle 后台进程定期聚合:
TOTAL_SIZE = SUM(所有备份片大小) BACKUP_COUNT = COUNT(所有备份记录)
- Oracle 后台进程定期聚合:
- 内存刷新:
- 数据存储在 SGA 的动态性能区
- 实例重启后重新统计(依赖控制文件记录)
记录保留规则
- 最大保留天数由参数控制:
SELECT value FROM v$parameter WHERE name = 'control_file_record_keep_time'; -- 默认 7 天 - 超过保留期的备份记录会被覆盖,汇总数据随之更新
6. 关键知识点
自动备份触发条件
- 启用配置:
CONFIGURE CONTROLFILE AUTOBACKUP ON - 触发事件:
- 备份包含数据文件 1(System 表空间)
ALTER DATABASE更改结构(添加数据文件/表空间)- 备份时指定
PLUS ARCHIVELOG
备份大小影响因素
| 因素 | 影响说明 |
|---|---|
| 数据库对象数量 | 对象越多,控制文件越大 |
MAXDATAFILES | 参数值越高,控制文件越大 |
MAXLOGHISTORY | 归档日志记录越多,文件越大 |
MAXINSTANCES | RAC 配置影响大小 |
恢复关键性
💡 无有效控制文件备份时,需重建控制文件或使用
CREATE CONTROLFILE命令
7. 常用查询 SQL
① 检查控制文件备份概况
SELECT
backup_count AS total_backups,
autobackup_count AS auto_backups,
TO_CHAR(last_backup, 'YYYY-MM-DD HH24:MI:SS') AS last_backup_time,
TO_CHAR(last_autobackup, 'YYYY-MM-DD HH24:MI:SS') AS last_auto_time,
ROUND(total_size/1024/1024, 2) AS total_size_mb,
ROUND(autobackup_size/1024/1024, 2) AS auto_size_mb
FROM v$backup_controlfile_summary;
② 验证自动备份是否启用
SELECT
CASE WHEN autobackup_count > 0 THEN 'ENABLED'
ELSE 'DISABLED OR NO BACKUP' END AS autobackup_status,
last_autobackup
FROM v$backup_controlfile_summary;
③ 检测备份时效性(超过24小时报警)
SELECT
CASE WHEN SYSDATE - last_backup > 1 THEN 'CRITICAL: No backup in 24h'
ELSE 'OK' END AS backup_status
FROM v$backup_controlfile_summary;
④ 计算日均备份大小
SELECT
ROUND(total_size/1024/1024) AS total_mb,
backup_count,
ROUND(total_size/NULLIF(backup_count,0)/1024/1024, 2) AS avg_mb_per_backup
FROM v$backup_controlfile_summary;
⑤ 对比自动/手动备份占比
SELECT
ROUND(autobackup_size * 100 / GREATEST(total_size, 1), 2) AS auto_pct,
ROUND(manual_size * 100 / GREATEST(total_size, 1), 2) AS manual_pct
FROM v$backup_controlfile_summary;
总结
- 核心优势:秒级获取控制文件备份全局状态,替代复杂聚合查询
- 最佳实践:
- 每日检查
LAST_BACKUP确保时效性 - 监控
AUTOBACKUP_COUNT > 0验证配置有效性 - 结合
TOTAL_SIZE预测存储需求
- 每日检查
- 注意事项:
- 数据不持久化,实例重启后重置
- 不反映已删除的备份(对比
V$BACKUP_CONTROLFILE_DETAILS) - RAC 环境中为全局统计(所有实例)
🔒 关键建议:
始终启用CONTROLFILE AUTOBACKUP,并确保LAST_AUTOBACKUP在合理时间范围内!
欢迎关注我的公众号《IT小Chen》
1475

被折叠的 条评论
为什么被折叠?



