
以下是针对 Oracle 19c 中 V$BACKUP_ASYNC_IO 动态性能视图的全面解析,涵盖作用、使用场景、字段含义、关联视图、底层原理及常用 SQL。
1. 视图作用
V$BACKUP_ASYNC_IO 监控 RMAN 备份/恢复中的异步 I/O 操作,提供以下核心功能:
- ⚡ 实时跟踪异步 I/O 性能指标(吞吐量、等待时间、效率)
- 🔍 诊断备份/恢复性能瓶颈(如 I/O 子系统延迟)
- 📊 分析 RMAN 通道的 I/O 负载均衡情况
- 🛠️ 验证异步 I/O 配置有效性(如
DISK_ASYNCH_IO参数)
✅ 关键特性:仅显示 活动中的异步 I/O 操作,完成后数据自动清除。
2. 使用场景
- 性能调优:识别备份恢复速度慢的根源(I/O vs CPU 瓶颈)
- 资源监控:实时观察 RMAN 通道的 I/O 负载
- 故障诊断:检测 I/O 错误(如
STATUS='FAILED') - 容量规划:根据 I/O 吞吐量调整存储配置
3. 字段详解(Oracle 19c)
| 字段名 | 数据类型 | 描述 |
|---|---|---|
SID | NUMBER | 发起 I/O 的会话 ID |
SERIAL# | NUMBER | 会话序列号(与 SID 共同唯一标识会话) |
TYPE | VARCHAR2(13) | I/O 类型:BACKUP(备份)/RESTORE(恢复)/VALIDATE(验证) |
STATUS | VARCHAR2(8) | 操作状态:IN PROGRESS/FINISHED/FAILED |
DEVICE_TYPE | VARCHAR2(17) | 设备类型:DISK/SBT_TAPE(磁带) |
FILENAME | VARCHAR2(513) | 当前操作的文件全路径 |
OPEN_TIME | DATE | I/O 操作开始时间 |
CLOSE_TIME | DATE | I/O 操作结束时间(完成时更新) |
ELAPSED_TIME | NUMBER | 总耗时(秒) |
EFFECTIVE_BYTES_PER_SECOND | NUMBER | 实际 I/O 吞吐量(字节/秒) |
IO_COUNT | NUMBER | 已完成的 I/O 请求次数 |
READY | NUMBER | 异步队列中就绪的 I/O 请求数 |
SHORT_WAITS | NUMBER | 短等待次数(非阻塞等待) |
LONG_WAITS | NUMBER | 关键指标:长等待次数(阻塞等待,反映 I/O 延迟) |
BYTES | NUMBER | 已传输的总字节数 |
BUFFER_SIZE | NUMBER | 单次 I/O 缓冲区大小(字节) |
BUFFER_COUNT | NUMBER | 缓冲区数量 |
ASYNC | VARCHAR2(3) | 是否启用异步 I/O:YES/NO |
IO_TYPE | VARCHAR2(10) | I/O 方向:READ(读)/WRITE(写) |
📌 关键字段解析:
LONG_WAITS:值过高表明 I/O 子系统响应慢(存储瓶颈)EFFECTIVE_BYTES_PER_SECOND:与存储理论带宽对比判断性能问题READY:持续为 0 可能表示通道配置不足
4. 相关视图与基表
关联视图
| 视图名称 | 描述 |
|---|---|
V$SESSION | 会话详细信息(关联 SID 和 SERIAL#) |
V$BACKUP_SYNC_IO | 同步 I/O 操作监控 |
V$RMAN_BACKUP_JOB_DETAILS | RMAN 作业详情(含通道配置) |
V$BACKUP_DATAFILE | 数据文件备份进度 |
底层基表
X$KRCBIO:动态性能表,存储异步 I/O 操作实时状态(内存结构)X$KRBMSFT:备份媒体管理软件框架表
⚠️ 基表为 Oracle 内部结构,禁止直接查询,需通过
V$视图访问。
5. 底层原理
异步 I/O 工作流程
- 请求提交:
- RMAN 通道进程提交异步 I/O 请求到 OS 队列
- 记录到
X$KRCBIO(状态=IN PROGRESS)
- 并行处理:
- 操作系统异步处理 I/O,RMAN 继续执行其他任务
- 监控进程更新
READY/SHORT_WAITS/LONG_WAITS
- 回调通知:
- OS 完成 I/O 后通知 Oracle
- 更新
STATUS='FINISHED',计算吞吐量
- 内存清理:
- 完成后的记录从内存移除(不再出现在视图中)
关键机制
- 异步优势:避免进程阻塞,最大化 I/O 并行度
- 缓冲区管理:
\text{总传输量} = \text{Buffer Size} \times \text{Buffer Count} \times \text{IO Count} - 长等待触发:当 OS I/O 队列满或存储响应超时
6. 关键知识点
异步 I/O 配置
-- 检查异步 I/O 是否启用
SELECT name, value
FROM v$parameter
WHERE name IN ('disk_asynch_io', 'backup_tape_io_slaves');
-- 磁盘异步 I/O 通常默认启用 (DISK_ASYNCH_IO=TRUE)
-- 磁带备份需设置:backup_tape_io_slaves=TRUE
性能诊断公式
- I/O 效率比:
\text{Efficiency} = \frac{\text{实际吞吐量 (EFFECTIVE_BYTES_PER_SECOND)}}{\text{存储理论带宽}} - 阻塞率(>5% 需警惕):
\text{Blocking \%} = \frac{\text{LONG_WAITS}}{\text{IO_COUNT}} \times 100
与同步 I/O 对比
| 特性 | 异步 I/O | 同步 I/O |
|---|---|---|
| 进程阻塞 | 非阻塞 | 阻塞 |
| 吞吐量 | 高(并行) | 低(串行) |
| CPU 占用 | 低 | 高 |
| 适用场景 | 大型备份/高速存储 | 小文件/低延迟存储 |
7. 常用诊断 SQL
① 实时监控活动异步 I/O
SELECT sid, serial#, type, device_type, filename,
ROUND(bytes/1048576) AS size_mb,
ROUND(elapsed_time,2) AS elapsed_sec,
ROUND(effective_bytes_per_second/1048576) AS mb_sec,
long_waits, io_count,
ROUND(long_waits/io_count*100, 2) AS blocking_pct
FROM v$backup_async_io
WHERE status = 'IN PROGRESS';
② 按通道汇总 I/O 性能
SELECT sid, device_type,
SUM(bytes) AS total_bytes,
SUM(elapsed_time) AS total_sec,
ROUND(SUM(bytes)/GREATEST(SUM(elapsed_time),1)/1048576) AS avg_mb_sec,
SUM(long_waits) AS total_long_waits
FROM v$backup_async_io
GROUP BY sid, device_type;
③ 检测 I/O 瓶颈(长等待占比 > 5%)
SELECT filename, long_waits, io_count,
ROUND(long_waits/io_count*100, 2) AS blocking_pct,
effective_bytes_per_second
FROM v$backup_async_io
WHERE status = 'FINISHED'
AND long_waits/io_count > 0.05 -- 阻塞率>5%
ORDER BY blocking_pct DESC;
④ 查找失败的 I/O 操作
SELECT filename, device_type,
TO_CHAR(open_time, 'YYYY-MM-DD HH24:MI:SS') AS start_time,
error_msg
FROM v$backup_async_io
WHERE status = 'FAILED';
总结
- 核心价值:定位备份恢复性能瓶颈,优化存储 I/O 配置。
- 最佳实践:
- 监控
LONG_WAITS和阻塞率,>5% 需调查存储性能 - 对比
EFFECTIVE_BYTES_PER_SECOND与存储理论带宽 - RAC 环境中检查各节点 I/O 负载均衡
- 监控
- 注意事项:
- 数据仅存在于 活动 I/O 期间,完成即消失
- 磁带备份需额外配置
backup_tape_io_slaves - 结合
V$SESSION_LONGOPS查看整体进度
通过此视图可精确诊断 RMAN I/O 问题,显著提升备份恢复效率。
欢迎关注我的公众号《IT小Chen》
49

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



