"Transparent Application Failover (TAF) es una característica del manejador Java Database Connectivity (JDBC) Oracle Call Interface (OCI). Permite a la aplicación reconectarse automáticamente a una base de datos, si falla la conexión a la instancia de la base de datos".
Por lo tanto, si tienes algunas instancias corriendo con Data Guard puedes configurar TAF en esas instancias y tener recuperación de fallas automática, lo cual implica crear un servicio controlado por un trigger de la base de datos que estará arriba sólo en la instancia primaria, como puedes ver en esta transcripción:
myserver >sqlplus /nolog
SQL*Plus: Release 11.1.0.7.0 - Production on Tue Feb 1 15:19:59 2011
Copyright (c) 1982, 2008, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> EXEC DBMS_SERVICE.CREATE_SERVICE (service_name => 'taf_mydb',
network_name => 'taf_mydb', aq_ha_notifications => TRUE,
failover_method => 'BASIC', failover_type => 'SESSION',
failover_retries => 180, failover_delay => 5);
PL/SQL procedure successfully completed.
SQL> CREATE OR REPLACE TRIGGER SYS.MANAGE_TAF_SERVICE
AFTER STARTUP ON DATABASE
DECLARE
ROLE VARCHAR(30) := NULL;
BEGIN
SELECT TRIM(DATABASE_ROLE) INTO ROLE FROM V$DATABASE;
IF ROLE = 'PRIMARY' THEN
DBMS_SERVICE.START_SERVICE('taf_mydb');
ELSE
DBMS_SERVICE.STOP_SERVICE('taf_mydb');
END IF;
END;
/
Trigger created.
SQL> alter system archive log current;
System altered.
SQL> exit;
myserver >lsnrctl status LISTENER_mydb
LSNRCTL for Linux: Version 11.1.0.7.0 - Production on 01-FEB-2011 15:29:03
Copyright (c) 1991, 2008, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.50)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER_mydb
Version TNSLSNR for Linux: Version 11.1.0.7.0 - Production
Start Date 31-JAN-2011 15:47:49
Uptime 0 days 23 hr. 41 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle_11g/product/11.1.0/network/admin/listener.ora
Listener Log File /oracle_11g/product/diag/tnslsnr/myserver/listener_mydb/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.50)(PORT=1521)))
Services Summary...
Service "taf_mydb" has 1 instance(s).
Instance "mydb", status READY, has 1 handler(s) for this service...
Service "mydb" has 2 instance(s).
Instance "mydb", status UNKNOWN, has 1 handler(s) for this service...
Instance "mydb", status READY, has 2 handler(s) for this service...
Service "mydb_XPT" has 1 instance(s).
Instance "mydb", status READY, has 1 handler(s) for this service...
The command completed successfully
Tienes que hacer la configuración arriba mencionada sólo en tu base de datos primaria, y esta configuración será propagada a la base de datos en espera con la sentencia alter system archive log current.
Si leíste cuidadosamente y entendiste el primer párrafo de este mensaje, te habrás dado cuenta que TAF es de hecho implementado del lado del cliente; tu configuraste las instancias para lanzar un servicio especial que estará activo sólo en la instancia primaria en todo momento, pero el cliente es quien decide a qué servicio conectarse. Por lo tanto, tienes que configurar el tnsnames de esta forma:
MYDATABASE =
(DESCRIPTION =
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.50) (PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.60) (PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = taf_mydb)
(FAILOVER_MODE =
(TYPE = SESSION)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
En este ejemplo, te conectarás a MYDATABASE que está compuesto por la instancia primaria (192.168.1.50) y la instancia en espera (192.168.1.60). Y si vas a usar Java, no olvides que TAF no funciona con los manejadores Thin, tienes que usar los manejadores OCI. Recordar esto puede salvarte de muchos problemas con tus compañeros administradores de WAS.
Más información:
Failover Connections for Data Guard Error with ORA-1033 [ID 461874.1]
Transparent Application Failover
No hay comentarios.:
Publicar un comentario