The ORA-16698 error in Oracle indicates that a Data Guard member has a LOG_ARCHIVE_DEST_n
parameter with the SERVICE
attribute set, which is causing a conflict or an incorrect configuration in your Data Guard setup.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [oracle@ primary admin]$ [oracle@ primary admin]$ dgmgrl / as sysdba DGMGRL for Linux: Release 19.0.0.0.0 - Production on Sat Jun 22 09:49:00 2024 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and / or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "prod101" Connected as SYSDBA. DGMGRL> DGMGRL> DGMGRL> CREATE CONFIGURATION dg_config AS PRIMARY DATABASE IS prod101 CONNECT IDENTIFIER IS prod101; Configuration "dg_config" created with primary database "prod101" DGMGRL> DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: prod101 - Primary database Fast-Start Failover: Disabled Configuration Status: DISABLED DGMGRL> ADD DATABASE prod101s AS CONNECT IDENTIFIER IS prod101s MAINTAINED AS PHYSICAL; Error: ORA-16698: member has a LOG_ARCHIVE_DEST_n parameter with SERVICE attribute set Failed. |
Solution : Steps to Resolve ORA-16698
1. Check Current LOG_ARCHIVE_DEST_n Parameters
2. Modify the Incorrect Parameter
3. Validate the Data Guard Configuration
4. Check the Standby Database Configuration
1. Remove the DG Broker configuration from Primary
1 2 | DGMGRL> remove configuration; Removed configuration |
2. Disable log_archive_dest_2 from Primary and standby
Primary:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | SQL> show parameter log_archive_dest_2 NAME TYPE VALUE -------------------- ----------- ------------------------------ log_archive_dest_2 string service=prod101s LGWR AFFIRM SYNC valid_for= (online_logfiles ,primary_role) db_unique_name=prod101s SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= '' scope=both; System altered. SQL> show parameter log_archive_dest_2 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_2 string SQL> |
Standby:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | SQL> show parameter log_archive_dest_2 NAME TYPE VALUE ----------------------- ----------- ------------------------------ log_archive_dest_2 string SERVICE=prod101s NOAFFIRM ASYNC VALID_FOR= (ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prod101s SQL> SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= '' scope=both; System altered. SQL> show parameter log_archive_dest_2 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_2 string SQL> |
3. Disable / Enable DG Broker:
Primary:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | SQL> show parameter dg_broker_start NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean TRUE SQL> alter system set dg_broker_start= false scope=both; System altered. SQL> alter system set dg_broker_start= true scope=both; System altered. SQL> show parameter dg_broker_start NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean TRUE |
Standby:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | SQL> show parameter dg_broker_start NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean TRUE SQL> alter system set dg_broker_start= false scope=both; System altered. SQL> alter system set dg_broker_start= true scope=both; System altered. SQL> show parameter dg_broker_start NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean TRUE |
4. Configure DG Broker
Primary:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | [oracle@ primary admin]$ dgmgrl / as sysdba DGMGRL for Linux: Release 19.0.0.0.0 - Production on Sat Jun 22 10:08:36 2024 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and / or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "prod101" Connected as SYSDBA. DGMGRL> CREATE CONFIGURATION dg_config AS PRIMARY DATABASE IS prod101 CONNECT IDENTIFIER IS prod101; Configuration "dg_config" created with primary database "prod101" DGMGRL> ADD DATABASE prod101s AS CONNECT IDENTIFIER IS prod101s MAINTAINED AS PHYSICAL; Database "prod101s" added DGMGRL> DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: prod101 - Primary database prod101s - Physical standby database Fast-Start Failover: Disabled Configuration Status: DISABLED DGMGRL> |
5. Enable LOG_ARCHIVE_DEST_2
Primary:
1 2 3 4 5 6 7 | SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG= 'DG_CONFIG=(prod101,prod101s)' scope=both; System altered. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= 'SERVICE=prod101s LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prod101s' scope=both; System altered. |
Standby:
1 2 3 4 5 6 7 | SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG= 'DG_CONFIG=(prod101,prod101s)' scope=both; System altered. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= 'SERVICE=prod101 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prod101' scope=both; System altered. |
6. Enable DG Broker Configuration
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | DGMGRL> enable configuration; Enabled. DGMGRL> DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: prod101 - Primary database prod101s - Physical standby database Warning: ORA-16809: multiple warnings detected for the member Fast-Start Failover: Disabled Configuration Status: WARNING (status updated 2 seconds ago) |
After Few second/minutes, just validate the Configuration status = SUCCESS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: prod101 - Primary database prod101s - Physical standby database Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 41 seconds ago) DGMGRL> |
Hope it helped