
好的,我们来对 Oracle 19C 中的 V$PROXY_DATAFILE 动态性能视图进行一次全面、深入的详解。这个视图是 Oracle Recovery Manager (RMAN) 备份环境中用于监控数据文件代理备份状态的核心工具。
1. 作用与概述
V$PROXY_DATAFILE 动态性能视图提供了关于使用 RMAN PROXY COPY 功能备份数据文件(Datafiles) 的实时状态和元数据信息。
核心作用:监控和诊断通过 PROXY COPY 方式将数据文件从磁盘备份到第三方介质(如磁带库)的作业。它允许您查看哪些数据文件正在被备份、备份的进度、以及是否成功完成。
关键概念:PROXY COPY for Datafiles
- 普通 RMAN 备份:RMAN 进程读取数据文件块,通过服务器进程内存(PGA/SGA)传递,再写入备份片。
- PROXY COPY for Datafiles:RMAN 将整个数据文件的控制权直接交给媒体管理器(Media Manager)。由媒体管理器(如 Veritas NetBackup, IBM TSM)直接负责从存储读取数据文件并写入备份设备(如磁带),绕过了数据库服务器的内存。
- 优势:极大减少了数据库服务器的 CPU 和内存开销,特别适合超大型数据文件(如数TB大小)的备份。
- 视图焦点:
V$PROXY_DATAFILE专门监控对数据文件(Datafiles)的 PROXY COPY 操作。对归档日志的PROXY COPY由V$PROXY_ARCHIVEDLOG视图监控。
2. 使用场景
- 监控正在进行的数据文件 Proxy 备份:实时查看哪些数据文件正在被备份到第三方设备,以及备份的状态。
- 验证备份作业结果:检查数据文件的 Proxy 备份是否成功完成(
STATUS = 'COMPLETED'),或是否失败(STATUS = 'FAILED')。 - 诊断备份问题:当备份失败或性能不佳时,查看该视图获取会话和错误信息,辅助故障排除。
- 审计和报告:获取已备份数据文件的列表、大小等信息,用于合规性审计或生成备份报告。
3. 字段含义详解
以下是 V$PROXY_DATAFILE 视图的主要字段及其含义的详细表格。
| 字段名 | 类型 | 含义详解 |
|---|---|---|
| SESSION_RECID | NUMBER | 会话记录ID:唯一标识此备份操作的内部序列号。与 V$RMAN_BACKUP_JOB_DETAILS.RECID 相关联,可用于连接到更高级别的 RMAN 作业信息。 |
| SESSION_STAMP | NUMBER | 会话时间戳:与 SESSION_RECID 共同组成主键,唯一标识一次 RMAN 会话。同样与 V$RMAN_BACKUP_JOB_DETAILS.STAMP 关联。 |
| DEVICE_TYPE | VARCHAR2(17) | 设备类型:执行备份的设备类型。对于 PROXY COPY,此值通常为 SBT_TAPE (System Backup to Tape),表示备份目标是磁带库系统。 |
| HANDLE | VARCHAR2(513) | 备份句柄:媒体管理器为此次备份分配的唯一名称或句柄。用于在恢复时标识备份集。 |
| STATUS | VARCHAR2(9) | 备份状态:核心字段。表示此数据文件的 Proxy 备份当前状态。 - RUNNING: 备份正在进行中。 - COMPLETED: 备份已成功完成。 - FAILED: 备份失败。 |
| FILE# | NUMBER | 数据文件编号:核心字段。正在被备份的数据文件的编号。与 V$DATAFILE.FILE# 和 DBA_DATA_FILES.FILE_ID 对应。 |
| BYTES | NUMBER | 字节数:要备份的数据文件的大小(字节)。 |
| BLOCKS | NUMBER | 块数:要备份的数据文件的块数。 |
| BUFFERS | NUMBER | 缓冲区数:已为此备份操作分配的缓冲区数量。 |
| ELAPSED_SECONDS | NUMBER | 耗时(秒):此备份操作到目前为止所花费的总时间(秒)。 |
| SID | NUMBER | 会话标识符:执行此备份操作的数据库会话的 SID。可与 V$SESSION 关联。 |
| SERIAL# | NUMBER | 会话序列号:会话的序列号。与 SID 一起用于唯一标识会话。 |
| CREATE_TIME | DATE | 创建时间:数据文件在数据库中创建的时间。 |
| RESETLOGS_ID | NUMBER | Resetlogs SCN 标识:标识数据库在 OPEN RESETLOGS 时的 SCN。用于区分不同 incarnations 的数据文件。 |
| RESETLOGS_TIME | DATE | Resetlogs 时间:数据库执行 OPEN RESETLOGS 操作的时间。 |
4. 相关视图与基表
V$PROXY_DATAFILE_DETAILS:最直接的相关视图。提供数据文件代理备份的详细异步 I/O 性能统计(如每次I/O的耗时、吞吐率)。用于深度性能诊断,是V$PROXY_DATAFILE的细化。V$PROXY_ARCHIVEDLOG:用于监控归档日志代理备份的视图。功能与本视图类似,但对象不同。V$RMAN_BACKUP_JOB_DETAILS:提供更高层次的 RMAN 作业信息(如作业开始/结束时间、状态、输入/输出字节数)。通过SESSION_RECID和SESSION_STAMP与本视图关联。V$DATAFILE:通过FILE#关联,可以获取数据文件的详细信息(如名称、表空间、状态)。V$SESSION:通过SID和SERIAL#关联,可以获取执行备份操作的服务器会话的详细信息。- 基表 (Underlying Table):
V$PROXY_DATAFILE的数据来源于控制文件中的 RMAN 备份元数据。其底层 X 表 ∗ ∗ 通常是 ∗ ∗ ‘ X 表** 通常是 **`X 表∗∗通常是∗∗‘XKRCBDF` (Kernel Recovery Controller Backup DataFile) 或类似名称的内部结构,专门用于记录数据文件代理备份的元数据。
5. 底层详细原理与相关知识点
-
PROXY COPY for Datafiles 工作流程:
- RMAN 会话启动,分配
SBT_TAPE通道。 - 发出
BACKUP AS COPY PROXY DATAFILE ...或BACKUP AS COPY PROXY TABLESPACE ...命令。 - RMAN 与媒体管理库(Media Management Library, MML)交互。
- 关键步骤:RMAN 将数据文件句柄(如
/path/to/datafile.dbf)和控制权传递给媒体管理器。 - 媒体管理器直接访问数据库服务器的文件系统,读取数据文件内容,并将其直接写入磁带或其他设备。
- RMAN 定期轮询媒体管理器以获取备份进度,并更新控制文件中的元数据,
V$PROXY_DATAFILE视图则反映了这些元数据。 - 备份完成后,媒体管理器将备份句柄(
HANDLE)返回给 RMAN,RMAN 将其记录在控制文件中。
- RMAN 会话启动,分配
-
与普通备份的区别:
特性 普通备份 ( BACKUP DATAFILE)代理备份 ( BACKUP PROXY DATAFILE)数据路径 存储 -> DB Buffer -> RMAN -> 备份片 存储 -> 媒体管理器 -> 备份设备 DB服务器负载 高(CPU/内存,用于读取和校验) 低(主要是管理开销) 控制文件记录 V$BACKUP_FILES,V$BACKUP_ASYNC_IOV$PROXY_DATAFILE,V$PROXY_DATAFILE_DETAILS依赖项 仅RMAN RMAN + 第三方媒体管理软件 -
重要注意事项:
- 一致性:代理备份仍然保证一致性的读取。它通过基于时间点或SCN的机制来确保备份的数据文件块是一致的。
- 增量备份:通常,
PROXY COPY用于完整备份。增量备份通常不使用此功能,因为增量备份需要数据库内核来识别更改的块。 - 恢复:从代理备份中恢复时,媒体管理器负责将数据直接从备份设备写回文件系统,同样绕过了数据库内存。
6. 常用查询 SQL
1. 监控当前正在进行的数据文件 Proxy 备份
查看哪些文件正在被备份以及实时状态。
SELECT file#,
status,
ROUND((bytes / (1024*1024)), 2) AS size_mb,
ROUND((elapsed_seconds / 60), 2) AS elapsed_min,
sid,
serial#
FROM v$proxy_datafile
WHERE status = 'RUNNING'
ORDER BY file#;
2. 查看最近的数据文件 Proxy 备份作业结果
检查过去一段时间内完成的备份作业是成功还是失败。
SELECT file#,
status,
ROUND((bytes / (1024*1024)), 2) AS size_mb,
ROUND((elapsed_seconds / 60), 2) AS elapsed_min,
handle
FROM v$proxy_datafile
WHERE status IN ('COMPLETED', 'FAILED')
AND elapsed_seconds > 0
ORDER BY elapsed_seconds DESC;
3. 关联 V$DATAFILE 获取文件详情
将备份状态与数据文件信息结合,获得更完整的视图。
SELECT d.file#,
d.name AS datafile_name,
t.name AS tablespace_name,
p.status,
ROUND(p.bytes / (1024*1024), 2) AS size_mb,
p.elapsed_seconds
FROM v$proxy_datafile p
JOIN v$datafile d ON p.file# = d.file#
JOIN v$tablespace t ON d.ts# = t.ts#
WHERE p.status = 'RUNNING'
ORDER BY t.name, d.name;
4. 诊断失败的 Proxy 备份
查找失败的备份并获取其会话信息,以便进一步排查。
SELECT
p.file#,
p.status,
p.elapsed_seconds,
p.sid,
p.serial#,
s.module,
s.action,
s.client_info -- 通常这里会显示 'rman'
FROM v$proxy_datafile p
LEFT JOIN v$session s ON (p.sid = s.sid AND p.serial# = s.serial#)
WHERE p.status = 'FAILED'
AND p.elapsed_seconds > 0;
5. 关联高级别的 RMAN 作业信息
将详细的代理备份记录与父RMAN作业关联。
SELECT
p.file#,
p.status AS file_status,
ROUND(p.bytes / (1024*1024), 2) AS size_mb,
j.start_time,
j.end_time,
j.status AS job_status,
j.output_device_type
FROM v$proxy_datafile p
JOIN v$rman_backup_job_details j
ON (p.session_recid = j.recid AND p.session_stamp = j.stamp)
WHERE j.start_time > SYSDATE - 1
ORDER BY j.start_time DESC, p.file#;
总结
V$PROXY_DATAFILE 视图是管理和监控使用 RMAN PROXY COPY 功能进行数据文件备份的核心状态视图。它的核心价值在于:
- 提供状态透明度:使 DBA 能够洞察由第三方媒体管理器执行的数据文件备份的当前状态(运行中、完成、失败)。
- 辅助基本诊断:通过状态、耗时等信息,帮助初步判断备份是否正常完成。
- 验证和审计:确认关键数据文件是否已成功备份到离线介质。
- 故障排除入口:当备份失败时,提供关键的会话和文件标识符,便于进一步排查。
对于使用了第三方企业级备份软件来卸载大型数据文件备份负载的环境,熟练掌握此视图是确保备份操作可见性和可控性的基础。如需进行深度性能分析,应进一步查询 V$PROXY_DATAFILE_DETAILS 视图。
欢迎关注我的公众号《IT小Chen》

923

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



