
以下是针对 Oracle 19c 中 V$BACKUP_COPY_SUMMARY 动态性能视图的全面解析,涵盖作用、使用场景、字段含义、关联视图、底层原理及常用 SQL。
1. 视图作用
V$BACKUP_COPY_SUMMARY 提供通过 RMAN COPY 或 BACKUP AS COPY 命令创建的映像副本的聚合统计信息,主要功能包括:
- 📊 汇总映像副本的数量、大小及时间范围
- ⏱️ 快速识别最后一次副本创建的时间
- 🔍 按文件类型(数据文件/控制文件/归档日志)分类统计
- 📉 分析副本存储消耗趋势
- ✅ 验证副本备份策略执行情况
💡 核心价值:快速评估映像副本备份状态,无需遍历详细记录。
2. 使用场景
- 备份策略审计:验证映像副本备份是否按计划执行
- 存储容量规划:监控副本占用的磁盘空间
- 恢复准备:确认可用副本的时间窗口
- 性能优化:检测副本创建频率是否合理
- 成本分析:比较副本与备份集的存储效率
3. 字段详解(Oracle 19c)
| 字段名 | 数据类型 | 描述 |
|---|---|---|
FILE_TYPE | VARCHAR2(10) | 文件类型:DATAFILE/CONTROLFILE/ARCHIVELOG |
COPY_COUNT | NUMBER | 当前可用的该类型副本总数 |
TOTAL_BYTES | NUMBER | 该类型副本的总大小(字节) |
MIN_COMPLETION_TIME | DATE | 最早副本的完成时间 |
MAX_COMPLETION_TIME | DATE | 关键:最新副本的完成时间 |
MIN_START_SCN | NUMBER | 所有副本中最小起始 SCN |
MAX_END_SCN | NUMBER | 关键:所有副本中最大结束 SCN |
📌 关键点:
- 仅统计
STATUS='A'(可用)的副本- 不包含已删除或过期的副本
MAX_COMPLETION_TIME是监控备份时效性的核心指标
4. 相关视图与基表
关联视图
| 视图名称 | 描述 |
|---|---|
V$BACKUP_COPY_DETAILS | 副本的详细记录(路径、SCN 等) |
V$DATAFILE_COPY | 数据文件副本专用视图 |
V$BACKUP_FILES | 所有备份文件信息(包含副本) |
RC_BACKUP_COPY_SUMMARY | 恢复目录中的等效视图(若使用恢复目录) |
底层基表
X$KRBCOPY_SUM:动态性能表,存储副本聚合数据(内存结构)X$KRBCOPY:详细副本记录基表(V$BACKUP_COPY_DETAILS的源)
⚠️ 基表为 Oracle 内部结构,禁止直接查询。
5. 底层原理
数据生成机制
- 副本创建:
- 执行
COPY或BACKUP AS COPY命令 - RMAN 创建位对位精确映像副本
- 执行
- 元数据记录:
- 控制文件中记录副本元数据:
文件类型: FILE_TYPE 大小: SIZE 时间戳: COMPLETION_TIME SCN范围: [START_SCN, END_SCN]
- 控制文件中记录副本元数据:
- 实时聚合:
- Oracle 后台进程按
FILE_TYPE分组聚合:COPY_COUNT = COUNT(*) TOTAL_BYTES = SUM(SIZE) MAX_COMPLETION_TIME = MAX(COMPLETION_TIME)
- Oracle 后台进程按
- 内存刷新:
- 数据存储在 SGA 的动态性能区
- 实例重启后重新统计(依赖控制文件记录)
生命周期管理
- 创建:
COPY或BACKUP AS COPY命令 - 删除:
DELETE COPY或DELETE EXPIRED COPY - 过期:
CROSSCHECK检测物理文件丢失后标记 - 保留:不受
RETENTION POLICY影响,需手动管理
6. 关键知识点
副本 vs 备份集
| 特性 | 映像副本 (Copy) | 备份集 (Backup Set) |
|---|---|---|
| 格式 | 原始文件格式 | 专用二进制格式 |
| 恢复速度 | ⚡ 极快(直接使用) | ⏳ 需还原操作 |
| 空间占用 | 高(全文件复制) | 低(支持压缩/空块跳过) |
| 增量更新 | 不支持 | 支持增量备份 |
最佳实践场景
SCN 范围的重要性
MIN_START_SCN~MAX_END_SCN定义副本可恢复的数据库时间范围- 必须与归档日志备份的 SCN 范围连续才能完全恢复
7. 常用查询 SQL
① 获取副本汇总概览
SELECT file_type,
copy_count,
ROUND(total_bytes/1024/1024) AS size_mb,
TO_CHAR(min_completion_time, 'YYYY-MM-DD') AS first_copy,
TO_CHAR(max_completion_time, 'YYYY-MM-DD HH24:MI') AS last_copy
FROM v$backup_copy_summary
ORDER BY file_type;
② 检测副本时效性(超过 24 小时报警)
SELECT file_type,
CASE WHEN SYSDATE - max_completion_time > 1
THEN 'CRITICAL: No recent copy'
ELSE 'OK' END AS status,
max_completion_time AS last_copy_time
FROM v$backup_copy_summary
WHERE file_type = 'DATAFILE'; -- 重点监控数据文件
③ 按类型计算日均副本大小
SELECT file_type,
copy_count,
ROUND(total_bytes/1024/1024) AS total_mb,
ROUND(total_bytes/NULLIF(copy_count,0)/1024/1024) AS avg_mb_per_copy
FROM v$backup_copy_summary;
④ 识别需要优化的文件类型
SELECT file_type,
copy_count,
ROUND(total_bytes/1024/1024) AS size_mb,
ROUND((SYSDATE - max_completion_time) * 24) AS hours_since_last
FROM v$backup_copy_summary
WHERE total_bytes > 1024 * 1024 * 1024 -- 大于1GB
AND (SYSDATE - max_completion_time) > 7; -- 超过7天未更新
⑤ 副本与数据库大小对比
WITH db_size AS (
SELECT SUM(bytes) AS total_bytes
FROM dba_data_files
)
SELECT s.file_type,
ROUND(s.total_bytes/1024/1024) AS copy_size_mb,
ROUND(d.total_bytes/1024/1024) AS db_size_mb,
ROUND(s.total_bytes / d.total_bytes * 100, 2) AS pct
FROM v$backup_copy_summary s, db_size d
WHERE s.file_type = 'DATAFILE';
⑥ 副本空间压力分析
SELECT
file_type,
copy_count,
ROUND(total_bytes/1024/1024) AS size_mb,
TO_CHAR(max_completion_time, 'YYYY-MM-DD') AS last_copy,
ROUND(RATIO_TO_REPORT(total_bytes) OVER () * 100, 2) AS space_pct
FROM v$backup_copy_summary
ORDER BY size_mb DESC;
总结
- 核心优势:秒级获取映像副本全局状态,优化存储和恢复策略
- 最佳实践:
- 对 SYSTEM 表空间 和 高频恢复文件 使用映像副本
- 每日监控
MAX_COMPLETION_TIME确保时效性 - 结合
TOTAL_BYTES定期清理旧副本释放空间
- 关键注意:
- 副本 不替代归档日志备份,需单独管理
- RAC 环境中为 全局统计(所有实例)
- 控制文件记录受
CONTROL_FILE_RECORD_KEEP_TIME限制
🔧 优化建议:
使用 增量更新的映像副本 节省空间:RMAN> RECOVER COPY OF DATAFILE 5 WITH TAG 'daily_copy'; RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'daily_copy' DATAFILE 5;
欢迎关注我的公众号《IT小Chen》
60

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



