Saturday, December 8, 2012

ORA 16654

Note:  Proofread any scripts before using. Always try scripts on a test instance first. This Blog is not responsible for any damage.


ORA-16654: Fast-Start Failover is enabled:

I recently received this error when tried to disable the dataguard broker to recreate standby database.

As dataguard broker was configured, to recreate the standby database the first step should be stopping fast-start failover service.

When I tried to disable the parameter, this happened:

SQL> alter system set dg_broker_start=false;

ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16654: Fast-Start Failover is enabled

I got the solution in this case using the below steps : 

1. disable fast-start failover using dgmgrl
2. stop the broker 
3. recreate the standby database and
4. then re-enable fast-start failover
5. crosscheck the configuration

STEP 1:

oracle@primary_db$ dgmgrl /
DGMGRL for Solaris: Version 10.2.0.4.0 - 64bit Production
Copyright (c) 2000, 2005, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected.

DGMGRL> connect sys/@
DGMGRL> disable fast_start failover; /* (USE FORCE in-case if it fails to STOP - disable fast_start failover force;) */
DGMGRL> disable configuration;

DGMGRL> stop observer;
DGMGRL> exit

STEP 2:

oracle@primary_db$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Sat Dec 8 12:11:13 2012
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Data Mining and Real Application Testing options

SQL> alter system set dg_broker_start=false;
System altered.

STEP 3:

Recreate Standby database

STEP 4:

SQL> alter system set dg_broker_start=true;
System altered.
SQL> exit
oracle@primary_db$ dgmgrl /
DGMGRL for Solaris: Version 10.2.0.4.0 - 64bit Production
Copyright (c) 2000, 2005, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected.

DGMGRL> connect sys
PASSWORD:
DGMGRL> enable configuration;
DGMGRL> enable fast_start failover;
DGMGRL> start observer;
/* Start Observer in background (nohup dgmgrl -silent -logfile /path/observer_$(date '+%d%m%Y').log sys/oracle@primary_db "start observer" &) using script or from OEM and the window from where the observer started shows as hung(which actually is not) and will not show the command prompt, it just runs from the window where it started. In-case if that window is closed forcely or for some reasons, it shows error in show configuration command */ 

STEP 5:

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW CONFIGURATION VERBOSE;
DGMGRL> SHOW DATABASE VERBOSE 'PROD';

Alternatively, you can query v$database like this:
SQL> select FS_FAILOVER_STATUS,FS_FAILOVER_OBSERVER_PRESENT,FS_FAILOVER_OBSERVER_HOST 
     from v$database;

Oracle ASM Concepts

Note: Proofread any scripts before using. Always try scripts on a test instance first. This Blog is not responsible for any damage. O...