面试宝典:介绍下Oracle数据库动态性能视图 V$BACKUP_CONTROLFILE_SUMMARY

在这里插入图片描述
以下是针对 Oracle 19c 中 V$BACKUP_CONTROLFILE_SUMMARY 动态性能视图的全面解析,涵盖作用、使用场景、字段含义、关联视图、底层原理及常用 SQL。


1. 视图作用

V$BACKUP_CONTROLFILE_SUMMARY 提供控制文件备份的聚合统计信息,主要功能包括:

  • 📊 汇总控制文件备份次数、大小及时间范围
  • ⏱️ 快速识别最后一次控制文件备份的时间
  • 🔍 区分自动备份与手动备份的统计
  • 📉 分析控制文件备份的增长趋势
  • ✅ 验证备份策略执行情况(如自动备份是否启用)

💡 核心价值:快速评估控制文件备份状态,无需遍历详细记录。


2. 使用场景

  • 备份健康检查:每日验证控制文件备份是否成功
  • 容量规划:分析控制文件备份的存储消耗
  • 合规审计:证明控制文件备份策略的执行
  • 故障恢复准备:确认可用备份的时间窗口
  • 性能优化:检测备份频率是否合理

3. 字段详解(Oracle 19c)

字段名数据类型描述
AUTOBACKUP_COUNTNUMBER自动备份的控制文件次数
BACKUP_COUNTNUMBER控制文件备份总次数(自动+手动)
LAST_AUTOBACKUPDATE最近一次自动备份的完成时间
LAST_BACKUPDATE最近一次任何类型备份的完成时间
TOTAL_SIZENUMBER所有控制文件备份的总大小(字节)
AUTOBACKUP_SIZENUMBER自动备份的总大小(字节)
MANUAL_SIZENUMBER手动备份的总大小(字节)

📌 关键点

  • 仅统计当前控制文件中存在的记录(受 CONTROL_FILE_RECORD_KEEP_TIME 限制)
  • 不包含已删除或过期的备份

4. 相关视图与基表

关联视图
视图名称描述
V$BACKUP_CONTROLFILE_DETAILS详细的控制文件备份记录
V$BACKUP_SET备份集元数据
V$RMAN_CONFIGURATIONRMAN 配置(检查 CONTROLFILE AUTOBACKUP 状态)
RC_BACKUP_CONTROLFILE_SUMMARY恢复目录中的等效视图(若使用恢复目录)
底层基表
  • X$KRCBFC_SUM:动态性能表,存储控制文件备份的聚合数据(内存结构)
  • X$KRCBFC:详细备份记录基表(V$BACKUP_CONTROLFILE_DETAILS 的源)

⚠️ 基表为 Oracle 内部结构,禁止直接查询


5. 底层原理

数据生成机制
  1. 备份触发
    • RMAN 执行控制文件备份(自动或手动)
    • 元数据写入控制文件循环记录区
  2. 实时聚合
    • Oracle 后台进程定期聚合:
      TOTAL_SIZE = SUM(所有备份片大小)
      BACKUP_COUNT = COUNT(所有备份记录)
      
  3. 内存刷新
    • 数据存储在 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归档日志记录越多,文件越大
MAXINSTANCESRAC 配置影响大小
恢复关键性
控制文件备份
恢复数据库结构
定位数据文件
应用重做日志
完成恢复

💡 无有效控制文件备份时,需重建控制文件或使用 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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值