脚本说明
dg_manager_180.sh 的菜单功能、执行条件和操作风险。
脚本用途
180/dg_manager_180.sh 是面向 OA Data Guard 主备组的交互式管理脚本,源码写死主库 192.168.8.180、备库 192.168.8.181,默认备份目录为 /data_oracle/backup。它没有命令行参数,不能通过参数切换到其他主备组。
执行条件
- 以
oracle用户运行;脚本会加载该用户的.bash_profile。 ORACLE_HOME和ORACLE_SID必须已设置。- 主机需有 SQL*Plus、RMAN、SSH 客户端及脚本调用的系统命令。
- 主库需能免密 SSH 到
oracle@192.168.8.181,并能在备库以本地 SYSDBA 连接。 - 脚本文件需有执行权限;当前仓库副本没有执行位。部署后需确认服务器文件权限。
菜单功能
| 选项 | 行为 | 影响 |
|---|---|---|
| 1. 健康看板 | 查主备负载、内存、/data_oracle 空间、角色和 MRP;序列、延迟和 GAP 区块在本机查询 | 查询;备库延迟和应用进度不能只凭该区块判断 |
| 2. 归档治理 | 清理 RMAN 记录中的失效归档;清理超过 1 天且已备份到磁盘的归档;或强制删除 2 天前归档 | 会修改 RMAN 记录或删除归档文件 |
| 3. MRP 启停 | 远程暂停或启动备库日志应用 | 改变备库恢复状态 |
| 4. ADG 模式 | 在备库只读查询与 MOUNT 同步模式间切换 | 可能停止 MRP、重启备库并改变开放模式 |
| 5. RMAN 备份 | 压缩数据库备份、Level 1 增量备份,或备份归档后删除源归档 | 写入 /data_oracle/backup;归档选项会尝试删除源文件 |
| 0. 退出 | 退出菜单 | 无数据库操作 |
菜单显示示例
下面是脚本菜单和输出的模拟示例。数值及状态仅用于说明显示格式,不代表现场运行结果。
主菜单
==================================================
Oracle 180 ↔ 181 主备容灾日常管理面板
==================================================
请选择日常操作:
[1] 主备容灾健康看板 (一键全局诊断)
[2] 归档日志空间治理 (查看/清理过期归档)
[3] 备库 MRP 日志应用 (启动/暂停)
[4] 备库 ADG 只读模式 (开启/关闭)
[5] RMAN 备份管理 (全备/增备/归档)
[0] 退出控制台
==================================================
请输入选项 [1-5, 0]:选项 1:主备健康看板
主备容灾健康看板 (一键全局诊断)
=== [1/4] 主备服务器系统指标 (CPU/内存/磁盘) ===
【主库 180】: CPU负载: 0.35,0.28,0.22 | 内存: 12Gi free / 62Gi total | 数据盘: 1.6T free (Use% 68%)
【备库 181】: CPU负载: 0.18,0.16,0.12 | 内存: 18Gi free / 62Gi total | 数据盘: 2.3T free (Use% 54%)
=== [2/4] 数据库实例状态 ===
【主库 180】: 状态为 READ WRITE (PRIMARY)
【备库 181】: 状态为 MOUNTED (PHYSICAL STANDBY)
=== [3/4] Data Guard 同步与延迟指标 ===
-- 1. 归档 GAP 状态
-- 2. 主备 Sequence 对齐一览
-- 3. DG 物理时延 (传输延迟 / 应用延迟)
=== [4/4] 备库 MRP 日志应用进程状态 ===
【备库 MRP 状态】: MRP0 | APPLYING_LOG | 12680负载为 1、5、15 分钟平均负载,不是 CPU 使用率;内存显示的是 free/total,不是已用百分比。若备库 SSH 不可用,备库对应区块会提示无法连接或跳过采集。
看板的 GAP、序列和延迟 SQL 都在本机执行。主库上的 V$DATAGUARD_STATS 无返回行,V$ARCHIVE_GAP 也不能据此排除备库缺口;主库 V$ARCHIVED_LOG 按 dest_id=2 汇总的 APPLIED 不能作为备库应用进度的可靠依据。应到备库核对延迟、GAP 和应用状态。
选项 2:归档日志空间治理
当前 /data_oracle 分区剩余空间: 1638 GB (已使用: 68%)
请选择您的清理策略:
[1] 仅清理 RMAN 记录中已失效的归档文件 (crosscheck + delete expired)
[2] 安全清理已被备库应用过且生成已超过 1 天的本地归档 (保留最近1天)
[3] 强制清理 2 天前的所有本地归档
[4] 取消并返回主菜单
请输入清理选项 [1-4]:选择 [3] 时还会显示:
[警告] 强行清理可能会导致主备发生 GAP (断档)!请确保主备已完全对齐。
确认强制删除 2 天前的归档吗?(yes/no):选项 3:备库 MRP 启停
备库检测到 MRP 进程时:
当前备库 MRP 状态: 正在应用日志 (ACTIVE)
是否需要 [暂停] 备库日志应用?(yes/no):备库 MRP 未运行时:
当前备库 MRP 状态: 未启动应用 (INACTIVE)
是否需要 [开启] 备库日志应用?(yes/no):ACTIVE 只表示脚本检测到 MRP 进程,不代表它正在应用日志;查询失败时也可能被误判为 INACTIVE。需独立查询并区分 APPLYING_LOG、WAIT_FOR_LOG 和 WAIT_FOR_GAP。
选项 4:备库 ADG 模式
备库当前为只读模式时,提示是否切回 MOUNT 同步模式:
当前备库 Open Mode 为: READ ONLY WITH APPLY
备库目前已开启只读服务。
是否需要将备库恢复为 [纯 MOUNT 同步模式]?(yes/no):备库处于 MOUNTED 模式时,脚本提示开启只读与同步并存:
当前备库 Open Mode 为: MOUNTED
备库目前处于 MOUNT 状态,无法读取查询。
是否需要开启 [Active Data Guard 只读查询与同步并存] 模式?(yes/no):ADG 分支将所有不包含 READ ONLY 的返回结果都视为 MOUNT,NOMOUNT 或查询失败也可能被误判;操作前独立查询实例状态和数据库开放模式。
选项 5:RMAN 备份管理
默认物理备份目标路径: /data_oracle/backup
请选择需要执行的备份任务:
[1] 数据库全量物理压缩备份 (包括控制文件、spfile)
[2] 数据库 Level 1 物理增量备份
[3] 仅备份归档日志并删除已备份归档 (释放磁盘空间)
[4] 取消返回主菜单
请选择备份选项 [1-4]:选择 [1]、[2] 或 [3] 后会先显示相应的“正在调起 RMAN……”提示,再执行 RMAN 命令。
关键操作说明
归档删除
- 选项 1 执行
CROSSCHECK和DELETE EXPIRED,用于清除 RMAN 中已不存在文件的记录。 - 选项 2 的 RMAN 命令条件是“完成时间早于一天、已备份到磁盘至少一次”。命令本身没有写明备库已应用;是否受已应用删除策略保护,取决于数据库当前 RMAN 配置。即使配置了
APPLIED ON ALL STANDBY,没有有效备库时 RMAN 也会按NONE处理。使用前核实删除策略、有效备库和应用状态。 - 选项 3 以“完成时间早于两天”为条件删除归档,没有显式要求备份次数或备库应用状态。菜单称为“强制清理”,但 RMAN 命令没有
FORCE,仍受当前归档删除策略约束;策略未正确配置时仍可能造成恢复材料缺失或 Data Guard GAP。
MRP 与 ADG
MRP 启停会改变日志应用状态;ADG 选项可能停止日志应用、执行 SHUTDOWN IMMEDIATE、重新启动备库并修改开放模式。只读打开同时进行 Redo Apply 需要 Oracle Active Data Guard 选项许可。需在确认角色、当前模式、业务影响和操作窗口后执行,并在操作后查询状态。只看到脚本的绿色“成功”提示不足以确认 SQL 操作成功。
RMAN 备份
- 选项 1 执行压缩数据库备份,并单独备份控制文件和 SPFILE;这是 full backup,不是 Level 0 增量基线,也没有包含归档日志备份。不能把该选项与选项 2 直接当作一套 Level 0 + Level 1 备份链。
- 选项 2 是 Level 1 增量备份,恢复时需要对应的基线及后续恢复所需归档,不能单独视为完整恢复集。
- 选项 3 执行归档备份并带
DELETE INPUT。源归档能否安全删除仍受 RMAN 删除策略影响,执行前核实主备已应用情况和策略。
该脚本在 RMAN 命令后直接显示“任务执行完毕”等提示,没有可靠检查 RMAN 返回状态,也不验证备份可恢复性。需查看 RMAN 输出和日志,之后按恢复计划进行校验。
输出与退出状态
看板显示主机资源、数据库角色和开放模式、归档序列、Data Guard 延迟及 MRP 状态。SSH 不通时部分备库信息会跳过;主库查询中的 dest_id=1/2 也依赖现场归档目的地配置。
脚本只在用户或 Oracle 环境检查失败时明确 exit 1,正常选择菜单 0 时 exit 0。菜单操作的失败不会稳定反映到脚本最终退出码;远程 SQL 输出有时被丢弃,随后仍打印成功提示。每项状态变更都要用独立查询确认结果。
操作前核对
- 确认当前主机、实例名、数据库角色为预期的 180 主库。
- 确认目标备库是 181,SSH 主机密钥和免密账户正确。
- 删除归档前核实备份状态、RMAN 删除策略、备库应用序列和 GAP。
- 启停 MRP 或切换 ADG 前记录当前角色、开放模式和应用状态。
- 备份前确认
/data_oracle/backup空间、归档保留策略和恢复链完整。 - 操作后重新查询数据库状态,并保存输出和 RMAN 日志。