O Oracle DBA 运维知识库

脚本说明

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. 退出退出菜单无数据库操作

脚本操作分支:选项 1 查询,选项 2 至 4 删除归档或改变备库状态,选项 5 执行备份;操作后独立检查数据库状态和 RMAN 日志。

菜单显示示例

下面是脚本菜单和输出的模拟示例。数值及状态仅用于说明显示格式,不代表现场运行结果。

主菜单

==================================================
    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 输出有时被丢弃,随后仍打印成功提示。每项状态变更都要用独立查询确认结果。

操作前核对

  1. 确认当前主机、实例名、数据库角色为预期的 180 主库。
  2. 确认目标备库是 181,SSH 主机密钥和免密账户正确。
  3. 删除归档前核实备份状态、RMAN 删除策略、备库应用序列和 GAP。
  4. 启停 MRP 或切换 ADG 前记录当前角色、开放模式和应用状态。
  5. 备份前确认 /data_oracle/backup 空间、归档保留策略和恢复链完整。
  6. 操作后重新查询数据库状态,并保存输出和 RMAN 日志。

On this page