面试宝典:介绍下Oracle数据库动态性能视图 V$BACKUP_SET_DETAILS

在这里插入图片描述
好的,我们来对 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. 使用场景

  1. 备份作业性能调优
    当一个大型数据库备份耗时远超预期时,DBA 可以查询此视图,计算平均读取和写入速率(MB/s),判断瓶颈是源存储读取慢、网络延迟(对于异地备份)还是目标存储写入慢。

  2. 资源争用调查
    如果备份期间数据库整体性能下降,可以通过此视图检查备份作业产生的 I/O 总量和速率,评估其对系统 I/O 子系统造成的压力。

  3. 并行备份效果评估
    查看与并行度相关的字段,确认配置的 PARALLELISM 是否真的有效,以及多个通道的工作负载是否均衡。

  4. 压缩/加密开销分析
    比较压缩/加密备份与未压缩/加密备份的 CPU_USEDELAPSED_SECONDS 等字段,量化计算/压缩操作带来的额外开销。


3. 字段详细含义 (基于常见实现)

以下是 V$BACKUP_SET_DETAILS 视图中可能包含的字段及其解释。请注意,这些字段并非官方文档定义,而是根据常见环境总结而来

字段名 (可能)数据类型含义说明 (推断和常见用途)
SET_STAMPNUMBER备份集唯一标识符的一部分。与 V$BACKUP_SET 中的含义相同,用于关联。
SET_COUNTNUMBER备份集唯一标识符的另一部分。与 SET_STAMP 共同唯一标识一个备份集。
DEVICE_TYPEVARCHAR2创建备份集所使用的设备类型DISKSBT_TAPE)。
BYTESNUMBER备份集的总大小(字节)
READ_RATENUMBER备份过程中的平均数据读取速率(单位通常是:字节/秒)。用于衡量从源数据文件/归档日志读取的速度。
WRITE_RATENUMBER备份过程中的平均数据写入速率(单位通常是:字节/秒)。用于衡量向备份片(磁盘/磁带)写入的速度。
CPU_USEDNUMBER备份作业消耗的 CPU 时间(单位可能是秒或毫秒)。高值可能表示压缩或加密操作计算密集型。
ELAPSED_SECONDSNUMBER创建整个备份集所花费的总时间(秒)
EFFECTIVE_BYTES_PER_SECONDNUMBER整体有效吞吐率(字节/秒)。综合考虑了读取、处理(压缩)和写入的速率。
OPTIMIZEDVARCHAR2指示备份是否使用了优化功能(如增量备份的块更改跟踪)。
MULTISECTIONVARCHAR2指示是否使用了多段备份SECTION SIZE)。
PARALLEL_DEGREENUMBER执行备份时使用的并行度
BUFFER_SIZENUMBERRMAN 用于备份操作的缓冲区大小(字节)。
BUFFER_COUNTNUMBER使用的缓冲区数量
IO_COUNTNUMBER执行的 I/O 操作总次数
IO_BYTESNUMBER所有 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. 相关底层原理

  1. 数据收集
    当 RMAN 通道进程执行备份时,它不仅仅是将数据从源复制到目标。它还会在 SGA 的一个专门区域中详细记录其操作,包括:

    • 读取的字节数和次数
    • 写入的字节数和次数
    • 消耗的 CPU 时间
    • 遇到的等待事件
    • 缓冲区分配和使用情况
  2. 数据聚合
    V$BACKUP_SET_DETAILS 视图很可能是一个聚合视图。它获取来自 V$BACKUP_ASYNC_IO/V$BACKUP_SYNC_IO 等底层视图的原始、细粒度的 I/O 数据,然后按备份集(SET_STAMP, SET_COUNT)进行汇总和计算,生成诸如平均速率、总 CPU 时间等高级指标。

  3. 控制文件持久化
    这些性能指标可能不会像基本元数据那样长期持久化在控制文件中。它们可能主要存在于内存中,并在实例重启后丢失。其目的是为了实时或近实时的性能诊断,而不是历史记录跟踪。(历史性能跟踪更推荐使用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值