Enabling Fast Start Failover and the Observer 
Ensure standby redo logs are configured on both primary
and standby databases 
The observer is an Oracle Call Interface (OCI) client-side component that typically runs on aseparate computer and monitors the availability of the primary database
When Does Fast-Start Failover Occur?
Fast-start failover occurs when any of the following conditions are met:
• Loss of connectivity between both the primary database and the observer and between the primary database and the fast-start failover target standby database exceeds the fast-start failover threshold.
• The database health-check mechanism determines any of the following (as optionally configured):
- A data file is offline because of a write error.
- Dictionary corruption of a critical database object occurs.
- Control file is permanently damaged because of a disk failure.
- LGWR is unable to write to any member of the log group because of an I/O error.
- Archiver is unable to archive a redo log because the device is full or unavailable.
• An instance crash occurs for a single-instance database.
• All instances of a Real Application Clusters (RAC) primary database crash.
• Shutdown abort of the primary database occurs.
• An application initiates a fast-start failover by calling the DBMS_DG.INITIATE_FS_FAILOVER function.
Fast-start failover occurs when any of the following conditions are met:
• Loss of connectivity between both the primary database and the observer and between the primary database and the fast-start failover target standby database exceeds the fast-start failover threshold.
• The database health-check mechanism determines any of the following (as optionally configured):
- A data file is offline because of a write error.
- Dictionary corruption of a critical database object occurs.
- Control file is permanently damaged because of a disk failure.
- LGWR is unable to write to any member of the log group because of an I/O error.
- Archiver is unable to archive a redo log because the device is full or unavailable.
• An instance crash occurs for a single-instance database.
• All instances of a Real Application Clusters (RAC) primary database crash.
• Shutdown abort of the primary database occurs.
• An application initiates a fast-start failover by calling the DBMS_DG.INITIATE_FS_FAILOVER function.
SQL> SELECT GROUP#, BYTES/1024, STATUS FROM V$STANDBY_LOG;
Ensure the LogXptMode Property is set to SYNC 
DGMGRL> EDIT DATABASE ORCL SET PROPERTY
'LogXptMode'='SYNC'; 
Property "LogXptMode" updated 
DGMGRL> 
DGMGRL> EDIT DATABASE STDY SET PROPERTY
'LogXptMode'='SYNC'; 
Property "LogXptMode" updated 
DGMGRL> 
Alert log
ALTER SYSTEM SET
log_archive_dest_2='service="stdy"','LGWR SYNC AFFIRM delay=0
optional compression=disable max_failure=0 max_connections=1 reopen=300
db_unique_name="stdy"
net_timeout=30','valid_for=(all_logfiles,primary_role)' SCOPE=BOTH;
ALTER SYSTEM SWITCH
ALL LOGFILE start (orcl)
Thread 1 cannot
allocate new log, sequence 72
Checkpoint not
complete
  Current log# 2 seq# 71 mem# 0:
+DATA/orcl/onlinelog/group_2.264.719142951
  Current log# 2 seq# 71 mem# 1:
+DATA/orcl/onlinelog/group_2.265.719142957
2012-08-28
17:34:32.652000 +05:30
Destination
LOG_ARCHIVE_DEST_2 is SYNCHRONIZED
******************************************************************
LGWR: Setting
'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
NSS2 started with
pid=43, OS id=29520 
2012-08-28
17:34:36.838000 +05:30
LGWR: Standby redo
logfile selected for thread 1 sequence 72 for destination LOG_ARCHIVE_DEST_2
ALTER SYSTEM SWITCH
ALL LOGFILE complete (orcl)
Thread 1 advanced to
log sequence 72 (LGWR switch)
  Current log# 3 seq# 72 mem# 0:
+DATA/orcl/onlinelog/group_3.266.719142961
  Current log# 3 seq# 72 mem# 1:
+DATA/orcl/onlinelog/group_3.267.719142965
Archived Log entry
105 added for thread 1 sequence 71 ID 0x4a53118e dest 1:
2012-08-28
17:34:39.158000 +05:30
Specify the FastStartFailoverTarget property 
DGMGRL> EDIT DATABASE ORCL SET PROPERTY
FastStartFailoverTarget='STDY'; 
Property "faststartfailovertarget" updated 
DGMGRL> EDIT DATABASE STDY SET PROPERTY
FastStartFailoverTarget='ORCL'; 
Property "faststartfailovertarget" updated 
DGMGRL> 
Upgrade the protection mode to MAXAVAILABILITY, if
necessary. 
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS
MAXAVAILABILITY; 
Succeeded. 
DGMGRL> 
ENABLE FAST START FAILOVER 
DGMGRL> show configuration; 
Configuration 
Name: orcl 
Enabled: YES 
Protection Mode: MaxAvailability 
Fast-Start Failover: DISABLED 
Databases: 
orcl - Primary database 
stdy - Physical standby database 
Current status for "orcl": 
SUCCESS 
DGMGRL> SHOW DATABASE STDY;
Database
  Name:            stdy
  Role:            PHYSICAL STANDBY
  Enabled:         YES
  Intended State:  APPLY-ON
  Instance(s):
    stdy
 Current status for "stdy":
