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

在这里插入图片描述

Oracle 19c: V$BACKUP 动态性能视图详解

核心作用:实时监控数据库备份状态,提供RMAN备份和恢复操作的详细执行信息,是数据库备份管理的关键视图。


1. 视图核心作用

  • 备份监控:跟踪RMAN备份作业的执行状态
  • 进度跟踪:显示备份操作的完成百分比
  • 性能分析:测量备份吞吐量和执行时间
  • 故障诊断:识别备份失败的根源问题
  • 资源监控:报告备份过程的I/O负载
  • 恢复准备:为恢复操作提供关键元数据

📌 注意:此视图仅在使用RMAN执行备份时有效,不包含用户管理的备份信息。


2. 关键使用场景

  1. 实时监控:跟踪正在进行的备份作业
  2. 性能调优:优化备份速度和资源消耗
  3. 故障排查:诊断备份失败或卡住问题
  4. 容量规划:预测备份时间和存储需求
  5. 合规审计:验证备份作业的执行完整性
  6. 恢复准备:获取恢复所需的关键SCN信息

3. 字段详解 (Oracle 19c)

字段名数据类型说明
STATUSVARCHAR2(12)备份状态ACTIVE/NOT ACTIVE
FILE#NUMBER文件号(关联V$DATAFILE.FILE#)
COMPLETION_TIMEDATE备份完成时间
ELAPSED_SECONDSNUMBER已用时间(秒)
BUFFER_SIZENUMBER备份缓冲区大小(字节)
BUFFER_COUNTNUMBER备份缓冲区数量
TAGVARCHAR2(32)备份标签
BLOCK_SIZENUMBER备份块大小(字节)
INCREMENTAL_LEVELNUMBER增量备份级别:0=全备,1=1级增备,2=2级增备
PIECE#NUMBER备份片编号
SET_COUNTNUMBER备份集数量
SET_STAMPNUMBER备份集时间戳
THREAD#NUMBER重做线程号
SEQUENCE#NUMBER归档日志序列号
FIRST_CHANGE#NUMBER起始SCN
NEXT_CHANGE#NUMBER结束SCN
BYTESNUMBER已备份字节数
BLOCKSNUMBER已备份块数
COMPRESSEDVARCHAR2(3)是否压缩YES/NO
CON_IDNUMBER容器ID(CDB环境)
DEVICE_TYPEVARCHAR2(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备份流程
命令
分配通道
读取数据
写入
更新
记录
RMAN客户端
目标数据库
通道进程
数据文件
备份集
$BACKUP视图
控制文件
关键机制
  1. 通道处理
    RUN {
      ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
      BACKUP DATABASE;
    }
    
  2. 增量备份
    • 基于块变化跟踪(Block Change Tracking)
    • 仅备份修改过的数据块
  3. 压缩
    • BASIC/OLTP/ZLIB等压缩算法
    • 通过AS COMPRESSED启用
  4. 多段备份
    • 大数据文件分段并行备份
    • 通过SECTION SIZE指定段大小
状态转换
NOT_ACTIVE
ACTIVE:
备份开始
ACTIVE
NOT_ACTIVE:
备份完成
FAILED:
备份失败
FAILED
清理

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;

注意事项

  1. 数据时效性

    • 活动备份实时更新
    • 历史备份信息保留到控制文件
    • 使用恢复目录长期保存:
      CREATE CATALOG;
      REGISTER DATABASE;
      
  2. 关键备份参数

    -- 控制文件保留策略
    ALTER SYSTEM SET control_file_record_keep_time=30; -- 天数
    
  3. 性能优化

    • 增加通道数提升并行度:
      CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
      
    • 启用压缩减少I/O:
      CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
      
  4. RAC环境

    • 使用GV$BACKUP集群视图
    • 确保所有节点时间同步
    • 共享存储上的备份位置
  5. 恢复关键信息

    信息视图字段恢复用途
    文件位置V$BACKUP_PIECE.HANDLERESTORE
    备份时间点FIRST_CHANGE#RECOVER UNTIL SCN
    归档序列SEQUENCE#RECOVER SEQUENCE
  6. 故障诊断

    -- 检查备份错误
    SELECT * FROM V$RMAN_STATUS 
    WHERE STATUS = 'FAILED' 
    AND START_TIME > SYSDATE - 1;
    
  7. 最佳实践

    • 定期验证备份:
      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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值