
Oracle 19c: V$BACKUP 动态性能视图详解
核心作用:实时监控数据库备份状态,提供RMAN备份和恢复操作的详细执行信息,是数据库备份管理的关键视图。
1. 视图核心作用
- 备份监控:跟踪RMAN备份作业的执行状态
- 进度跟踪:显示备份操作的完成百分比
- 性能分析:测量备份吞吐量和执行时间
- 故障诊断:识别备份失败的根源问题
- 资源监控:报告备份过程的I/O负载
- 恢复准备:为恢复操作提供关键元数据
📌 注意:此视图仅在使用RMAN执行备份时有效,不包含用户管理的备份信息。
2. 关键使用场景
- 实时监控:跟踪正在进行的备份作业
- 性能调优:优化备份速度和资源消耗
- 故障排查:诊断备份失败或卡住问题
- 容量规划:预测备份时间和存储需求
- 合规审计:验证备份作业的执行完整性
- 恢复准备:获取恢复所需的关键SCN信息
3. 字段详解 (Oracle 19c)
| 字段名 | 数据类型 | 说明 |
|---|---|---|
STATUS | VARCHAR2(12) | 备份状态:ACTIVE/NOT ACTIVE |
FILE# | NUMBER | 文件号(关联V$DATAFILE.FILE#) |
COMPLETION_TIME | DATE | 备份完成时间 |
ELAPSED_SECONDS | NUMBER | 已用时间(秒) |
BUFFER_SIZE | NUMBER | 备份缓冲区大小(字节) |
BUFFER_COUNT | NUMBER | 备份缓冲区数量 |
TAG | VARCHAR2(32) | 备份标签 |
BLOCK_SIZE | NUMBER | 备份块大小(字节) |
INCREMENTAL_LEVEL | NUMBER | 增量备份级别:0=全备,1=1级增备,2=2级增备 |
PIECE# | NUMBER | 备份片编号 |
SET_COUNT | NUMBER | 备份集数量 |
SET_STAMP | NUMBER | 备份集时间戳 |
THREAD# | NUMBER | 重做线程号 |
SEQUENCE# | NUMBER | 归档日志序列号 |
FIRST_CHANGE# | NUMBER | 起始SCN |
NEXT_CHANGE# | NUMBER | 结束SCN |
BYTES | NUMBER | 已备份字节数 |
BLOCKS | NUMBER | 已备份块数 |
COMPRESSED | VARCHAR2(3) | 是否压缩:YES/NO |
CON_ID | NUMBER | 容器ID(CDB环境) |
DEVICE_TYPE | VARCHAR2(32) | 设备类型:DISK/SBT_TAPE |
4. 相关视图与基表
关联视图
GV$BACKUP:集群所有实例的备份状态V$BACKUP_DATAFILE:数据文件备份详情V$BACKUP_SET:备份集元数据V$BACKUP_PIECE:备份片详细信息V$BACKUP_REDOLOG:备份的归档日志信息RC_BACKUP_FILES:恢复目录视图
底层基表
X$KCCBF:备份文件控制结构(内存表)X$KCCBP:备份进程控制结构SYS.BACKUP_FILES:备份文件元数据表SYS.BACKUP_SET:备份集元数据表
5. 核心原理
RMAN备份流程
关键机制
- 通道处理:
RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP DATABASE; } - 增量备份:
- 基于块变化跟踪(Block Change Tracking)
- 仅备份修改过的数据块
- 压缩:
- BASIC/OLTP/ZLIB等压缩算法
- 通过
AS COMPRESSED启用
- 多段备份:
- 大数据文件分段并行备份
- 通过
SECTION SIZE指定段大小
状态转换
6. 常用操作SQL
查看活动备份
SELECT
file#,
status,
ROUND(bytes/1024/1024) AS mb_backed,
ROUND(elapsed_seconds/60) AS min_elapsed,
TO_CHAR(completion_time, 'HH24:MI:SS') AS end_time
FROM V$BACKUP
WHERE status = 'ACTIVE';
监控备份进度
SELECT
s.sid,
s.serial#,
b.file#,
d.name AS datafile,
ROUND((b.blocks * d.block_size)/1024/1024) AS total_mb,
ROUND((b.bytes)/1024/1024) AS backed_mb,
ROUND((b.bytes/(b.blocks * d.block_size))*100 AS progress_pct
FROM V$BACKUP b
JOIN V$DATAFILE d ON b.file# = d.file#
JOIN V$SESSION s ON s.module = 'RMAN'
WHERE b.status = 'ACTIVE';
分析备份性能
SELECT
device_type,
AVG(bytes/elapsed_seconds/1024/1024) AS avg_mb_s,
MAX(bytes/elapsed_seconds/1024/1024) AS max_mb_s,
COUNT(*) AS backup_count
FROM V$BACKUP
WHERE status = 'NOT ACTIVE'
GROUP BY device_type;
检查备份完整性
SELECT
file#,
first_change#,
next_change#,
sequence#,
thread#
FROM V$BACKUP
WHERE file# IN (
SELECT file#
FROM V$DATAFILE
WHERE name LIKE '%SYSTEM%'
);
识别慢速备份
SELECT
file#,
ROUND(bytes/1024/1024) AS mb,
ROUND(elapsed_seconds/60) AS min,
completion_time
FROM V$BACKUP
WHERE status = 'NOT ACTIVE'
AND elapsed_seconds > 300 -- >5分钟
ORDER BY elapsed_seconds DESC;
备份存储分析
SELECT
TRUNC(completion_time) AS backup_date,
device_type,
SUM(bytes/1024/1024/1024) AS total_gb,
COUNT(DISTINCT set_count) AS backup_sets
FROM V$BACKUP
WHERE status = 'NOT ACTIVE'
GROUP BY TRUNC(completion_time), device_type
ORDER BY backup_date DESC;
注意事项
-
数据时效性:
- 活动备份实时更新
- 历史备份信息保留到控制文件
- 使用恢复目录长期保存:
CREATE CATALOG; REGISTER DATABASE;
-
关键备份参数:
-- 控制文件保留策略 ALTER SYSTEM SET control_file_record_keep_time=30; -- 天数 -
性能优化:
- 增加通道数提升并行度:
CONFIGURE DEVICE TYPE DISK PARALLELISM 4; - 启用压缩减少I/O:
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
- 增加通道数提升并行度:
-
RAC环境:
- 使用
GV$BACKUP集群视图 - 确保所有节点时间同步
- 共享存储上的备份位置
- 使用
-
恢复关键信息:
信息 视图字段 恢复用途 文件位置 V$BACKUP_PIECE.HANDLERESTORE 备份时间点 FIRST_CHANGE#RECOVER UNTIL SCN 归档序列 SEQUENCE#RECOVER SEQUENCE -
故障诊断:
-- 检查备份错误 SELECT * FROM V$RMAN_STATUS WHERE STATUS = 'FAILED' AND START_TIME > SYSDATE - 1; -
最佳实践:
- 定期验证备份:
RESTORE DATABASE VALIDATE; - 监控备份窗口:
SELECT operation, TO_CHAR(start_time, 'HH24') AS hour, AVG(elapsed_seconds) AS avg_sec FROM V$RMAN_STATUS GROUP BY operation, TO_CHAR(start_time, 'HH24'); - 设置备份警报:
BEGIN DBMS_SERVER_ALERT.SET_THRESHOLD( metrics_id => DBMS_SERVER_ALERT.TABLESPACE_BACKUP_FAILURES, critical_operator => DBMS_SERVER_ALERT.OPERATOR_GT, critical_value => '0', observation_period => 1); END;
- 定期验证备份:
💡 恢复关键命令:
-- 基于SCN恢复 RECOVER DATABASE UNTIL SCN &scn; -- 基于序列恢复 RECOVER DATABASE UNTIL SEQUENCE &seq THREAD &thread;
通过V$BACKUP,DBA可以全面掌握数据库备份的执行状态和性能特征,确保备份策略的有效性,为灾难恢复提供可靠保障。
欢迎关注我的公众号《IT小Chen》

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



