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

在这里插入图片描述在Oracle 19C数据库中,V$RMAN_BACKUP_SUBJOB_DETAILS 视图是管理和监控RMAN(Recovery Manager)备份作业,特别是并行备份中各个子任务的关键工具。它帮助你深入了解备份作业的细节和性能表现。

📊 V$RMAN_BACKUP_SUBJOB_DETAILS 视图字段详解

V$RMAN_BACKUP_SUBJOB_DETAILS 提供了RMAN备份作业中各个子作业的详细信息。当RMAN使用并行方式执行备份(例如分配了多个通道)时,一个备份主作业(在 V$RMAN_BACKUP_JOB_DETAILS 中查看)会被分解成多个子作业并行执行。此视图主要包含每个子作业的元数据、状态、时间信息、数据量统计和性能指标。

以下是该视图主要字段的详细说明(注意:不同Oracle版本字段可能略有差异):

字段名数据类型含义与说明
SESSION_KEYNUMBER主备份作业的会话标识符。与 V$RMAN_BACKUP_JOB_DETAILS 中的 SESSION_KEY 关联,用于将子作业与其父作业对应起来。
SESSION_RECIDNUMBER与会话相关的序列号(RECID)。与 SESSION_STAMP 共同作为备份作业的唯一标识符之一。
SESSION_STAMPNUMBER与会话相关的时间戳(STAMP)。与 SESSION_RECID 共同作为备份作业的唯一标识符之一。
SUBJOB_IDNUMBER子作业的唯一标识符。在同一主作业(SESSION_KEY)内唯一标识一个子作业。
START_TIMEDATE子作业开始执行的时间
END_TIMEDATE子作业结束执行的时间
ELAPSED_SECONDSNUMBER子作业运行的总耗时(秒)
TIME_TAKEN_DISPLAYVARCHAR2(4000)子作业总耗时的可读格式显示(例如:00:05:23)。
STATUSVARCHAR2(23)子作业的最终状态。常见值:
COMPLETED: 成功完成。
FAILED: 失败。
RUNNING: 正在运行(但此视图通常存储已完成作业)。
COMPLETED WITH WARNINGS: 完成但有警告。
INPUT_BYTESNUMBER该子作业读取的总字节数
OUTPUT_BYTESNUMBER该子作业写入的总字节数(即生成的备份片大小)。
INPUT_BYTES_PER_SECNUMBER该子作业平均每秒读取的字节数
OUTPUT_BYTES_PER_SECNUMBER该子作业平均每秒写入的字节数。反映该通道的备份吞吐速率。
INPUT_BYTES_DISPLAYVARCHAR2(4000)以更易读格式显示的输入字节数(如 1.5G)。
OUTPUT_BYTES_DISPLAYVARCHAR2(4000)以更易读格式显示的输出字节数(如 450M)。
INPUT_BYTES_PER_SEC_DISPLAYVARCHAR2(4000)以更易读格式显示的每秒输入字节数(如 102.4M)。
OUTPUT_BYTES_PER_SEC_DISPLAYVARCHAR2(4000)以更易读格式显示的每秒输出字节数(如 30.5M)。
DEVICE_TYPEVARCHAR2(17)子作业使用的设备类型。例如:
DISK: 备份到磁盘。
SBT_TAPE: 备份到磁带。
CON_IDNUMBER容器ID。在多租户环境(CDB)中,标识该行数据所属的容器。对于RMAN作业,通常为0(整个CDB)或1(根容器)。

⚙️ 主要作用与使用场景

  • 作用V$RMAN_BACKUP_SUBJOB_DETAILS 视图主要用于监控和诊断RMAN并行备份中各个子作业(通常对应单个通道)的详细执行情况。它提供了比父作业视图 (V$RMAN_BACKUP_JOB_DETAILS) 更细粒度的信息。
  • 使用场景
    • 并行备份性能分析:当使用并行备份(分配多个通道)时,通过此视图可以分析每个通道(子作业)的负载是否均衡。如果某些子作业耗时远大于 others,可能存在性能瓶颈。
    • 细粒度故障诊断:如果父作业状态为 FAILEDCOMPLETED WITH ERRORS,查询此视图可以精确定位到是哪个具体的子作业(通道)失败了,从而缩小排查范围。
    • 吞吐量监控:通过 OUTPUT_BYTES_PER_SEC_DISPLAY 等字段,监控每个通道的备份速率,评估硬件(如磁盘I/O、网络带宽)性能。
    • 资源消耗评估:了解每个子作业处理的数据量 (INPUT_BYTES, OUTPUT_BYTES),有助于优化后续备份策略(如通道数量、文件分布)。

🔍 相关视图

V$RMAN_BACKUP_SUBJOB_DETAILS 通常与其他RMAN监控视图结合使用:

  • V$RMAN_BACKUP_JOB_DETAILS:这是最重要的相关视图,提供了父作业的摘要信息。通过 SESSION_KEY 字段进行关联。
  • V$RMAN_OUTPUT:包含RMAN作业的详细消息和错误日志。通过 SESSION_KEYSESSION_STAMP 关联,可以查看子作业相关的详细输出。
  • V$SESSION_LONGOPS:用于监控正在运行的长时间操作,包括RMAN备份作业的实时进度。
  • V$BACKUP_ASYNC_IO / V$BACKUP_SYNC_IO:提供备份I/O操作的性能统计信息,可用于更深入的I/O分析。
  • GV$RMAN_BACKUP_SUBJOB_DETAILS:在RAC环境中,显示所有实例上的子作业信息。