SUCCESS
DGMGRL> ENABLE FAST_START FAILOVER; 
Enabled. 
DGMGRL> 
Alert log
2012-03-04 17:25:35.344000 +05:30
FSFP started with pid=45, OS id=3550
DGMGRL> SHOW CONFIGURATION; 
Configuration - orcl_stdy
  Protection Mode:
MaxAvailability
  Databases:
    orcl - Primary
database
      Warning:
ORA-16819: fast-start failover observer not started
    stdy - (*)
Physical standby database
      Warning:
ORA-16819: fast-start failover observer not started
Fast-Start Failover: ENABLED
Configuration Status:
WARNING
Start the observer 
From Another Terminal Start Observer and let it run connect.
May need to bounce Listener once. 
$ dgmgrl 
DGMGRL> connect sys/oracle
Connected. 
DGMGRL> 
DGMGRL> start observer 
Observer started 
OR 
To start Observer in background
$ dgmgrl -logfile ./observer_log
DGMGRL>
connect sys/oracle
Connected.
DGMGRL> start
observer
From another
session
$ tail -100f
observer_log
$ ps -ef|grep observer
oracle   24282
23873  0 09:11 pts/6    00:00:00 rlwrap dgmgrl sys/oracle@orcl
start observer
oracle   24283 24282 
0 09:11 pts/7    00:00:00
dgmgrl                 start observer
oracle   24320 23873 
0 09:12 pts/6    00:00:00 tail
-100f observer_log
oracle   24363 24338 
0 09:12 pts/8    00:00:00 grep
observer
[oracle@server
~]$
Verify the fast-start failover configuration 
DGMGRL> SHOW CONFIGURATION VERBOSE;
Configuration - orcl_stdy
  Protection Mode:
MaxAvailability
  Databases:
    orcl - Primary
database
    stdy - (*)
Physical standby database
   (*) Fast-Start
Failover target
 Fast-Start Failover: ENABLED
   Threshold:        30 seconds
  Target:           stdy
  Observer:         11gr2.rhel5.com
  Lag Limit:        30 seconds (not in use)
  Shutdown Primary:
TRUE
  Auto-reinstate:   TRUE
Configuration Status:
SUCCESS
DGMGRL> SHOW DATABASE STDY; 
Database - stdy
   Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   0 seconds
  Apply Lag:       0 seconds
  Real Time Query: OFF
  Instance(s):
    stdy
Database Status:
SUCCESS
Perform Fast_Start_Failover 
DGMGRL> show fast_start failover;
Fast-Start Failover: ENABLED
  Threshold:        30 seconds
  Target:           stdy
  Observer:         11gr2.rhel5.com
  Lag Limit:        30 seconds (not in use)
  Shutdown Primary:
TRUE
  Auto-reinstate:   TRUE
Configurable Failover Conditions
  Health Conditions:
    Corrupted
Controlfile          YES
    Corrupted
Dictionary           YES
    Inaccessible
Logfile            NO
    Stuck
Archiver                  NO
    Datafile
Offline               YES
  Oracle Error
Conditions:
    (none)
DGMGRL> EDIT CONFIGURATION SET PROPERTY
FASTSTARTFAILOVERLAGLIMIT=45;
Property "faststartfailoverlaglimit" updated
DGMGRL> show fast_start failover;
Fast-Start Failover: ENABLED
  Threshold:        30 seconds
  Target:           stdy
  Observer:         11gr2.rhel5.com
  Lag Limit:        45 seconds (not in use)
  Shutdown Primary:
TRUE
  Auto-reinstate:   TRUE
Configurable Failover Conditions
  Health Conditions:
    Corrupted
Controlfile          YES
    Corrupted
Dictionary           YES
    Inaccessible
Logfile            NO
    Stuck
Archiver                  NO
    Datafile
Offline               YES
  Oracle Error
Conditions:
    (none)
