
以下是针对 Oracle 19c 中 V$BACKUP_COPY_DETAILS 动态性能视图的全面解析,涵盖作用、使用场景、字段含义、关联视图、底层原理及常用 SQL。
1. 视图作用
V$BACKUP_COPY_DETAILS 提供通过 RMAN COPY 命令创建的数据文件副本的详细信息,主要功能包括:
- 📝 跟踪
COPY命令创建的文件副本元数据 - 📌 记录副本位置、大小、SCN 范围等关键信息
- 🔍 验证副本完整性和可用性
- ⏱️ 确定副本创建时间及关联的数据库状态
- 💾 管理副本生命周期(创建/删除/过期)
✅ 核心价值:管理通过
COPY命令创建的 直接文件副本(非备份集格式)。
2. 使用场景
- 快速恢复:使用副本直接替换损坏的数据文件
- 备用数据库:为 Data Guard 创建初始副本
- 存储迁移:将文件复制到新存储位置
- 性能优化:避免备份集格式的解压开销
- 空间管理:监控副本存储消耗
3. 字段详解(Oracle 19c)
| 字段名 | 数据类型 | 描述 |
|---|---|---|
COPY_RECID | NUMBER | 副本记录的唯一标识符 |
STAMP | NUMBER | 时间戳(与 COPY_RECID 共同唯一标识副本) |
DB_KEY | NUMBER | 数据库标识符(用于恢复目录) |
DBINC_KEY | NUMBER | 数据库化身标识符 |
SESSION_KEY | NUMBER | 创建副本的 RMAN 会话标识符 |
SESSION_STAMP | NUMBER | 会话时间戳 |
COMMAND_ID | VARCHAR2(33) | 关联的 RMAN 命令 ID |
START_SCN | NUMBER | 关键:副本开始的 SCN |
END_SCN | NUMBER | 关键:副本结束的 SCN |
START_TIME | DATE | 副本创建开始时间 |
COMPLETION_TIME | DATE | 关键:副本完成时间 |
FILE_TYPE | VARCHAR2(10) | 文件类型:DATAFILE/ARCHIVELOG/CONTROLFILE |
FILE# | NUMBER | 源文件编号(对于数据文件) |
BLOCKS | NUMBER | 副本中的块数 |
BLOCK_SIZE | NUMBER | 块大小(字节) |
SIZE | NUMBER | 副本总大小(字节) |
TAG | VARCHAR2(32) | 副本标签(用户指定) |
HANDLE | VARCHAR2(513) | 关键:副本文件的完整路径 |
STATUS | VARCHAR2(1) | 关键:状态:A(可用)/D(已删除)/X(已过期) |
DEVICE_TYPE | VARCHAR2(17) | 设备类型:DISK(仅磁盘支持副本) |
DELETED | VARCHAR2(3) | 是否已删除:YES/NO |
📌 核心字段:
FILE_TYPE标识副本类型(数据文件/控制文件/归档日志)START_SCN/END_SCN决定副本可用于恢复的 SCN 范围STATUS='A'表示副本可用于恢复
4. 相关视图与基表
关联视图
| 视图名称 | 描述 |
|---|---|
V$BACKUP_FILES | 所有备份文件信息(包含副本) |
V$DATAFILE_COPY | 数据文件副本专用视图(子集) |
V$BACKUP_SET | 备份集信息(对比使用) |
RC_BACKUP_COPY_DETAILS | 恢复目录中的等效视图 |
底层基表
X$KRBCOPY:动态性能表,存储文件副本元数据(内存结构)X$KCCFN:文件名称表(关联文件编号)
⚠️ 基表为 Oracle 内部结构,禁止直接查询。
5. 底层原理
COPY 命令工作流程
- 命令执行:
RMAN> COPY DATAFILE 5 TO '/backup/users01.dbf'; - 直接复制:
- RMAN 直接读取数据文件块,跳过空闲块(与
BACKUP AS COPY相同) - 创建 精确映像副本(bit-for-bit copy)
- RMAN 直接读取数据文件块,跳过空闲块(与
- 元数据记录:
- 在控制文件中记录:
SCN范围: [START_SCN, END_SCN] 文件路径: HANDLE 块信息: BLOCKS, BLOCK_SIZE
- 在控制文件中记录:
- 验证机制:
- 自动计算校验和(避免使用
NOCHECKSUM) - 更新
V$DATAFILE_COPY和V$BACKUP_COPY_DETAILS
- 自动计算校验和(避免使用
副本恢复优势
💡 副本恢复比备份集恢复快 30-50%(省去解压过程)
6. 关键知识点
COPY vs BACKUP AS COPY
| 特性 | COPY 命令 | BACKUP AS COPY |
|---|---|---|
| 语法 | 文件级操作 | 备份集级操作 |
| 多文件处理 | 需显式列出每个文件 | 支持通配符(如 DATAFILE 1-10) |
| 元数据管理 | 相同 | 相同 |
| 使用场景 | 单文件操作 | 批量操作 |
副本生命周期管理
- 创建:
COPY命令 - 验证:
CROSSCHECK COPY - 删除:
DELETE COPY或DELETE EXPIRED COPY - 过期:
RETENTION POLICY或CROSSCHECK检测缺失
恢复语法
-- 使用副本恢复数据文件
RMAN> SQL "ALTER DATABASE DATAFILE 5 OFFLINE";
RMAN> COPY DATAFILE 5 TO '/backup/users01.dbf'; -- 创建副本
RMAN> SWITCH DATAFILE 5 TO COPY; -- 指向副本
RMAN> RECOVER DATAFILE 5; -- 应用重做
RMAN> SQL "ALTER DATABASE DATAFILE 5 ONLINE";
7. 常用查询 SQL
① 列出所有可用副本
SELECT file#, file_type, handle,
TO_CHAR(completion_time, 'YYYY-MM-DD HH24:MI:SS') AS copy_time,
ROUND(size/1024/1024, 2) AS size_mb,
start_scn, end_scn
FROM v$backup_copy_details
WHERE status = 'A' -- Available
ORDER BY completion_time DESC;
② 查找特定文件的最新副本
SELECT handle, completion_time, start_scn, end_scn
FROM (
SELECT handle, completion_time, start_scn, end_scn,
RANK() OVER (PARTITION BY file# ORDER BY completion_time DESC) AS rnk
FROM v$backup_copy_details
WHERE file# = 5 -- 文件编号
AND status = 'A'
)
WHERE rnk = 1;
③ 检测副本完整性(SCN 连续性)
SELECT file#,
MIN(start_scn) AS min_scn,
MAX(end_scn) AS max_scn,
MAX(end_scn) - MIN(start_scn) AS scn_range,
COUNT(*) AS copies
FROM v$backup_copy_details
WHERE status = 'A'
GROUP BY file#
ORDER BY file#;
④ 识别过期/可删除副本
SELECT handle, file_type, completion_time,
TO_CHAR(completion_time, 'YYYY-MM-DD') AS copy_day
FROM v$backup_copy_details
WHERE status = 'X' -- Expired
OR deleted = 'YES';
⑤ 按文件类型统计副本
SELECT file_type,
COUNT(*) AS total_copies,
SUM(DECODE(status, 'A', 1, 0)) AS available,
ROUND(SUM(size)/1024/1024) AS total_size_mb
FROM v$backup_copy_details
GROUP BY file_type;
⑥ 验证副本与源文件一致性
SELECT d.file#, d.name AS source_file, c.handle AS copy_path,
d.blocks AS source_blocks, c.blocks AS copy_blocks,
CASE WHEN d.blocks = c.blocks THEN 'MATCHED'
ELSE 'MISMATCH' END AS status
FROM v$datafile d
JOIN v$backup_copy_details c ON d.file# = c.file#
WHERE c.status = 'A'
AND c.file_type = 'DATAFILE';
总结
- 核心优势:提供 零转换恢复路径,避免备份集解压开销
- 最佳实践:
- 对关键数据文件使用副本加速恢复
- 定期
CROSSCHECK COPY验证副本可用性 - 监控
STATUS='A'确保恢复准备就绪
- 关键注意:
- 仅支持磁盘设备(
DEVICE_TYPE='DISK') - 副本 不包含 增量备份优势
- 控制文件记录受
CONTROL_FILE_RECORD_KEEP_TIME限制
- 仅支持磁盘设备(
🔧 使用建议:
对频繁恢复的文件(如 SYSTEM 表空间)创建副本,结合归档日志实现分钟级恢复。
欢迎关注我的公众号《IT小Chen》
1033

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



