Transparent Application Failover

From Oracle FAQ
⧼orafaq-jumptonavigation⧽⧼orafaq-jumptosearch⧽

Transparent Application Failover or TAF is a SQL*Net configuration that allows session fail-over between different nodes of a RAC database cluster.

Limitations

TAF only works for idle sessions and SELECT statements. The following operations will give an error (user program must restart the operation after fail-over):

  • PL/SQL program units - stored procedures, functions, packages
  • DML - INSERT, UPDATE, DELETE, SELECT ... FOR UPDATE
  • DDL - CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE, etc.

If your program executes one of the above operations, you will receives an ORA-25408 error. It is then up to the application to check if the failed statement can be re-issued.

Configuration

Sample tnsnames.ora entries to configure TAF:

sales =
 (DESCRIPTION =
   (ENABLE=BROKEN)
   (LOAD_BALANCE=yes)
     (ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))
     (ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=sales)
     (FAILOVER_MODE =
        (TYPE=session)
        (METHOD=basic)
        (RETRIES=10)
        (DELAY=10)
     )
   )
 )

Non-TAF entries to connect directly to specific instances:

node1_sales =
 (DESCRIPTION =
     (ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))
   (CONNECT_DATA =
     (SERVICE_NAME=sales)
     (INSTANCE_NAME=sales1)
   )
 )
node2_sales =
 (DESCRIPTION =
     (ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521))
   (CONNECT_DATA =
     (SERVICE_NAME=sales)
     (INSTANCE_NAME=sales2)
   )
 )