
好的,我们来对 Oracle 19C 中的 V$PROXY_ARCHIVEDLOG 动态性能视图进行一次全面、深入的详解。这个视图是 Oracle Recovery Manager (RMAN) 备份环境中的专有视图,专门用于监控一种特定的高级备份操作。
1. 作用与概述
V$PROXY_ARCHIVEDLOG 动态性能视图提供了关于使用 RMAN PROXY COPY 功能备份归档重做日志(Archived Redo Logs)的实时状态和性能信息。
核心作用:监控和诊断通过 PROXY COPY 方式将归档日志从磁盘备份到第三方介质(如磁带库)的作业。它允许您查看哪些归档日志文件正在被备份、备份的进度、以及是否成功完成。
关键概念:PROXY COPY
- 普通 RMAN 备份:RMAN 进程读取数据文件或归档日志,将数据块通过服务器进程内存(PGA/SGA)传递,再写入备份片。
- PROXY COPY:RMAN 将整个数据文件或归档日志文件的控制权直接交给一个称为“媒体管理器”(Media Manager)的第三方备份软件(如 Veritas NetBackup, IBM TSM, Oracle Zero Data Loss Recovery Appliance)。由媒体管理器直接负责从存储读取并写入备份设备(如磁带),绕过了数据库服务器的内存。
- 优势:减少了数据库服务器的 CPU 和内存开销,特别适合大型文件的备份。媒体管理器通常针对其特定的硬件进行了优化,可能效率更高。
- 视图焦点:
V$PROXY_ARCHIVEDLOG仅监控对归档日志(Archived Logs)的 PROXY COPY 操作。对数据文件的PROXY COPY由V$PROXY_DATAFILE视图监控。
2. 使用场景
- 监控正在进行的归档日志 Proxy 备份:实时查看哪些归档日志正在被备份到第三方设备,以及备份的完成百分比。
- 验证备份作业结果:检查归档日志的 Proxy 备份是否成功完成(
STATUS = 'COMPLETED'),或是否失败(STATUS = 'FAILED')。 - 诊断备份性能问题:评估 Proxy 备份的吞吐量和耗时,判断备份窗口是否满足要求,瓶颈是在数据库端、网络还是磁带设备。
- 排查备份失败原因:当备份失败时,查看该视图获取会话信息,并结合媒体管理器的日志进行故障排除。
3. 字段含义详解
以下是 V$PROXY_ARCHIVEDLOG 视图的主要字段及其含义的详细表格。
| 字段名 | 类型 | 含义详解 |
|---|---|---|
| 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: 备份失败。 |
| THREAD# | NUMBER | 重做线程号:此归档日志所属的重做线程编号。在 RAC 环境中尤为重要。 |
| SEQUENCE# | NUMBER | 日志序列号:此归档日志在其重做线程中的序列号。THREAD# 和 SEQUENCE# 唯一标识一个归档日志文件。 |
| RESETLOGS_ID | NUMBER | Resetlogs SCN 标识:标识数据库在 OPEN RESETLOGS 时的 SCN。用于区分不同 incarnations 的归档日志。 |
| RESETLOGS_TIME | DATE | Resetlogs 时间:数据库执行 OPEN RESETLOGS 操作的时间。 |
| COMPLETION_TIME | DATE | 完成时间:归档日志在数据库中产生的完成时间(归档时间)。 |
| BYTES | NUMBER | 字节数:要备份的归档日志文件的大小(字节)。 |
| BLOCKS | NUMBER | 块数:要备份的归档日志文件的块数。 |
| BUFFERS | NUMBER | 缓冲区数:已为此备份操作分配的缓冲区数量。 |
| ELAPSED_SECONDS | NUMBER | 耗时(秒):此备份操作到目前为止所花费的总时间(秒)。 |
| SID | NUMBER | 会话标识符:执行此备份操作的数据库会话的 SID。可与 V$SESSION 关联。 |
| SERIAL# | NUMBER | 会话序列号:会话的序列号。与 SID 一起用于唯一标识会话。 |
4. 相关视图与基表
V$PROXY_DATAFILE:最直接的相关视图。用于监控对数据文件的PROXY COPY操作,其结构与本视图非常相似。V$RMAN_BACKUP_JOB_DETAILS:提供更高层次的 RMAN 作业信息(如作业开始/结束时间、状态、输入/输出字节数)。通过SESSION_RECID和SESSION_STAMP与本视图关联。V$SESSION:通过SID和SERIAL#关联,可以获取执行备份操作的服务器会话的详细信息(如CLIENT_INFO通常会显示 ‘rman’)。V$ARCHIVED_LOG:显示数据库已知的归档日志信息。可以基于THREAD#,SEQUENCE#,RESETLOGS_ID与本视图关联,获取归档日志的详细信息。- 基表 (Underlying Table):
V$PROXY_ARCHIVEDLOG的数据来源于控制文件中的 RMAN 备份元数据。其底层 X表∗∗通常是∗∗‘X表** 通常是 **`X表∗∗通常是∗∗‘XKRCBL` (Kernel Recovery Controller Backup Line) 或类似名称的内部结构,专门用于记录代理备份的详细记录。
5. 底层详细原理与相关知识点
-
PROXY COPY 工作流程:
- RMAN 会话启动,分配
SBT_TAPE通道。 - 发出
BACKUP AS COPY PROXY ARCHIVELOG ...命令。 - RMAN 与媒体管理库(Media Management Library, MML)交互,MML 是第三方备份软件的客户端库。
- MML 指示媒体管理器准备接收数据。
- 关键步骤:RMAN 不是读取文件内容,而是将文件句柄(如
/path/to/archive_log_123.arc)和控制权传递给媒体管理器。 - 媒体管理器直接访问数据库服务器的文件系统(通常通过其自身的代理程序),读取归档日志文件内容,并将其直接写入磁带或其他设备。
- RMAN 定期轮询媒体管理器以获取备份进度(
BYTESprocessed),并更新控制文件中的元数据,V$PROXY_ARCHIVEDLOG视图则反映了这些元数据。 - 备份完成后,媒体管理器将备份句柄(
HANDLE)返回给 RMAN,RMAN 将其记录在控制文件中。
- RMAN 会话启动,分配
-
媒体管理器 (Media Manager) 的角色:
- 这是
PROXY COPY不可或缺的组件。Oracle 本身不提供磁带管理功能。 - 常见的媒体管理器包括:Oracle Secure Backup, Veritas NetBackup, IBM Spectrum Protect (TSM), Commvault 等。
- 必须在数据库服务器上安装并正确配置媒体管理器的客户端(包括 MML 库)。RMAN 通过
SBT_LIBRARY参数定位 MML 库。
- 这是
-
与普通备份的区别:
特性 普通备份 ( BACKUP)代理备份 ( BACKUP PROXY)数据流路径 数据库缓冲區 -> RMAN -> 备份片 存储 -> 媒体管理器 -> 备份设备 DB服务器负载 较高(CPU/内存) 较低(主要是管理开销) 控制文件记录 V$RMAN_BACKUP_TYPE,V$BACKUP_ASYNC_IOV$PROXY_DATAFILE,V$PROXY_ARCHIVEDLOG依赖项 仅RMAN RMAN + 第三方媒体管理软件
6. 常用查询 SQL
1. 监控当前正在进行的归档日志 Proxy 备份
查看哪些日志正在被备份以及实时进度。
SELECT thread#,
sequence#,
status,
-- 计算完成百分比 (这是一个近似值,依赖于媒体管理器的更新)
-- 注意:并非所有媒体管理器都实时更新BYTES,因此百分比可能不准确
ROUND((bytes / (1024*1024)), 2) AS size_mb,
ROUND((elapsed_seconds / 60), 2) AS elapsed_min,
sid,
serial#,
completion_time
FROM v$proxy_archivedlog
WHERE status = 'RUNNING'
ORDER BY completion_time;
2. 查看最近的归档日志 Proxy 备份作业结果
检查最近完成的备份作业是成功还是失败。
SELECT thread#,
sequence#,
status,
ROUND((bytes / (1024*1024)), 2) AS size_mb,
ROUND((elapsed_seconds / 60), 2) AS elapsed_min,
completion_time,
handle
FROM v$proxy_archivedlog
WHERE completion_time > SYSDATE - 1 -- 查看过去24小时内的作业
ORDER BY completion_time DESC;
3. 关联高级别的 RMAN 作业信息
将详细的代理备份记录与父RMAN作业关联,获取整体作业视图。
SELECT
p.thread#,
p.sequence#,
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,
j.input_bytes_total,
j.output_bytes_total
FROM v$proxy_archivedlog 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.sequence#;
4. 诊断失败的 Proxy 备份
查找失败的备份并获取其会话信息,以便进一步排查。
SELECT
p.thread#,
p.sequence#,
p.status,
p.completion_time,
p.sid,
p.serial#,
s.module,
s.action,
s.client_info -- 通常这里会显示 'rman'
FROM v$proxy_archivedlog p
LEFT JOIN v$session s ON (p.sid = s.sid AND p.serial# = s.serial#)
WHERE p.status = 'FAILED'
AND p.completion_time > SYSDATE - 7; -- 查找过去7天内的失败
总结
V$PROXY_ARCHIVEDLOG 视图是管理和监控使用 RMAN PROXY COPY 功能进行归档日志备份的专门工具。它的核心价值在于:
- 提供透明度:使 DBA 能够洞察原本由第三方媒体管理器控制的备份过程,了解备份的状态和进度。
- 辅助性能诊断:通过耗时、文件大小等信息,帮助判断备份效率及瓶颈所在(是数据库端、网络还是磁带设备)。
- 验证和审计:确认重要的归档日志是否已成功备份到离线介质,满足恢复和合规性要求。
- 故障排除:当备份失败时,提供关键的会话和作业标识符,便于与系统管理员或备份管理员协同排查媒体管理器的问题。
对于使用了第三方企业级备份软件(如 NetBackup, TSM)来卸载备份负载的环境,熟练掌握此视图是确保备份策略可靠执行的关键。
欢迎关注我的公众号《IT小Chen》

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



