Question:
I want to deploy fast_start failover, but I don't
understand the steps for enabling fast_start failover and
verifying that fast_start failover is working? Can
you help?
Answer: (By Rampant aauthor Laurent Schneider:)
Prerequisites for fast_start failover include:
- Enable fast_start failover you must have a working
set of primary / standby databases.
- Both databases must be in flashback mode.
- Verify your Data Guard configuration with OEM.
You will need to review your Data Guard property.
lsc01 my primary, lsc05 my
standby
edit database lsc01 set LogXptMode='SYNC';
edit database lsc01 set FastStartFailoverTarget= 'lsc05'
edit database lsc05 set LogXptMode='SYNC';
edit database lsc05 set FastStartFailoverTarget= 'lsc01'
EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Next, you need to start the fast_start failover observer
(using the Data Guard dgmgrl -silent "start observer" command.
You submit this dgmgrl command in the background with the nohup
command so it is always running as a daemon process.:
nohup dgmgrl -silent sys/*** "start observer" &
note: it does not work if you connect with /. You will get
DGM-16979 if you use / or if you use different passwords in standby
and primary.
Now that we have the fast_start failover prerequisites, enable
fast_start failover in dgmgrl:
DGMGRL> enable fast_start failover
Before you switch, check the listener.ora is correctly configured
:
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=LSC01_DGMGRL.example.com)
(SID_NAME=LSC01)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
)
(SID_DESC=
(GLOBAL_DBNAME=LSC05_DGMGRL.example.com)
(SID_NAME=LSC05)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = precision.example.com)(PORT = 1521))
)
The GLOBAL_DBNAME is mandatory to enable a painless switchover.
Otherwise the standby startup will fail with ORA-12514.
UPDATE: FOR 11GR2
Alternatively in 11gR2 and beyond,
you can set the Data Guard property StaticConnectIdentifier
to use a SID instead of service name :
edit database lsc05 set property StaticConnectIdentifier=
'(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=precision.example.com)(PORT=1521))
(CONNECT_DATA=(SID=LSC05)))';
edit database lsc01 set property StaticConnectIdentifier=
'(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=precision.example.com)(PORT=1521))
(CONNECT_DATA=(SID=LSC01)))';
In this case you will not need global_dbname in listener.ora.
(See MOSC note 308943.1)
OK, let's see how fast I can switch
$ time dgmgrl -silent sys/*** "switchover to lsc05"
Performing switchover NOW, please wait...
New primary database "lsc05" is opening...
Operation requires shutdown of instance "LSC01" on database "lsc01"
Shutting down instance "LSC01"...
ORACLE instance shut down.
Operation requires startup of instance "LSC01" on database "lsc01"
Starting instance "LSC01"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "lsc05"
real 1m10.685s
user 0m0.052s
sys 0m0.109s
About one minute. most of the time was spent restarting the
original primary as a standby, the primary was already available for
queries after about 20 seconds.
|
|
Get the Complete
Oracle SQL Tuning Information
The landmark book
"Advanced Oracle
SQL Tuning The Definitive Reference" is
filled with valuable information on Oracle SQL Tuning.
This book includes scripts and tools to hypercharge Oracle 11g
performance and you can
buy it
for 30% off directly from the publisher.
|