
好的,我们来对 Oracle 19C 中的 V$PROXY_ARCHIVELOG_SUMMARY 动态性能视图进行一次全面、深入的详解。这个视图是 Oracle Recovery Manager (RMAN) 代理备份监控体系中的聚合摘要视图,用于提供高级别的性能概览。
1. 作用与概述
V$PROXY_ARCHIVELOG_SUMMARY 动态性能视图提供了关于使用 RMAN PROXY COPY 功能备份归档重做日志(Archived Redo Logs)的聚合性能摘要信息。
核心作用:将 V$PROXY_ARCHIVELOG_DETAILS 中的细粒度异步 I/O 操作记录按照特定维度(如按文件、按会话)进行汇总,生成高级别的性能指标。它用于快速评估代理备份作业的整体效率、吞吐量和健康状态,而无需解析大量的详细记录。
关键定位:
V$PROXY_ARCHIVELOG_DETAILS:微观诊断 —— 查看每一次 I/O 请求的细节。V$PROXY_ARCHIVELOG_SUMMARY:宏观评估 —— 快速获取一个文件或一次作业的总体性能画像。
2. 使用场景
- 快速性能评估:在备份完成后,快速查看每个归档日志文件备份的平均吞吐率、总耗时等摘要信息,判断作业整体是否高效。
- 历史性能对比:比较不同时间点、不同备份作业的摘要性能数据,识别性能趋势或回归。
- 容量规划与报告:获取备份数据量的汇总信息,用于存储容量规划或生成合规性报告。
- 快速故障定位:通过摘要信息快速定位哪个文件或哪次会话的备份性能异常,从而缩小深入诊断的范围。
3. 字段含义详解
以下是 V$PROXY_ARCHIVELOG_SUMMARY 视图的主要字段及其含义的详细表格。
| 字段名 | 类型 | 含义详解 |
|---|---|---|
| SESSION_RECID | NUMBER | 会话记录ID:与此摘要信息关联的 RMAN 会话的内部序列号。与 V$RMAN_BACKUP_JOB_DETAILS.RECID 关联,用于连接到作业信息。 |
| SESSION_STAMP | NUMBER | 会话时间戳:与 SESSION_RECID 共同组成主键,唯一标识一次 RMAN 会话。 |
| THREAD# | NUMBER | 重做线程号:此摘要信息所属的归档日志的重做线程编号。如果为 NULL,则表示摘要跨所有线程。 |
| SEQUENCE# | NUMBER | 日志序列号:此摘要信息所属的归档日志的序列号。如果为 NULL,则表示摘要跨多个文件。 |
| IO_COUNT | NUMBER | I/O 操作次数:汇总的异步 I/O 操作的总次数。 |
| BYTES | NUMBER | 总字节数:汇总的所有 I/O 操作传输的数据总字节数。 |
| ELAPSED_TIME | NUMBER | 总耗时(厘秒):核心性能字段。所有被汇总的 I/O 操作花费的总时间(百分之一秒)。 |
| EFFECTIVE_BYTES_PER_SECOND | NUMBER | 有效字节/秒:根据总数据量和总时间计算出的整体有效吞吐率(字节/秒)。BYTES / (ELAPSED_TIME / 100)。 |
| LONG_WAITS | NUMBER | 长等待总次数:所有被汇总的 I/O 操作中长等待发生的总次数。高的值表明目标设备响应缓慢。 |
| SHORT_WAITS | NUMBER | 短等待总次数:所有被汇总的 I/O 操作中短等待发生的总次数。 |
| MIN_ELAPSED_TIME | NUMBER | 最小耗时(厘秒):单个 I/O 操作的最小耗时。 |
| MAX_ELAPSED_TIME | NUMBER | 最大耗时(厘秒):单个 I/O 操作的最大耗时。高的最大值表明存在异常缓慢的操作。 |
| AVG_ELAPSED_TIME | NUMBER | 平均耗时(厘秒):单个 I/O 操作的平均耗时。 |
| DEVICE_TYPE | VARCHAR2(17) | 设备类型:执行 I/O 操作的设备类型。对于 PROXY COPY,此值为 SBT_TAPE。 |
4. 相关视图与基表
V$PROXY_ARCHIVELOG_DETAILS:最直接的相关视图。V$PROXY_ARCHIVELOG_SUMMARY是其数据的聚合和摘要。两者的字段有很强的对应关系。V$PROXY_ARCHIVEDLOG:通过SESSION_RECID,SESSION_STAMP,THREAD#,SEQUENCE#等字段关联,可以获取文件级别的最终状态(COMPLETED/FAILED)。V$RMAN_BACKUP_JOB_DETAILS:提供更高层次的 RMAN 作业信息(如作业开始/结束时间、状态)。通过SESSION_RECID和SESSION_STAMP与本视图关联,获取作业的整体上下文。V$BACKUP_ASYNC_IO:用于监控非代理备份的异步 I/O 性能的视图。其摘要视图是V$BACKUP_ASYNC_IO_SUMMARY。- 基表 (Underlying Table):
V$PROXY_ARCHIVELOG_SUMMARY是一个动态性能视图,其数据并非直接存储在基表中,而是由 Oracle 数据库实时聚合V$PROXY_ARCHIVELOG_DETAILS的底层数据(如X$KRCBADI)而生成的。它是一个“视图的视图”。
5. 底层详细原理与相关知识点
-
数据聚合原理:
- 当查询
V$PROXY_ARCHIVELOG_SUMMARY时,Oracle 会动态地对V$PROXY_ARCHIVELOG_DETAILS的底层数据(X$KRCBADI)执行GROUP BY操作。 - 常见的分组维度包括:
SESSION_RECID, SESSION_STAMP(按作业分组)或SESSION_RECID, SESSION_STAMP, THREAD#, SEQUENCE#(按作业内的文件分组)。 - 聚合函数(如
SUM(BYTES),SUM(ELAPSED_TIME),COUNT(IO_COUNT),MAX(ELAPSED_TIME))被应用于每个分组,生成摘要记录。
- 当查询
-
性能指标的生成:
EFFECTIVE_BYTES_PER_SECOND:这是一个计算字段,其公式为BYTES / (ELAPSED_TIME / 100)。它表示整个聚合单元内的平均吞吐率。注意:ELAPSED_TIME是多个异步 I/O 操作的耗时总和,如果这些操作是并行发生的,这个值可能远大于实际时钟时间,因此计算出的吞吐率可能低于实际设备带宽。MAX_ELAPSED_TIME:这个指标非常重要。一个非常大的MAX_ELAPSED_TIME夹杂在一组正常的耗时中,通常表明有一个单独的 I/O 操作遇到了问题(例如,磁带需要换盘、网络短暂中断),导致了超常的延迟。
-
与代理备份工作流的关系:
- 摘要视图并不改变代理备份的工作流程(RMAN -> 媒体管理器 -> 设备)。它只是在元数据记录和呈现层面提供了一个更高级别的抽象。
- 它使得性能监控变得更加高效。DBA 无需编写复杂的
GROUP BY查询来从V$PROXY_ARCHIVELOG_DETAILS中汇总信息,Oracle 已经通过这个视图提供了常用的汇总维度。
-
使用建议:
- 快速健康检查:使用
V$PROXY_ARCHIVELOG_SUMMARY进行日常监控和快速评估。 - 深入调查:当在摘要视图中发现异常(如极高的
MAX_ELAPSED_TIME或极低的EFFECTIVE_BYTES_PER_SECOND)时,再切换到V$PROXY_ARCHIVELOG_DETAILS视图,使用相同的SESSION_RECID,SESSION_STAMP等条件进行查询,定位导致问题的具体 I/O 操作。
- 快速健康检查:使用
6. 常用查询 SQL
1. 按文件查看最近代理备份的摘要性能
快速获取最近备份中每个文件的性能概况。
SELECT thread#,
sequence#,
io_count,
ROUND(bytes / (1024*1024), 2) AS total_mb,
ROUND(elapsed_time / 100, 2) AS total_io_sec,
ROUND(effective_bytes_per_second / (1024*1024), 2) AS avg_mb_per_sec,
long_waits,
ROUND(max_elapsed_time / 100, 2) AS max_io_sec -- 查看最慢的单次IO
FROM v$proxy_archivelog_summary
WHERE session_stamp = (SELECT MAX(session_stamp) FROM v$proxy_archivelog_summary) -- 最近会话
ORDER BY thread#, sequence#;
2. 按会话查看历史作业的聚合性能
比较不同备份作业的整体效率。
SELECT s.session_recid,
s.session_stamp,
j.start_time,
j.end_time,
SUM(s.io_count) AS total_io_ops,
ROUND(SUM(s.bytes) / (1024*1024), 2) AS total_mb,
ROUND(SUM(s.elapsed_time) / 100, 2) AS total_io_time_sec,
ROUND(SUM(s.bytes) / (SUM(s.elapsed_time) / 100) / (1024*1024), 2) AS overall_mb_per_sec
FROM v$proxy_archivelog_summary s
JOIN v$rman_backup_job_details j ON (s.session_recid = j.recid AND s.session_stamp = j.stamp)
WHERE j.start_time > SYSDATE - 7 -- 过去7天
GROUP BY s.session_recid, s.session_stamp, j.start_time, j.end_time
ORDER BY j.start_time DESC;
3. 查找性能异常的文件(耗时过长或吞吐率过低)
快速筛查出备份过程中可能存在问题的文件。
SELECT thread#,
sequence#,
session_recid,
session_stamp,
ROUND(bytes / (1024*1024), 2) AS file_size_mb,
ROUND(elapsed_time / 100, 2) AS total_io_sec,
ROUND(effective_bytes_per_second / (1024*1024), 2) AS avg_mb_per_sec,
ROUND(max_elapsed_time / 100, 2) AS max_io_sec, -- 突出显示异常值
long_waits
FROM v$proxy_archivelog_summary
WHERE elapsed_time > 10000 -- 总IO时间大于100秒
OR effective_bytes_per_second < 5 * 1024 * 1024 -- 平均速率低于5MB/s
OR max_elapsed_time > 5000 -- 存在单次IO操作耗时超过50秒
ORDER BY max_elapsed_time DESC;
4. 计算代理备份的整体效率
评估代理备份机制在整个作业中的平均表现。
SELECT
ROUND(SUM(bytes) / (1024*1024*1024), 2) AS total_gb,
ROUND(SUM(elapsed_time) / 100 / 60, 2) AS total_io_minutes,
ROUND(SUM(bytes) / (SUM(elapsed_time) / 100) / (1024*1024), 2) AS overall_avg_mb_per_sec,
SUM(long_waits) AS total_long_waits,
ROUND(SUM(long_waits) / SUM(io_count) * 100, 2) AS pct_long_waits -- 长等待比例
FROM v$proxy_archivelog_summary
WHERE session_stamp = &target_session_stamp; -- 替换为具体的会话标记
总结
V$PROXY_ARCHIVELOG_SUMMARY 视图是 Oracle RMAN 代理备份监控体系中的仪表盘和报告中心。它的核心价值在于:
- 提供性能快照:通过预聚合的指标,快速呈现备份作业或单个文件的整体性能状态,极大提升了监控效率。
- 辅助趋势分析:简化的数据结构使得跨时间、跨作业的性能比较变得非常容易,有助于识别长期趋势。
- 智能告警与筛选:通过摘要信息中的最大值(
MAX_ELAPSED_TIME)、平均值(EFFECTIVE_BYTES_PER_SECOND)和异常计数(LONG_WAITS),可以快速筛选出需要进一步深入调查的潜在问题点。 - 简化报表生成:为容量规划、性能报告和合规性审计提供了易于使用的数据源。
对于负责维护大型备份环境的 DBA 而言,熟练使用 V$PROXY_ARCHIVELOG_SUMMARY 视图,结合 V$PROXY_ARCHIVEDLOG 和 V$PROXY_ARCHIVELOG_DETAILS,可以构建一个从宏观到微观的完整、高效的备份监控和诊断体系,确保备份任务高效、可靠地完成。
欢迎关注我的公众号《IT小Chen》

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



