ORA-16047: DGID mismatch between destination setting and target database

ERROR

SQL> SELECT status, gap_status, error FROM v$archive_dest_status WHERE dest_id=2;
STATUS GAP_STATUS
ERROR
ERROR RESOLVABLE GAP
ORA-16047: DGID mismatch between destination setting and target
database

Cause: Primary and Standby DB are NOT matching (DB_UNIQUE_NAME / DBID mismatch)

Solution:

Fix (Step-by-Step)

🔹 Step 1: Check both DB_UNIQUE_NAME

Run on PRIMARY:

show parameter db_unique_name;

Run on STANDBY:

show parameter db_unique_name;

Example:

  • Primary → primary
  • Standby → standby

Step 2: Fix LOG_ARCHIVE_DEST on PRIMARY

Check:

show parameter log_archive_dest_2;

If mismatch fix it

ALTER SYSTEM SET log_archive_dest_2=
'SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
SCOPE=BOTH;

Step 3: Check standby side

On standby:

show parameter log_archive_dest_1;

LOCATION=/opt/oracle/oradata VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby

Step 4: Restart redo transport

On PRIMARY:

ALTER SYSTEM SET log_archive_dest_state_2=DEFER;
ALTER SYSTEM SET log_archive_dest_state_2=ENABLE;

Step 5: Check again

SELECT status, gap_status, error FROM v$archive_dest_status WHERE dest_id=2;

This entry was posted in Oracle on by .
Unknown's avatar

About SandeepSingh

Hi, I am working in IT industry with having more than 15 year of experience, worked as an Oracle DBA with a Company and handling different databases like Oracle, SQL Server , DB2 etc Worked as a Development and Database Administrator.

Leave a Reply