在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_KEY | NUMBER | 主备份作业的会话标识符。与 V$RMAN_BACKUP_JOB_DETAILS 中的 SESSION_KEY 关联,用于将子作业与其父作业对应起来。 |
| SESSION_RECID | NUMBER | 与会话相关的序列号(RECID)。与 SESSION_STAMP 共同作为备份作业的唯一标识符之一。 |
| SESSION_STAMP | NUMBER | 与会话相关的时间戳(STAMP)。与 SESSION_RECID 共同作为备份作业的唯一标识符之一。 |
| SUBJOB_ID | NUMBER | 子作业的唯一标识符。在同一主作业(SESSION_KEY)内唯一标识一个子作业。 |
| START_TIME | DATE | 子作业开始执行的时间。 |
| END_TIME | DATE | 子作业结束执行的时间。 |
| ELAPSED_SECONDS | NUMBER | 子作业运行的总耗时(秒)。 |
| TIME_TAKEN_DISPLAY | VARCHAR2(4000) | 子作业总耗时的可读格式显示(例如:00:05:23)。 |
| STATUS | VARCHAR2(23) | 子作业的最终状态。常见值: • COMPLETED: 成功完成。• FAILED: 失败。• RUNNING: 正在运行(但此视图通常存储已完成作业)。• COMPLETED WITH WARNINGS: 完成但有警告。 |
| INPUT_BYTES | NUMBER | 该子作业读取的总字节数。 |
| OUTPUT_BYTES | NUMBER | 该子作业写入的总字节数(即生成的备份片大小)。 |
| INPUT_BYTES_PER_SEC | NUMBER | 该子作业平均每秒读取的字节数。 |
| OUTPUT_BYTES_PER_SEC | NUMBER | 该子作业平均每秒写入的字节数。反映该通道的备份吞吐速率。 |
| INPUT_BYTES_DISPLAY | VARCHAR2(4000) | 以更易读格式显示的输入字节数(如 1.5G)。 |
| OUTPUT_BYTES_DISPLAY | VARCHAR2(4000) | 以更易读格式显示的输出字节数(如 450M)。 |
| INPUT_BYTES_PER_SEC_DISPLAY | VARCHAR2(4000) | 以更易读格式显示的每秒输入字节数(如 102.4M)。 |
| OUTPUT_BYTES_PER_SEC_DISPLAY | VARCHAR2(4000) | 以更易读格式显示的每秒输出字节数(如 30.5M)。 |
| DEVICE_TYPE | VARCHAR2(17) | 子作业使用的设备类型。例如: • DISK: 备份到磁盘。• SBT_TAPE: 备份到磁带。 |
| CON_ID | NUMBER | 容器ID。在多租户环境(CDB)中,标识该行数据所属的容器。对于RMAN作业,通常为0(整个CDB)或1(根容器)。 |
⚙️ 主要作用与使用场景
- 作用:
V$RMAN_BACKUP_SUBJOB_DETAILS视图主要用于监控和诊断RMAN并行备份中各个子作业(通常对应单个通道)的详细执行情况。它提供了比父作业视图 (V$RMAN_BACKUP_JOB_DETAILS) 更细粒度的信息。 - 使用场景:
- 并行备份性能分析:当使用并行备份(分配多个通道)时,通过此视图可以分析每个通道(子作业)的负载是否均衡。如果某些子作业耗时远大于 others,可能存在性能瓶颈。
- 细粒度故障诊断:如果父作业状态为
FAILED或COMPLETED 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_KEY和SESSION_STAMP关联,可以查看子作业相关的详细输出。V$SESSION_LONGOPS:用于监控正在运行的长时间操作,包括RMAN备份作业的实时进度。V$BACKUP_ASYNC_IO/V$BACKUP_SYNC_IO:提供备份I/O操作的性能统计信息,可用于更深入的I/O分析。GV$RMAN_BACKUP_SUBJOB_DETAILS:在RAC环境中,显示所有实例上的子作业信息。
📋 常用查询 SQL
- 查看最近父作业的所有子作业详细信息
此查询可查看特定父作业下所有子作业的执行情况。
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;
- 查找失败子作业及其父作业信息
当备份失败时,此查询可快速定位失败的子作业。
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;
- 分析并行备份中各子作业的负载均衡情况
评估并行备份中各个通道的工作量是否均衡。
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;
- 综合查询:父作业摘要及其子作业列表
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 CHANNEL 或 CONFIGURE 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_DETAILS 和 V$RMAN_BACKUP_JOB_DETAILS 一样,其数据主要来源于控制文件(Control File)。RMAN执行过程中会实时更新控制文件中的元数据和统计信息。当控制文件中的记录被循环覆盖后,相应的记录也会从该视图中消失。
💎 总结
V$RMAN_BACKUP_SUBJOB_DETAILS 视图是优化和诊断RMAN并行备份操作的得力助手。它提供了比作业摘要视图更精细的视角,使你能够:
- 深入并行备份内部:监控每个通道(子作业)的状态、进度和性能。
- 精准定位问题:当备份失败时,快速定位到出问题的具体通道。
- 评估效率与均衡:分析备份吞吐率,检查负载是否均衡,从而优化通道配置和备份策略。
通常,你会先通过 V$RMAN_BACKUP_JOB_DETAILS 找到感兴趣的父作业,再利用本视图深入分析其下属的各个子作业。
欢迎关注我的公众号《IT小Chen》

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