📋 常用查询 SQL

  1. 查看最近父作业的所有子作业详细信息
    此查询可查看特定父作业下所有子作业的执行情况。
SELECT SUBJOB_ID, STATUS, DEVICE_TYPE,
       START_TIME, END_TIME, TIME_TAKEN_DISPLAY,
       INPUT_BYTES_DISPLAY, OUTPUT_BYTES_DISPLAY,
       OUTPUT_BYTES_PER_SEC_DISPLAY AS RATE
FROM V$RMAN_BACKUP_SUBJOB_DETAILS
WHERE SESSION_KEY = &parent_session_key -- 替换为父作业的SESSION_KEY
ORDER BY SUBJOB_ID;
  1. 查找失败子作业及其父作业信息
    当备份失败时,此查询可快速定位失败的子作业。
SELECT p.SESSION_KEY as PARENT_SESSION_KEY, p.INPUT_TYPE, p.STATUS as PARENT_STATUS,
       s.SUBJOB_ID, s.STATUS as SUBJOB_STATUS, s.START_TIME, s.END_TIME,
       s.INPUT_BYTES_DISPLAY, s.OUTPUT_BYTES_DISPLAY
FROM V$RMAN_BACKUP_JOB_DETAILS p
JOIN V$RMAN_BACKUP_SUBJOB_DETAILS s ON (p.SESSION_KEY = s.SESSION_KEY)
WHERE s.STATUS = 'FAILED'
ORDER BY s.START_TIME DESC;
  1. 分析并行备份中各子作业的负载均衡情况
    评估并行备份中各个通道的工作量是否均衡。
SELECT SESSION_KEY, SUBJOB_ID,
       INPUT_BYTES_DISPLAY, OUTPUT_BYTES_DISPLAY,
       ELAPSED_SECONDS,
       ROUND(INPUT_BYTES / 1024 / 1024 / NULLIF(ELAPSED_SECONDS, 0), 2) AS INPUT_MB_PER_SEC,
       ROUND(OUTPUT_BYTES / 1024 / 1024 / NULLIF(ELAPSED_SECONDS, 0), 2) AS OUTPUT_MB_PER_SEC
FROM V$RMAN_BACKUP_SUBJOB_DETAILS
WHERE SESSION_KEY = &parent_session_key -- 替换为父作业的SESSION_KEY
ORDER BY INPUT_BYTES DESC;
  1. 综合查询:父作业摘要及其子作业列表
SELECT p.SESSION_KEY, p.INPUT_TYPE, p.STATUS as JOB_STATUS,
       p.START_TIME as JOB_START, p.END_TIME as JOB_END,
       p.TIME_TAKEN_DISPLAY as JOB_DURATION,
       COUNT(s.SUBJOB_ID) as SUBJOB_COUNT,
       MIN(s.START_TIME) as FIRST_SUBJOB_START,
       MAX(s.END_TIME) as LAST_SUBJOB_END
FROM V$RMAN_BACKUP_JOB_DETAILS p
LEFT JOIN V$RMAN_BACKUP_SUBJOB_DETAILS s ON (p.SESSION_KEY = s.SESSION_KEY)
WHERE p.START_TIME > SYSDATE - 7 -- 最近7天的作业
GROUP BY p.SESSION_KEY, p.INPUT_TYPE, p.STATUS, p.START_TIME, p.END_TIME, p.TIME_TAKEN_DISPLAY
ORDER BY p.START_TIME DESC;

⚙️ 底层原理与相关知识点

1. RMAN 并行备份架构:
当RMAN命令(如 BACKUP DATABASE)被执行,且分配了多个通道(ALLOCATE CHANNELCONFIGURE CHANNEL)时,RMAN会采用并行处理。

  • 主作业 (Parent Job):整个备份命令被视为一个主作业,其元数据存储在 V$RMAN_BACKUP_JOB_DETAILS 中。
  • 子作业 (Subjob):每个通道通常会独立处理一部分备份任务(如备份特定的数据文件或文件集),每个通道的活动就对应一个子作业,其详细信息存储在 V$RMAN_BACKUP_SUBJOB_DETAILS 中。
  • 工作分配:RMAN尽可能均衡地将需要备份的文件分配给各个通道,以实现并行加速。

2. 数据流向与统计:
子作业的过程可简化为:读取数据文件 -> (可选:压缩/加密) -> 写入备份片INPUT_BYTES 是读取的原始数据量,OUTPUT_BYTES 是最终写入备份片的大小,两者的比值可以反映压缩效果。

3. 视图数据来源:
V$RMAN_BACKUP_SUBJOB_DETAILSV$RMAN_BACKUP_JOB_DETAILS 一样,其数据主要来源于控制文件(Control File)。RMAN执行过程中会实时更新控制文件中的元数据和统计信息。当控制文件中的记录被循环覆盖后,相应的记录也会从该视图中消失。

💎 总结

V$RMAN_BACKUP_SUBJOB_DETAILS 视图是优化和诊断RMAN并行备份操作的得力助手。它提供了比作业摘要视图更精细的视角,使你能够:

  • 深入并行备份内部:监控每个通道(子作业)的状态、进度和性能。
  • 精准定位问题:当备份失败时,快速定位到出问题的具体通道。
  • 评估效率与均衡:分析备份吞吐率,检查负载是否均衡,从而优化通道配置和备份策略。

通常,你会先通过 V$RMAN_BACKUP_JOB_DETAILS 找到感兴趣的父作业,再利用本视图深入分析其下属的各个子作业。

欢迎关注我的公众号《IT小Chen

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值