文档解释
ORA-16047: DGID mismatch between destination setting and target database
Cause: The DB_UNIQUE_NAME specified for the destination did not match the DB_UNIQUE_NAME at the target database.
Action: Make sure the DB_UNIQUE_NAME specified in the LOG_ARCHIVE_DEST_n parameter matches the DB_UNIQUE_NAME parameter defined at the destination.
ORA-16047 DGID mismatch between Destination Setting and Target Database 这是一个Oracle错误,表明Data Guard配置中目标数据库和目标设置之间 存在DGID不匹配问题。
(1)官方解释
ORA-16047适用于: Oracle 数据库 – Enterprise Edition – 版本11.2.0.2及更高版本
出现ORA-16047的原因是目标数据库的DGID与目标设置中的DGID不匹配。如果目标数据库的DGID与目标设置中的DGID不匹配,则无法在这样的Data Guard配置中执行足够的Data Guard验证来确保一致性。
因此,Data Guard不会从一个DGID与另一个不匹配的DGID上启动复制。因此,如果遇到此ORA-16047错误,则需要确保目标数据库和目标设置中的DGID相符才能将数据保护目标正确配置。
常见案例
常见的案例是,用户误将只读数据库(例如standby数据库)设置为主数据库,或者将主数据库(例如primary数据库)设置为只读数据库,而没有重新配置Data Guard设置。
(3)正常处理方法及步骤
1. 在目的端的配置文件(destionation.ora)中确认你的目标数据库的DGID
2. 使用SQL * Plus连接到目标数据库,然后运行以下SQL语句:
SELECT log_mode, dbid FROM v$database;
3. 对比你的目标数据库的DGID和destination.ora中的DGID
4. 若两者不一致,则使用alter system set dgid=xxx 命令更新它们
5. 使用 alter system set dg_broker_start=true 命令启动Data guard broker,然后使用alter system set dg_broker_config_file1=’…’命令创建一个新的配置文件,用以替换以前的配置文件
6. 启动Data Guard进程,确保其正常运行