Pythian Blog: Technical Track

Data Guard Broker—ORA-16714: The Value of Property LogFileNameConvert Is Inconsistent with the Database Setting

This seems like a simple message to fix, right?

The parameter is different between the broker configuration and the database parameters—it was most likely changed directly on the database after the DG (Data Guard) broker configuration was created or the database was added. However, there is an interesting point to consider.

Let’s check on the error first. On the primary database side of the broker configuration:

DGMGRL> show database myprodDB;

Database - myprodDB

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    rmprdb01
      Warning: ORA-16714: the value of property LogFileNameConvert is inconsistent with the database setting

  Database Warning(s):
    ORA-16707: the value of the property LogFileNameConvert is invalid, valid values are pairs of file specifications

Database Status:
WARNING


DGMGRL> show database verbose myprodDB;

Database - myprodDB

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    rmprdb01
      Warning: ORA-16714: the value of property LogFileNameConvert is inconsistent with the database setting

  Database Warning(s):
    ORA-16707: the value of the property LogFileNameConvert is invalid, valid values are pairs of file specifications

  Properties:
    DGConnectIdentifier             = 'myprodDB'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    RedoRoutes                      = ''
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '0'
    TransportLagThreshold           = '0'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '1800'
    LogArchiveMaxProcesses          = '4'
    LogArchiveMinSucceedDest        = '1'
    DbFileNameConvert               = '+DATA/MYDATABASE/DATAFILE/, +DATA/myprodDB/DATAFILE'
    LogFileNameConvert              = '+DATA/MYDATABASE/ONLINELOG/, +DATADG/myprodDB/ONLINELOG/, +DATA2/MYDATABASE/ONLINELOG/, +DATADG2/myprodDB/ONLINELOG/, +DATA3/MYDATABASE/ONLINELOG/', +DATADG3/myprodDB/ONLINELOG/'
    FastStartFailoverTarget         = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myprodDB_DGMGRL)(INSTANCE_NAME=MYDATABASE)(SERVER=DEDICATED)))'
    StandbyArchiveLocation          = 'USE_DB_RECOVERY_FILE_DEST'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = 'MYDATABASE_%t_%s_%r.arc'
    TopWaitEvents                   = '(monitor)'

Database Status:
WARNING

Next we check for the status in the standby database server:

DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected as SYSDG.
DGMGRL> show configuration;

Configuration - my_dg_configuration

  Protection Mode: MaxPerformance
  Members:
  myprodDB - Primary database
    Warning: ORA-16809: multiple warnings detected for the database

    mySTDB      - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
WARNING   (status updated 12 seconds ago)

DGMGRL> show database myprodDB;

Database - myprodDB

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    MYDATABASE
      Warning: ORA-16714: the value of property LogFileNameConvert is inconsistent with the database setting

  Database Warning(s):
    ORA-16707: the value of the property LogFileNameConvert is invalid, valid values are pairs of file specifications

Database Status:
WARNING

Now let’s check for the database parameters perspective on the primary:

SQL> show parameter convert

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      +DATA/MYDATABASE/DATAFILE/, +
                                                 DATADG/myprodDB/DATAFILE
log_file_name_convert                string      +DATA/MYDATABASE/ONLINELOG/,+DATADG/myprodDB/ONLINELOG/, 
                                                 +DATA2/MYDATABASE/ONLINELOG/, +DATADG2/myprodDB/ONLINELOG/, 
                                                 +DATA3/MYDATABASE/ONLINELOG/, +DATADG3/myprodDB/ONLINELOG/
pdb_file_name_convert                string

Comparing the settings:

  • LogFileNameConvert=’+DATA/MYDATABASE/ONLINELOG/, +DATA/myprodDB/ONLINELOG/, +DATA2/MYDATABASE/ONLINELOG/, +DATADG2/myprodDB/ONLINELOG/,+DATA3/MYDATABASE/ONLINELOG/’, +DATADG3/myprodDB/ONLINELOG/’
  • log_file_name_convert=+DATA/MYDATABASE/ONLINELOG/,+DATA/myprodDB/ONLINELOG/,+DATA/MYDATABASE/ONLINELOG/, +DATADG2/myprodDB/ONLINELOG/,+DATA/MYDATABASE/ONLINELOG/, +DATADG3/myprodDB/ONLINELOG/

Everything seems all right.

What’s the problem then?

This is the interesting part. When we check on MOS Usage and Limitation of db_file_name_convert and log_file_name_convert (Doc ID 1367014.1) we find:

When using the Data Guard Broker the Values for these Parameters are limited to 512 Bytes (Characters) due to the Limit of the corresponding Data Guard Broker Properties ‘DbFileNameConvert’ and ‘LogFileNameConvert’.

This was news to me! So, possible alternatives are:

  • Use OMF (Oracle Managed Files).
  • Use the same file structure on both sites (if they’re different and would be under the limit).
  • Rename and create datafiles/redo log files manually.

In my case, I checked and confirmed with the client that the only places for the logfiles were DATA and DATA2 (multiplexed). So the fix was easy:

edit database 'myprodDB' set property 'LogFileNameConvert' = "+DATA/MYDATABASE/ONLINELOG/,+DATADG/myprodDB/ONLINELOG/,+DATA2/MYDATABASE/ONLINELOG/, +DATADG2/myprodDB/ONLINELOG/";

Once done:

DGMGRL> show configuration;

Configuration - my_dg_configuration

  Protection Mode: MaxPerformance
  Members:
  myprodDB - Primary database
    mySTDB      - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 3 seconds ago)

DGMGRL> show database myprodDB;

Database - myprodDB

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    MYDATABASE

Database Status:
SUCCESS

DGMGRL> show database mySTDB;

Database - mySTDB

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 0 seconds ago)
  Apply Lag:          0 seconds (computed 0 seconds ago)
  Average Apply Rate: 325.00 KByte/s
  Real Time Query:    OFF
  Instance(s):
    mySTDB

Database Status:
SUCCESS

DGMGRL> show database verbose myprodDB;

Database - myprodDB

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    MYDATABASE

  Properties:
    DGConnectIdentifier             = 'myprodDB.'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    RedoRoutes                      = ''
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '0'
    TransportLagThreshold           = '0'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '1800'
    LogArchiveMaxProcesses          = '4'
    LogArchiveMinSucceedDest        = '1'
    DbFileNameConvert               = '+DATA/MYDATABASE/DATAFILE/, +DATA/myprodDB/DATAFILE'
    LogFileNameConvert              = '+DATA/MYDATABASE/ONLINELOG/,+DATADG/myprodDB/ONLINELOG/,+DATA2/MYDATABASE/ONLINELOG/,+DATADG2/myprodDB/ONLINELOG/'
    FastStartFailoverTarget         = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myprodDB_DGMGRL)(INSTANCE_NAME=MYDATABASE)(SERVER=DEDICATED)))'
    StandbyArchiveLocation          = 'USE_DB_RECOVERY_FILE_DEST'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = 'MYDATABASE_%t_%s_%r.arc'
    TopWaitEvents                   = '(monitor)'

Database Status:
SUCCESS

I hope this helps!

As always, please leave any questions or thoughts in the comments.

No Comments Yet

Let us know what you think

Subscribe by email