Saturday 31 December 2016

"ORA-16047 - DGID mismatch between destination setting and target database" while configuring dataguard.

While setting up dataguard configuration you may encounter ORA-16047 - DGID mismatch between destination setting and target database.

From alert.log on primary database:

******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
Sat Dec 31 08:29:30 2016
FAL[server, ARC3]: Error 16047 creating remote archivelog file 'sauxmes'
FAL[server, ARC3]: FAL archive failed, see trace file.
ARCH: FAL archive failed. Archiver continuing
ORACLE Instance auxmes - Archival Error. Archiver continuing.
Error 16047 for archive log file 2 to 'sauxmes'
Errors in file /u01/app/xxxxx/diag/rdbms/auxmes/auxmes/trace/auxmes_nsa2_9525.trc:
ORA-16047: DGID mismatch between destination setting and target database
Sat Dec 31 08:30:12 2016
PING[ARC1]: Heartbeat failed to connect to standby 'sauxmes'. Error is 16047.
Sat Dec 31 08:33:39 2016
PING[ARC1]: Heartbeat failed to connect to standby 'sauxmes'. Error is 16047.
Sat Dec 31 08:37:12 2016
PING[ARC1]: Heartbeat failed to connect to standby 'sauxmes'. Error is 16047.



Solution:
Check the configuration on STANDBY side in parameter log_archive_config:

SQL> show parameter log_archive_config  

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------

log_archive_config                   string
 

Most likely it will not be set. Therefore set it to appropriate value like:

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(auxmes,sauxmes)';

This will resolve the problem and the redo transport will start working.

Another possibility for getting this kind of error is if you didn't set parameter DB_UNIQUE_NAME on standby database (must be different from the name on primary site):

alter system set DB_UNIQUE_NAME="sauxmes" scope=spfile;  

and then you need to restart the standby database as this parameter can't be dynamically set.