游乐游手机版
首页/数据库/文章详情

Oracle Data Guard删除废弃备库配置的方法与步骤

时间:2026-08-23 13:32
必须显式执行REMOVE DATABASE和REMOVE CONFIGURATION来清除Data Guard Broker残留配置,否则重新创建同名配置时通常会报ORA-16623 ORA-16603;同时还需要一并清理LOG_ARCHIVE_DEST_n参数以及“失联归档”物理文件。备库配置已停

必须显式执行REMOVE DATABASE和REMOVE CONFIGURATION来清除Data Guard Broker残留配置,否则重新创建同名配置时通常会报ORA-16623/ORA-16603;同时还需要一并清理LOG_ARCHIVE_DEST_n参数以及“失联归档”物理文件。

Oracle Data Guard如何删除废弃备库配置

备库配置已停用但DG Broker仍残留怎么办

Oracle Data Guard Broker 配置不会随着数据库关闭、备库停用或主备角色切换而自动删除。若停用备库后没有显式清理,dg_broker_config_file1dg_broker_config_file2 中仍会保留旧的路径、监听信息以及状态元数据。这样在后续重建相同名称的配置时,往往会触发 ORA-16623ORA-16603 错误。因此,必须先从 Broker 中彻底移除旧配置,否则 DGMGRL 无法正常注册新的 Data Guard 配置。

操作前请先确认:DGMGRL 已连接到当前主库(不是原备库),并且该 Broker 配置当前处于 DISABLED 状态:

SHOW CONFIGURATION VERBOSE;

如果显示为 DISABLED,且状态为 WARNINGFAILURE,通常说明该配置已经失效,但残留信息尚未清除。可按以下步骤处理:

  • DGMGRL 中执行 REMOVE DATABASE 'db_unique_name_of_standby'; —— 这里填写的是原备库的 db_unique_name,不是实例名
  • 随后执行 REMOVE CONFIGURATION;,该命令会清空整个 Broker 配置,包括主库对应条目
  • 检查 $ORACLE_HOME/dbs/ 目录下两个 Broker 配置文件是否已被自动重命名(例如增加 .old 后缀);如果仍然存在,则手动 rm 删除
  • 重启主库监听器和数据库实例,确保 Broker 相关后台进程(DMON)已经完全退出

删完 Broker 配置后,归档目录和控制文件记录还在

清理 Broker 配置只会影响 Broker 元数据,并不会自动删除物理归档文件,也不会立即清除控制文件中的归档记录。对于已经停用的备库,如果此前接收过归档日志,那么其 v$archived_log 中仍可能保留大量与 DEST_ID 对应的已应用记录。这些记录会按照 control_file_record_keep_time(默认7天)继续保留。不过一旦超过保留期,相关元数据会从控制文件中消失,此时 RMAN 将无法再识别这些物理文件,它们就会变成常说的“失联归档”。遇到这种情况,只能通过 find /path/to/arch -name "*.dbf" -mtime +15 -delete 这类命令进行清理。

关键注意点:

  • 不要直接执行 rm -f *.dbf,应先查询 v$archive_dest,确认对应 DEST_ID 是否仍然指向该目录;如果已没有对应 DEST,通常说明该路径已经废弃
  • 在执行 find 清理命令前,务必确认当前没有备份任务(例如第三方备份工具)正在扫描该目录,否则可能导致备份作业中断
  • -mtime +15 属于更稳妥的安全缓冲值,相比 SYSDATE - 7 额外多保留 8 天,可避免归档刚失效就被提前删除

RAC 环境下删备库配置要额外注意节点一致性

在 RAC 主库环境中删除 Broker 配置时,DGMGRL 默认只对当前连接的节点生效。若未同步处理所有实例,其他节点在重启后仍可能重新加载旧的 Broker 文件,从而导致 DMON 进程异常启动,并出现 ORA-16826 错误。

因此必须额外完成以下几项检查与操作:

  • 所有 RAC 节点都要执行一次 REMOVE CONFIGURATION;,不能只在单个节点上处理
  • 检查每个节点的 $ORACLE_HOME/dbs 目录,确认 dr1*.datdr2*.dat 文件都已经被清除或重命名
  • 修改 init.ora 或 SPFILE 中的 dg_broker_start=FALSE,防止实例重启后自动拉起 DMON

删完配置却收不到主库归档?检查 LOG_ARCHIVE_DEST_n 是否残留

即使 Broker 配置已经删除,主库中的LOG_ARCHIVE_DEST_2(或更高编号的归档目标)也可能仍保留着已经停用的备库地址,例如SERVICE=old_stby LGWR SYNC AFFIRM。这类残留参数会让主库持续尝试传输归档日志,一旦传输失败,就会不断在ALERT.log中写入报错信息,严重时甚至可能导致LNS进程卡住。

排查与清理方法如下:

  • 在主库执行 SELECT dest_id, status, destination FROM v$archive_dest WHERE dest_id > 1;,找出仍指向已停用备库的 dest_id
  • 执行 ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='' SCOPE=BOTH;(根据实际 dest_id 替换编号)
  • 立即触发一次日志切换:ALTER SYSTEM SWITCH LOGFILE;,并观察 v$archive_dest_status 中对应项是否已经变为 INACTIVE
  • 最后执行 ALTER SYSTEM ARCHIVE LOG CURRENT;,确保当前日志已完成归档,以验证归档传输链路确实已经断开

最容易被忽略的问题是:Broker 配置虽然删掉了,但 LOG_ARCHIVE_DEST_n 没有同步清理,导致主库仍在向废弃备库发送归档;或者在使用 find 清理归档文件时,没有先核对 DEST_ID 是否已经失效,结果误删了其他备库仍在使用的归档路径。

来源:https://www.php.cn/faq/3026782.html
上一篇MySQL为什么建议用自增主键而不用UUID作为索引 下一篇Oracle Active Data Guard查询阻塞恢复处理方法与解决思路
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。