Tuesday, June 29, 2021

ORA-16692: operation disallowed for a database or far sync instance that sends redo data - Converting from Physical Standby Database to Snapshot Standby Database

Configured two physical standby databases for primary database and also setting the RedoRoutes property between these databases.


Primary Database: orcldb

Physical Standby Database: orcldbs 

Physical Standby Database: orcldbp


1. Check the configuration

DGMGRL> show configuration;

Configuration - dg_rac

  Protection Mode: MaxPerformance

  Members:

  orcldb  - Primary database

    orcldbs - Physical standby database

      orcldbp - Physical standby database (receiving current redo)

Fast-Start Failover: DISABLED

Configuration Status:

SUCCESS   (status updated 35 seconds ago)

DGMGRL>


2. Check the RedoRoutes property

DGMGRL> show database orcldb redoroutes;

  RedoRoutes = '(LOCAL : orcldbs SYNC)'

DGMGRL>

DGMGRL> show database orcldbs redoroutes;

  RedoRoutes = '(LOCAL : orcldb SYNC, orcldbp SYNC)(orcldb : orcldbp ASYNC)(orcldbp : orcldb ASYNC)'

DGMGRL>

DGMGRL> show database orcldbp redoroutes;

  RedoRoutes = '(LOCAL : orcldbs SYNC)'

DGMGRL>

3. Configured using following commands

DGMGRL>edit database orcldb set property redoroutes='(LOCAL : orcldbs SYNC)';

Property "redoroutes" updated

DGMGRL>edit database orcldbs set property redoroutes='(LOCAL : orcldb SYNC, orcldbp SYNC)(orcldb : orcldbp ASYNC)(orcldbp : orcldb ASYNC)';

Property "redoroutes" updated

DGMGRL>edit database orcldbp set property redoroutes='(LOCAL : orcldbs SYNC)';

Property "redoroutes" updated

While trying to convert one of the physical standby database to snapshot standby database getting the following error.

DGMGRL> convert database orcldbs to snapshot standby;

Converting database "orcldbs" to a Snapshot Standby database, please wait...

Error: ORA-16692: operation disallowed for a database or far sync instance that sends redo data

Failed.

Failed to convert database "orcldbs"

DGMGRL>

Cause: An attempt was made to delete, disable, or convert (physical standby database) a member that 

has a non-empty value set for its RedoRoutes property.

Action: Reset the value of the RedoRoutes property for the member to be deleted, disabled, or 

converted (physical standby database) to the empty string and then retry the operation.

4. Resetting RedoRoutes property for orcldbs database

DGMGRL> edit database orcldbs set property redoroutes='';

Property "redoroutes" updated

DGMGRL>

DGMGRL> show configuration;

Configuration - dg_rac

  Protection Mode: MaxPerformance

  Members:

  orcldb  - Primary database

    orcldbs - Physical standby database

  Members Not Receiving Redo:

  orcldbp - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:

SUCCESS   (status updated 25 seconds ago)

DGMGRL>

5. Converted to Snapshot Standby Database

DGMGRL> convert database orcldbs to snapshot standby;

Converting database "orcldbs" to a Snapshot Standby database, please wait...

Database "orcldbs" converted successfully

DGMGRL>

6. Login to orcldbs database and check the database role

[oracle@standby ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 29 19:39:09 2021

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select name,open_mode,database_role from v$database;

NAME      OPEN_MODE            DATABASE_ROLE

--------- -------------------- ----------------

ORCLDB    READ WRITE           SNAPSHOT STANDBY

SQL> exit

7. Converted back to physical standby database from snapshot standby database

DGMGRL> convert database orcldbs to physical standby;

Converting database "orcldbs" to a Physical Standby database, please wait...

Operation requires shut down of instance "orcldbs" on database "orcldbs"

Shutting down instance "orcldbs"...

Database closed.

Database dismounted.

ORACLE instance shut down.

Operation requires start up of instance "orcldbs" on database "orcldbs"

Starting instance "orcldbs"...

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE instance started.

Database mounted.

Continuing to convert database "orcldbs" ...

Database "orcldbs" converted successfully

DGMGRL>

DGMGRL> edit database orcldbs set property redoroutes='(LOCAL : orcldb SYNC, orcldbp SYNC)(orcldb : orcldbp ASYNC)(orcldbp : orcldb ASYNC)';

Property "redoroutes" updated

DGMGRL>


DGMGRL> show configuration;

Configuration - dg_rac

  Protection Mode: MaxPerformance

  Members:

  orcldb  - Primary database

    orcldbs - Physical standby database

      orcldbp - Physical standby database (receiving current redo)

Fast-Start Failover: DISABLED

Configuration Status:

SUCCESS   (status updated 7 seconds ago)

DGMGRL>

8. Login to orcldbs database and check the database role

[oracle@standby ~]$ . oraenv

ORACLE_SID = [orcldbs] ?

The Oracle base remains unchanged with value /u01/app/oracle

[oracle@standby ~]$

[oracle@standby ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 29 19:59:41 2021

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select open_mode,database_role from v$database;

OPEN_MODE            DATABASE_ROLE

-------------------            ------------------------

READ ONLY WITH APPLY PHYSICAL STANDBY

SQL>