Ran into an interesting situation recently with a managed services client running Oracle 11.1.0.7.0 Enterprise Edition on Linux in a two node RAC environment with Dataguard.

The client asked to have the dataguard instance changed over to read/write to do some testing.  This is a common request and something that I had done for them in the past.  I ran into some issues during the switchover and had to restore the dataguard instance.  The restore completed successfully and everything was looking good.  I started the redo apply on the standby database using the command alter database recover managed standby database disconnect.  The command completed successfully and I then checked to make sure the logs were being applied by querying the v$managed_standby view.  Everything looked good and the logs were being shipped over and applied.  I then canceled the redo issuing the command alter database recover managed standby database cancel and proceeded to create the standby logs on the physical standby.  The logs created successfully and I then started the redo apply by issuing the command alter database recover managed standby database using current logfile disconnect.  The command completed successfully and I again queried the v$managed_standby view to ensure the logs were applying correctly.  But this time it was not applying the logs and in fact it was looking for sequence# 1 and waiting for gap.  This had me totally baffled on how it went from applying log sequence# 24532 to now looking for sequence# 1.  Especially since the control file being used was a standby control file created from the primary database. No matter what I did the instance was still looking for sequence# 1.

After talking things over with our senior dba the decision was made to restore the database again.  The restore was successful and everything was looking good again.  I started the redo apply by issuing the alter database command and again it went back to looking for sequence# 1.

I started thinking about an issue I had encountered on a different client that had a similar environment.  I would make changes to the init.ora file and restart the database and check the altered parameters and I would find they had been changed back to the original value.  I found out that if you have a dataguard environment and if the parameters in the init.ora file do not match what is in the dataguard configuration they will be overwritten and changed to match.  Knowing this I logged into dgmgrl and dropped the current configuration and recreated everything from the beginning.  After I did that I shut down the physical standby, brought it back up to the mount mode and started the redo apply again.  When I checked the v$managed_standby view the logs were being applied correctly and looking for the current sequence#.

Share This