TRANSPARENT APPLICATION FAILOVER WITH SCAN
Transparent Application Failover is process by which the sessions are automatically failover to the other available instance in the cluster database. New connection would be point to the available instance on the cluster database and if you have any active transaction and it will be rollback to the last committed transaction.
TRANSPARENT APPLICATION FAILOVER (TAF) FAILOVER METHODS
(METHOD = BASIC/PRECONNECT)
BASIC FAILOVER
The second connection to the available instance is made only if and when the primary instance is down or disconnected for some reason.
PRECONNECT FAILOVER
The Second connection to another available instance is made at the same time as the connection to the primary instance. Having the backup connection already in place can reduce the time needed for a failover in the event that one needs to take place. We have considered the Over Head while the sessions are pre-connected.
TRANSPARENT APPLICATION FAILOVER (TAF) FAILOVER TYPE
(TYPE=SESSION/SELECT/NONE)
SESSIONWhen the TYPE= Session specified, it will failover to the available instance in the cluster database and it doesn’t continue with selected, if it is in the process. OCI will start the select process again.
SELECT
When the type=select specified, it will failover to the available instance in the cluster database and the failover process also replays the queries that is in the progress.
NONE
No failover function is used. When you specify it as none, no failover function will be used.
TAF can be configured at the Oracle Client side in tnsnames.ora or at the Database Server side using srvctl
SRVCTL SYNTAX FOR CREATING SERVICE
srvctl add service -d <db_unique_name> -s <service_name>
-r "<preferred_list>" [-a "<available_list>"] [-P {BASIC | NONE | PRECONNECT}]
-g <server_pool> [-c {UNIFORM | SINGLETON}]
[-k <net_num>]
[-l [PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]]
[-y {AUTOMATIC | MANUAL}]
[-q {TRUE|FALSE}]
[-x {TRUE|FALSE}]
[-j {SHORT|LONG}]
[-B {NONE|SERVICE_TIME|THROUGHPUT}]
[-e {NONE|SESSION|SELECT}]
-- This defines the type of TAF whether SESSION or SELECT.
[-m {NONE|BASIC}]
--This defines the method of TAF.
[-z <failover_retries>]
-- the number of times to attempt to connect after a failover.
[-w <failover_delay>]
-- the amount of time in seconds to wait between connect attempts.
-r "<preferred_list>" [-a "<available_list>"] [-P {BASIC | NONE | PRECONNECT}]
-g <server_pool> [-c {UNIFORM | SINGLETON}]
[-k <net_num>]
[-l [PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]]
[-y {AUTOMATIC | MANUAL}]
[-q {TRUE|FALSE}]
[-x {TRUE|FALSE}]
[-j {SHORT|LONG}]
[-B {NONE|SERVICE_TIME|THROUGHPUT}]
[-e {NONE|SESSION|SELECT}]
-- This defines the type of TAF whether SESSION or SELECT.
[-m {NONE|BASIC}]
--This defines the method of TAF.
[-z <failover_retries>]
-- the number of times to attempt to connect after a failover.
[-w <failover_delay>]
-- the amount of time in seconds to wait between connect attempts.
SYNTAX
srvctl add service -d <db_unique_name> -s <service_name>
-r "<preferred_list>" [-a "<available_list>"] [-P {BASIC | NONE | PRECONNECT}]
[-e {NONE|SESSION|SELECT}]
[-m {NONE|BASIC}]
[-z <failover_retries>]
[-w <failover_delay>]
PRECONNECT USING SCAN NAMES
When you are connecting using the scan names and having the failover method as PRE-CONNECT then you use should configured with the (preferred instance & available instance).
Ex:
Bhuvan =
(description =
(address = (protocol=tcp)(host=bhuvanrac-scan)(port=1521))
(connect_data=
(service_name=bhuvanrac)
(failover_mode= (backup=bhuvanrac_preconnect)
(type=select) (method=preconnect)
)
) )
bhuvanrac_preconnect =
(description =
(address = (protocol=tcp)(host=bhuvanrac-scan)(port=1521))
(connect_data=(service_name=bhuvanrac_preconnect))
)
BASIC USING SCAN NAMES
SCAN provides load balancing and failover for client connections to the database. The SCAN works as a cluster alias for databases in the cluster.
bhuvanrac =
(description =
(address = (protocol=tcp)(host=bhuvanrac-scan)(port=1521))
(connect_data=(service_name=bhuvanrac))
)
JDBC connection
BHUVAN=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=bhuora01)(Port=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=bhuora02)(PORT = 1521))
(CONNECT_DATA=(SERVICE_NAME=BHUVANRAC)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))))
TNS ENTRY
BHUVAN=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(Host=bhuora01)(Port=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=bhuora02)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=BHUVANRAC)
(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))))
Start the service
$ srvctl start service -d <DB_NAME> -s <SERVICE_NAME>
$ srvctl start service -d <DB_NAME> -s <SERVICE_NAME>
Stop the service
$ srvctl stop service -d <DB_NAME> -s <SERVICE_NAME>
$ srvctl stop service -d <DB_NAME> -s <SERVICE_NAME>
To Modify the service
$ srvctl modify service -d <DB_NAME> -s <SERVICE_NAME>
To see the configuration of the service
$ srvctl config service -d <DB_NAME> -s <SERVICE_NAME>
select inst_id,username,service_name,failover_type, failover_method,failed_over from gv$session where username='BHUVAN';
No comments:
Post a Comment