SQL> select database_role from v$database; 
DATABASE_ROLE 
---------------- 
PRIMARY 
On Primary
SQL> shutdown
abort
On Standby
SQL> select
database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
See the Observer
Terminal
DGMGRL> start observer
Observer started
10:28:52.96  Sunday,
June 21, 2009
Initiating fast-start failover to database
"stdy"...
Performing failover NOW, please wait...
Failover succeeded,
new primary is "stdy"
12:46:39.08  Sunday,
June 21, 2009
Hangup
 On Standby
SQL> select
database_role from v$database;
DATABASE_ROLE
----------------
PRIMARY
Before Failover  on
Standby
SQL> SELECT
fs_failover_status, fs_failover_current_target, fs_failover_threshold, fs_failover_observer_present,
fs_failover_observer_host FROM v$database;
FS_FAILOVER_STATUS    FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL
FS_FAILOVER_OBSERVER_HOST
---------------------
------------------------------ --------------------- -------
---------------------------------------------------------
SYNCHRONIZED          stdy                                              30
YES   server.rhel5.com
Before Reinstating on New Primary but After Failover
SQL> SELECT
fs_failover_status, fs_failover_current_target, fs_failover_threshold,
fs_failover_observer_present, fs_failover_observer_host FROM v$database;
FS_FAILOVER_STATUS     FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL
FS_FAILOVER_OBSERVER_HOST
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
REINSTATE
REQUIRED     orcl                                             
30 YES     server.rhel5.com
On Old Primary
SQL> startup
ORACLE instance
started.
Total System Global
Area  213909504 bytes
Fixed Size                  1266656 bytes
Variable Size              83889184 bytes
Database
Buffers          125829120 bytes
Redo Buffers                2924544 bytes
Database mounted.
ORA-16649: database
will open after Data Guard broker has evaluated Fast-Start Failover status
SQL> SQL>
SELECT fs_failover_status, fs_failover_current_target, fs_failover_threshold,
fs_failover_observer_present, fs_failover_observer_host FROM v$database; 
FS_FAILOVER_STATUS     FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL
FS_FAILOVER_OBSERVER_HOST
----------------------
------------------------------ --------------------- -------
--------------------------------------------------------------------------------
BYSTANDER                                                               
30 YES
SQL> show
parameter unique
NAME                                 TYPE        VALUE
------------------------------------
----------- ------------------------------
db_unique_name                       string      ORCL
SQL> select
database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> select
open_mode from v$database;
OPEN_MODE
----------
READ ONLY
SQL>
On Observer Host
DGMGRL> connect
sys/oracle@ORCL
Connected.
DGMGRL> START
OBSERVER
Error: ORA-16795:
database resource guard detects that database re-creation is required
Observer started
11:55:51.63  Sunday, June 21, 2009
Initiating
reinstatement for database "orcl"...
Reinstating database
"orcl", please wait...
Operation requires
shutdown of instance "ORCL" on database "orcl"
Shutting down
instance "ORCL"...
ORA-01109: database
not open
Database dismounted.
ORACLE instance shut
down.
Operation requires
startup of instance "ORCL" on database "orcl"
Starting instance
"ORCL"...
ORACLE instance
started.
Database mounted.
Continuing to
reinstate database "orcl" ...
Reinstatement of database "orcl" succeeded
11:57:15.24  Sunday, June 21, 2009
Hangup
After Reinstating on New Primary
SQL> SELECT
fs_failover_status, fs_failover_current_target, fs_failover_threshold,
fs_failover_observer_present, fs_failover_observer_host FROM v$database; 
FS_FAILOVER_STATUS    FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL
FS_FAILOVER_OBSERVER_HOST
---------------------
------------------------------ --------------------- -------
---------------------------------------------------------
SYNCHRONIZED          orcl                                              30
NO   linux.com
On Old Primary
SQL> select
database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> show
parameter db_unique
NAME                                 TYPE        VALUE
------------------------------------
----------- 
db_unique_name                       string      ORCL
SQL>
Dataguard Broker Configuration after reinstating
DGMGRL> connect
sys/oracle@ORCL
Connected.
DGMGRL> SHOW
CONFIGURATION;
Configuration
  Name:                orcl
  Enabled:             YES
  Protection Mode:     MaxAvailability
  Fast-Start Failover: ENABLED
  Databases:
    orcl - Physical standby database
         - Fast-Start Failover target
    stdy - Primary database
Current status for
"orcl":
SUCCESS
DGMGRL>
Disable Fast Start Failover
DISABLE FAST-START FAILOVER;
Thanks (C0mmands Plz) 
 
 
No comments:
Post a Comment