
好的,我们来对 Oracle 19C 数据库中的 V$BACKUP_SET_DETAILS 动态性能视图进行一次全面、深入的解析。
需要特别注意:V$BACKUP_SET_DETAILS 并不是一个标准的、文档化的动态性能视图。在官方文档中,你可能找不到它的详细描述。它更像是一个内部使用的视图,其存在、结构和行为在不同 Oracle 版本中可能发生变化,且不受官方支持保证。
然而,在实际的 Oracle 19C 环境中,这个视图通常是存在的,并且提供了比 V$BACKUP_SET 更为详细的、与性能相关的指标。它主要用于高级性能诊断和备份过程的深入分析。
1. 视图概述与核心作用
V$BACKUP_SET_DETAILS 视图旨在提供关于备份集(Backup Set)创建过程的详细性能统计信息和底层操作细节。它扩展了 V$BACKUP_SET 视图,包含了每个备份集在 I/O 操作层面的数据。
核心作用可以概括为:
- 性能分析:提供备份作业的详细性能指标,如读取速率、写入速率、缓冲区使用情况等,用于定位备份速度瓶颈(是读取慢?还是写入慢?)。
- 资源消耗监控:揭示备份过程中系统资源的消耗细节,例如 CPU 使用率、并行度、以及 I/O 等待事件。
- 高级诊断:当备份作业出现性能问题或异常时,此视图提供的数据远超
V$BACKUP_SET,有助于进行根因分析。 - 优化验证:验证 RMAN 优化功能(如多段备份、压缩、加密)的实际效果。
重要警告:由于此视图的非标准性,切勿在关键任务或生产环境中严重依赖其结构进行自动化脚本开发。它的主要用途是供 DBA 进行交互式、手动的深度诊断。
2. 使用场景
-
备份作业性能调优:
当一个大型数据库备份耗时远超预期时,DBA 可以查询此视图,计算平均读取和写入速率(MB/s),判断瓶颈是源存储读取慢、网络延迟(对于异地备份)还是目标存储写入慢。 -
资源争用调查:
如果备份期间数据库整体性能下降,可以通过此视图检查备份作业产生的 I/O 总量和速率,评估其对系统 I/O 子系统造成的压力。 -
并行备份效果评估:
查看与并行度相关的字段,确认配置的PARALLELISM是否真的有效,以及多个通道的工作负载是否均衡。 -
压缩/加密开销分析:
比较压缩/加密备份与未压缩/加密备份的CPU_USED和ELAPSED_SECONDS等字段,量化计算/压缩操作带来的额外开销。
3. 字段详细含义 (基于常见实现)
以下是 V$BACKUP_SET_DETAILS 视图中可能包含的字段及其解释。请注意,这些字段并非官方文档定义,而是根据常见环境总结而来:
| 字段名 (可能) | 数据类型 | 含义说明 (推断和常见用途) |
|---|---|---|
| SET_STAMP | NUMBER | 备份集唯一标识符的一部分。与 V$BACKUP_SET 中的含义相同,用于关联。 |
| SET_COUNT | NUMBER | 备份集唯一标识符的另一部分。与 SET_STAMP 共同唯一标识一个备份集。 |
| DEVICE_TYPE | VARCHAR2 | 创建备份集所使用的设备类型(DISK 或 SBT_TAPE)。 |
| BYTES | NUMBER | 备份集的总大小(字节)。 |
| READ_RATE | NUMBER | 备份过程中的平均数据读取速率(单位通常是:字节/秒)。用于衡量从源数据文件/归档日志读取的速度。 |
| WRITE_RATE | NUMBER | 备份过程中的平均数据写入速率(单位通常是:字节/秒)。用于衡量向备份片(磁盘/磁带)写入的速度。 |
| CPU_USED | NUMBER | 备份作业消耗的 CPU 时间(单位可能是秒或毫秒)。高值可能表示压缩或加密操作计算密集型。 |
| ELAPSED_SECONDS | NUMBER | 创建整个备份集所花费的总时间(秒)。 |
| EFFECTIVE_BYTES_PER_SECOND | NUMBER | 整体有效吞吐率(字节/秒)。综合考虑了读取、处理(压缩)和写入的速率。 |
| OPTIMIZED | VARCHAR2 | 指示备份是否使用了优化功能(如增量备份的块更改跟踪)。 |
| MULTISECTION | VARCHAR2 | 指示是否使用了多段备份(SECTION SIZE)。 |
| PARALLEL_DEGREE | NUMBER | 执行备份时使用的并行度。 |
| BUFFER_SIZE | NUMBER | RMAN 用于备份操作的缓冲区大小(字节)。 |
| BUFFER_COUNT | NUMBER | 使用的缓冲区数量。 |
| IO_COUNT | NUMBER | 执行的 I/O 操作总次数。 |
| IO_BYTES | NUMBER | 所有 I/O 操作传输的总字节数。 |
4. 相关视图与基表
-
相关动态性能视图:
V$BACKUP_SET:这是V$BACKUP_SET_DETAILS信息的主要来源和关联对象。所有备份集的基本元数据都来自这里。V$BACKUP_ASYNC_IO/V$BACKUP_SYNC_IO:这两个视图提供了最详细、最权威的 I/O 性能统计信息,粒度可以到每个单独的文件和每个 I/O 操作。V$BACKUP_SET_DETAILS中的许多聚合数据很可能源自这些视图。V$RMAN_BACKUP_JOB_DETAILS:提供 RMAN 作业级别的高级摘要信息,如状态、开始/结束时间、输入/输出字节等。它与V$BACKUP_SET_DETAILS的粒度不同(作业 vs 备份集)。V$BACKUP_FILES(19c+):一个更现代的视图,统一了备份集、备份片和镜像拷贝的信息。
-
**底层基表(X表)∗∗:与‘V表)**: 与 `V表)∗∗:与‘VBACKUP_SET
类似,VBACKUPSETDETAILS‘的数据最终来源于控制文件的内存结构。它很可能基于一个或多个存放详细性能指标的内部XBACKUP_SET_DETAILS` 的数据最终来源于控制文件的内存结构。它很可能基于一个或多个存放详细性能指标的内部 XBACKUPSETDETAILS‘的数据最终来源于控制文件的内存结构。它很可能基于一个或多个存放详细性能指标的内部X 表,例如:X$KCCBS或类似的变体,用于存储备份集的扩展统计信息。
再次强调:这些 X$ 表是未公开的、不受支持的,绝对禁止直接查询。
5. 相关底层原理
-
数据收集:
当 RMAN 通道进程执行备份时,它不仅仅是将数据从源复制到目标。它还会在 SGA 的一个专门区域中详细记录其操作,包括:- 读取的字节数和次数
- 写入的字节数和次数
- 消耗的 CPU 时间
- 遇到的等待事件
- 缓冲区分配和使用情况
-
数据聚合:
V$BACKUP_SET_DETAILS视图很可能是一个聚合视图。它获取来自V$BACKUP_ASYNC_IO/V$BACKUP_SYNC_IO等底层视图的原始、细粒度的 I/O 数据,然后按备份集(SET_STAMP,SET_COUNT)进行汇总和计算,生成诸如平均速率、总 CPU 时间等高级指标。 -
控制文件持久化:
这些性能指标可能不会像基本元数据那样长期持久化在控制文件中。它们可能主要存在于内存中,并在实例重启后丢失。其目的是为了实时或近实时的性能诊断,而不是历史记录跟踪。(历史性能跟踪更推荐使用V$RMAN_BACKUP_JOB_DETAILS或查询 AWR 报告)。
6. 相关知识点介绍
- RMAN 性能瓶颈分析:理解备份过程的三个阶段:读取(Source)、处理(CPU - 压缩/加密)、写入(Destination)。
V$BACKUP_SET_DETAILS的指标帮助定位在哪个阶段出现了瓶颈。 - 异步 I/O vs 同步 I/O:RMAN 尽可能使用异步 I/O 来最大化吞吐量。
V$BACKUP_ASYNC_IO是分析此问题的主要视图。 - RMAN 优化特性:
- 多段备份(Multisection Backup):允许单个大型数据文件由多个通道并行备份,极大提升大文件的备份速度。
- 压缩(Compression):减少备份大小,但会增加 CPU 开销。
CPU_USED字段可以体现这一点。 - 加密(Encryption):同样会增加 CPU 开销。
- 块更改跟踪(Block Change Tracking):优化增量备份,
OPTIMIZED字段会反映这一点。
7. 常用查询 SQL (仅供参考,结构可能变化)
1. 查看备份集的详细性能指标:
SELECT set_stamp, set_count, device_type,
ROUND(bytes / 1024 / 1024 / 1024, 2) AS size_gb,
ROUND(elapsed_seconds / 60, 2) AS elapsed_min,
-- 计算平均读写速率 (MB/s)
ROUND((bytes / elapsed_seconds) / 1024 / 1024, 2) AS avg_throughput_mbs,
ROUND(read_rate / 1024 / 1024, 2) AS avg_read_rate_mbs,
ROUND(write_rate / 1024 / 1024, 2) AS avg_write_rate_mbs,
cpu_used,
parallel_degree,
optimized
FROM v$backup_set_details
ORDER BY set_stamp DESC, set_count DESC;
2. 比较不同备份集的效率:
SELECT device_type,
optimized,
COUNT(*) AS sets,
ROUND(AVG(bytes / 1024 / 1024 / 1024), 2) AS avg_size_gb,
ROUND(AVG((bytes / elapsed_seconds) / 1024 / 1024), 2) AS avg_throughput_mbs,
ROUND(AVG(cpu_used), 2) AS avg_cpu_used
FROM v$backup_set_details
WHERE elapsed_seconds > 0 -- 避免除零错误
GROUP BY device_type, optimized;
3. 识别最耗时的备份集(性能瓶颈调查):
SELECT set_stamp, set_count, device_type,
elapsed_seconds,
ROUND(bytes / 1024 / 1024 / 1024, 2) AS size_gb,
ROUND((bytes / elapsed_seconds) / 1024 / 1024, 2) AS avg_throughput_mbs
FROM v$backup_set_details
ORDER BY elapsed_seconds DESC;
重要提示:在执行这些查询前,请务必在你的特定 Oracle 19C 环境中使用 DESCRIBE V$BACKUP_SET_DETAILS 来确认该视图确实存在以及确切的字段名称,并根据实际情况调整查询语句。
欢迎关注我的公众号《IT小Chen》
1940

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



