暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RMAN 备份监控的常用方法与实战脚本

恩恩霸 2025-08-16
256

Oracle RMAN 的备份监控如果只靠“跑完看一眼日志”,很快就会在深夜故障演练或容量告警时付出代价。真正落地的监控体系必须覆盖“事前—事中—事后—趋势”四个阶段,既能让值班人员一眼看到“备份是否成功”,又能让 DBA 在容量、性能、合规层面提前预警。下文从九个维度系统梳理 RMAN 备份监控的常用方法与实战脚本。

一、事前:策略与基线
1. 备份窗口基线
用 AWR 或 Statspack 收集过去 4 周的业务低峰 I/O、Redo 生成量,结合 `backup ... duration 02:00 minimize load` 先跑一次测试,得出“备份窗口”——例如 01:00–03:30 必须完成。把“备份开始/结束时间”纳入 Zabbix/Grafana 的基线阈值,超过即告警。
2. 保留策略与合规
金融或证券行业通常要求 7 日可恢复、30 日合规留存。通过 `configure retention policy to recovery window of 7 days;` 设定后,把 `report need backup` 和 `report obsolete` 的输出发送到 ELK,每天夜里跑一次 diff,自动工单提醒清理。

二、事中:实时进度
1. v$session_longops
这是最直观且不依赖 catalog 的监控源。脚本示例:
```sql
SELECT sid, serial#, opname, sofar, totalwork,
ROUND(sofar/totalwork*100,2) pct,
ROUND(elapsed_seconds/60,1) ela_min,
ROUND(time_remaining/60,1) left_min
FROM v$session_longops
WHERE opname LIKE 'RMAN%'
AND totalwork > 0;
```
将结果每分钟插入监控库,前端用折线图展示百分比曲线。
2. v$rman_backup_job_details
11g 以后引入,可以拿到“本次备份字节数”、“输入字节/秒”、“输出字节/秒”。配合 `v$rman_backup_subjob_details` 能细化到每个通道。
3. 通道级告警
当某个通道长时间卡在 0%,往往是磁带机故障或 NFS 无响应。用 `rman ... trace=rman.trc` 打开 trace,监控 trace 文件大小 10 分钟无增长即触发短信。

三、事中:日志实时解析
1. RMAN 日志 + logrotate
备份脚本统一写入 `/backup/log/rman_$(date +%F).log`,logrotate 按日切割。用 `tail -F | grep -E 'ORA-|RMAN-|ERROR|fail'` 实时抛给 syslog-ng,再入 Graylog。
2. 错误码映射表
ORA-19502(写文件失败)、ORA-27037(文件不存在)、ORA-19511(SBT 接口错误)等常见码提前维护成知识库,Graylog 收到后自动关联 KB 链接,减少 MTTR。

四、事后:结果校验
1. restore validate
备份完成后立即跑:
```rman
restore database validate check logical;
```
出错直接抛异常码给 Jenkins pipeline,失败即阻断下游“归档删除”步骤。
2. list backup summary
每晚 04:00 cron 跑:
```bash
rman target / log=/tmp/list.log <<EOF
list backup summary completed after 'sysdate-1';
EOF
```
用 awk 抽取“备份片数、大小、状态”,与基线对比,异常自动飞书告警。

五、事后:备份目录一致性检查
1. crosscheck
每周日凌晨:
```rman
crosscheck backup;
delete noprompt expired backup;
```
若 expired 片数 >3,说明存储团队挪动文件未通知,立刻触发工单。
2. 恢复目录同步
对于使用 catalog 的环境,定期 `resync catalog;` 并比对 `rc_backup_set` 与目标库控制文件的备份记录。差异行写邮件。

六、容量监控
1. 备份目标目录
使用 `df -h` 或 ASM 视图 `v$asm_diskgroup` 取剩余空间,低于 15% 触发扩容工单。
2. FRA(Fast Recovery Area)
`select * from v$recovery_area_usage;` 监控归档/备份/映像副本的占比,超过 80% 自动调用 `delete obsolete` 或通知存储加盘。

七、性能监控
1. 备份速率基线
通过 `v$rman_backup_job_details.output_bytes_per_sec` 建立历史曲线,下降 30% 以上即告警。常见根因:压缩算法升级、网络 QoS、磁盘亚健康。
2. 资源消耗
用 AWR 快照对比备份窗口内的 `DB CPU`、`cell physical IO interconnect bytes`,若 CPU 使用率 >80%,考虑降低并行度或改用低压缩比。

八、可视化与报表
1. Grafana + Prometheus
自定义 exporter 把 `v$rman_*`、`v$session_longops`、`df -h` 转成 metrics,Grafana 出图:
- 备份成功率(最近 7 天)
- 备份窗口时长趋势
- 每日备份量 vs FRA 空间
2. BI 报表
对合规部门,每月导出 CSV:备份片名、开始/结束时间、校验码、存放位置、保留策略到期日,供审计抽检。

九、自动化演练与告警闭环
1. 自动恢复演练
每季度用 RMAN duplicate 到测试库:
```bash
rman target sys/oracle@prod auxiliary sys/oracle@test <<EOF
duplicate database to test until time 'sysdate-2/24';
EOF
```
成功后回写演练报告到 Jira,失败自动创建 Sev-2 工单。
2. 告警分级
- Sev-1:备份失败、恢复校验失败 → 电话 + 短信
- Sev-2:备份窗口超时 30%、目录 crosscheck 异常 → 邮件 + IM
- Sev-3:容量低于阈值、备份速率下降 → 日报

结语
RMAN 备份监控不是单一脚本,而是一套覆盖策略、实时、事后、容量、性能、合规、演练的闭环体系。只有将 `v$session_longops` 的实时百分比、RMAN 日志的异常码、恢复目录的一致性、FRA 的剩余空间、AWR 的性能基线全部纳入统一监控平台,才能真正做到“事前可预警、事中可跟踪、事后可审计、灾时可恢复”。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论