GI/RDBMS version: 19c
OS : RHEL 8.4
I have few basic questions on Transparent Application Failover (TAF) and Transaction application continuity
Question1. Are my below statements accurate ?
Until 11.2.0.4, TAF meant, if I am using a RAC service which is TAF enabled, and if one instance crashes, the SELECT queries are failed over to the available instance. Only the SELECT queries and no DMLs like UPDATE,INSERT,DELETE will be failed over.
Starting from 12.1, TAF can failover DMLs (like UPDATE,INSERT,DELETE) as well to the available nodes on a RAC environment in case any interruption happens to it including node/service/network failure. This feature is called Transparent Application Continuity
Question2.
As per the below 19c doc, to implement Transaction application continuity, the user-defined RAC service should be created with the following attributes and the connection string which the application uses should use this TAC enabled RAC service. Am I right ?
https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/ensuring-application-continuity.html#GUID-1EAB6E4B-24DE-4D90-ABF8-682D1712E57F
$ srvctl add service -db ORCL \
-service app_sales_tac \
-pdb PDB_SALES \
-preferred ORCL1,ORCL2 \
-failovertype AUTO \
-failover_restore AUTO \
-failoverdelay 5 \
-failoverretry 30 \
-commit_outcome TRUE \
-replay_init_time 600 \
-drain_timeout 300
Question3. What exactly does drain_timeout 300 mean in the above command ?
Does drain_timeout 300 mean sessions using this service will be given 5 minutes to complete their task and If a session cannot complete a task in 5 minutes, that session will be forcibly relocated to the available instance ?
Question4. Is ‘Transaction guard’ another name for Transparent application continuity ?