Configuración de la continuidad de aplicaciones en Autonomous Database

Para configurar la continuidad de aplicaciones, debe activar la continuidad de aplicaciones para el servicio de base de datos que utiliza la aplicación y configurar el tipo de failover y el timeout de drenaje. Además, debe definir varios parámetros de cadena de conexión que permitan alta disponibilidad.

Configuración del servicio para activar la continuidad de aplicaciones

Utilice DBMS_APP_CONT_ADMIN para activar la continuidad de aplicaciones o la continuidad de aplicaciones transparente:

  • Continuidad de aplicaciones (CA): defina esta opción de failover mediante el procedimiento DBMS_APP_CONT_ADMIN.ENABLE_AC. El procedimiento ENABLE_AC toma tres parámetros: SERVICE NAME es el nombre del servicio que se va a cambiar, FAILOVER_RESTORE, definido en LEVEL1 para seleccionar la continuidad de aplicaciones (AC) y REPLAY_INITIATION_TIMEOUT, es el timeout de reproducción que especifica cuántos segundos después de enviar una solicitud se permite que se reproduzca dicha solicitud.

    Por ejemplo, como usuario ADMIN, para activar la continuidad de aplicaciones para el servicio TPURGENT:

    execute DBMS_APP_CONT_ADMIN.ENABLE_AC(
            'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
  • Continuidad de aplicaciones transparente (TAC): defina esta opción de failover mediante el procedimiento DBMS_APP_CONT_ADMIN.ENABLE_TAC. El procedimiento ENABLE_TAC toma tres parámetros: SERVICE NAME es el nombre del servicio que se va a cambiar, FAILOVER_RESTORE, definido en AUTO para seleccionar la continuidad de aplicaciones transparente (TAC) y REPLAY_INITIATION_TIMEOUT es el timeout de reproducción que especifica cuántos segundos después de enviar una solicitud se permite la reproducción de dicha solicitud.

    Por ejemplo, como usuario ADMIN, para activar la continuidad de aplicaciones transparente para el servicio TP con el timeout de reproducción definido en 20 minutos:

    execute DBMS_APP_CONT_ADMIN.ENABLE_TAC(
            'databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
    
  • Desactivado: desactive el failover mediante el procedimiento DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER().

    Por ejemplo, como usuario ADMIN, para desactivar el failover para el servicio TP:

    execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER(
            'databaseid_tp.adb.oraclecloud.com');
    

Búsqueda del parámetro de nombre de servicio para la continuidad de aplicaciones

Según el tipo de carga de trabajo, utilice un comando similar al siguiente para ejecutar SELECT desde DBA_SERVICES en la base de datos e identifique el servicio en el que desea activar la continuidad de aplicaciones:

  • Almacén de datos

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- -------------
    nvt21_adb1_low.adb.oraclecloud.com                      
    nvt21_adb1_high.adb.oraclecloud.com                     
    nvt21_adb1_medium.adb.oraclecloud.com                   
  • Transaction Processing or JSON Database

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- ----------------
    nvt21_adb1_tp.adb.oraclecloud.com                        
    nvt21_adb1_tpurgent.adb.oraclecloud.com                 
    nvt21_adb1_low.adb.oraclecloud.com                       
    nvt21_adb1_high.adb.oraclecloud.com                      
    nvt21_adb1_medium.adb.oraclecloud.com                   

Observe que FAILOVER_TYPE para el servicio high no tiene ningún valor e indica que la continuidad de aplicaciones está desactivada.

Verificar que la continuidad de aplicación está activada para un servicio

Según el tipo de carga de datos, compruebe la salida de la consulta en DBA_SERVICES para verificar que la continuidad de aplicaciones está activada.

  • Almacén de datos

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- --------------
    nvt21_adb1_low.adb.oraclecloud.com                      
    nvt21_adb1_high.adb.oraclecloud.com                     AUTO
    nvt21_adb1_medium.adb.oraclecloud.com                   
  • Transaction Processing or JSON Database

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- --------------
    nvt21_adb1_tp.adb.oraclecloud.com                       
    nvt21_adb1_tpurgent.adb.oraclecloud.com                 TRANSACTION
    nvt21_adb1_low.adb.oraclecloud.com                       
    nvt21_adb1_high.adb.oraclecloud.com                     AUTO
    nvt21_adb1_medium.adb.oraclecloud.com                   

El valor FAILOVER_TYPE para el servicio high es ahora AUTO, lo que indica que la continuidad de aplicaciones transparente (TAC) está activada y el valor FAILOVER_TYPE para el servicio tpurgent es ahora TRANSACTION, lo que indica que la continuidad de aplicaciones (AC) está activada.

Uso de FAN (Fast Application Notification)

Al conectarse a Autonomous Database, la base de datos Oracle configura automáticamente FAN. Para despliegues de aplicaciones con Autonomous Database, los eventos de Fast Application Notifications (FAN) para interrupciones no planificadas se dirigen al gestor de conexiones (CMAN) y no se necesitan pasos de configuración de la aplicación cliente para utilizar FAN.

FAN lo gestiona automáticamente el controlador de cliente y Autonomous Database Connection Manager (CMAN):

  • Para los eventos de mantenimiento planificados, FAN se envía en banda directamente a los controladores. Para ello, es necesario que las aplicaciones utilicen los pools de Oracle o la CA para los límites de las solicitudes o que utilicen pruebas de conexión.
  • Los controladores de cliente de Oracle Database y Oracle usan todas las pruebas de conexión y los límites de solicitud.

Consulte Configuración de cliente para una disponibilidad continua en Autonomous Database para obtener más información.

Configuración de una cadena de conexión para alta disponibilidad

Para mantener una alta disponibilidad, Oracle recomienda definir determinados parámetros de cadena de conexión al conectarse a Oracle Autonomous Database.

Al conectarse a Oracle Autonomous Database, defina los parámetros CONNECT_TIMEOUT, RETRY_DELAY, RETRY_COUNT y TRANSPORT_CONNECT_TIMEOUT en la cadena de conexión. Las cadenas de conexión incrustadas en el archivo tnsnames.ora proporcionado por Oracle están preconfiguradas con los valores adecuados para la mayoría de las aplicaciones. En algunos casos, según las necesidades de las aplicaciones, puede que necesite cambiar los valores predefinidos de una cadena de conexión.

Utilice este TNS para todos los clientes de Oracle versión 12.2 o superior:

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 90)(RETRY_COUNT=50)
(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
(ADDRESS_LIST =
  (LOAD_BALANCE=on)
  (ADDRESS = (PROTOCOL = TCP)(HOST=scan-host)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME = service-name)))

Utilice lo siguiente para conexiones JDBC con la versión 12.1 o anterior del controlador de Oracle:

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 15)(RETRY_COUNT=50)
(RETRY_DELAY=3)
(ADDRESS_LIST =  
   (LOAD_BALANCE=on)  
   (ADDRESS = (PROTOCOL = TCP)(HOST=scan-host)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME = service-name)))

Notas sobre las cadenas de conexión:

  • Para los clientes JDBC y ODP, el tiempo de espera de conexión del pool se debe configurar para que sea mayor que CONNECT_TIMEOUT en la cadena de conexión.

  • No utilice la denominación de conexión sencilla en el cliente porque dichas conexiones no tienen capacidades de alta disponibilidad.

Consulte Descarga de credenciales de cliente (carteras) para obtener información sobre el archivo tnsnames.ora.

Configuración de opciones de cliente específicas del controlador

En función del cliente y el controlador, se debe asegurar de que el cliente está configurado correctamente para utilizar la continuidad de aplicaciones al conectarse a Autonomous Database

Configuración del controlador JDBC Thin

Muestra detalles para utilizar la continuidad de aplicaciones con Autonomous Database con un cliente mediante el controlador JDBC Thin.

Si la aplicación utiliza el controlador JDBC Thin, sigue estas prácticas recomendadas:

  1. Uso de la caché de sentencias JDBC para cobertura y rendimiento.

    Para obtener la mejor cobertura y rendimiento, utilice la caché de sentencias del controlador JDBC en lugar de una caché de sentencias del servidor de aplicaciones. Esto permite al controlador saber que las sentencias se cierran y la memoria que se va a liberar al final de las solicitudes.

    Para utilizar la caché de sentencias JDBC, utilice la propiedad de conexión oracle.jdbc.implicitStatementCacheSize (OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE). La caché de sentencias es por conexión. El valor del tamaño de la caché coincide con el número de open_cursors. Por ejemplo:

    oracle.jdbc.implicitStatementCacheSize=nnn donde nnn está normalmente entre 10 y 100 y es igual al número de cursores abiertos que mantiene la aplicación.

  2. Ajuste del recopilador de elementos no utilizados.

    Para muchas aplicaciones, el ajuste por defecto del recopilador de elementos no utilizados es suficiente. Para las aplicaciones que devuelven y mantienen grandes cantidades de datos, puede utilizar valores más altos, como 2 GB o más. Por ejemplo:

    java -Xms3072m -Xmx3072m 

    Se recomienda definir la asignación de memoria para el tamaño inicial de montón de Java (ms) y el tamaño máximo de montón (mx) en el mismo valor. Esto evita el uso de recursos del sistema al aumentar y reducir el montón de la memoria.

  3. Al utilizar Universal Connection Pool (UCP), desactivar Fast Connection Failover. Por ejemplo:

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configuración del controlador Oracle Call Interface (OCI)

Muestra detalles para utilizar la continuidad de aplicaciones con Autonomous Database con un cliente mediante el controlador de Oracle Call Interface (OCI).

Si la aplicación cliente utiliza el controlador de Oracle Call Interface (OCI), siga esta práctica recomendada:

  • Sustituya OCIStmtPrepare por OCIStmtPrepare2. OCIStmtPrepare() está en desuso desde la versión 12.2. Todas las aplicaciones deben utilizar OCIStmtPrepare2(). La continuidad de aplicaciones transparente (CAT) y la continuidad de aplicaciones (CA) permiten OCIStmtPrepare, pero no reproducen esta sentencia.

No configure los servidores ONS en oraaccess.xml:

<ons>
   <servers> 
   <!—Do not enter any values --> 
   </servers> 
</ons>

Además, para Autonomous Database Sin servidor, no configure la sección <fan>:

<fan>  
<!-- only possible values are "trace" or "error" -->  
    <subscription_failure_action>
   </subscription_failure_action>  
</fan>

Configuración del controlador de proveedor no gestionado de ODP.NET

Muestra los detalles para utilizar la continuidad de aplicaciones con Autonomous Database con un cliente mediante el controlador de proveedor no gestionado ODP.NET.

El controlador de proveedor no gestionado ODP.NET utiliza automáticamente la continuidad de aplicaciones cuando la continuidad de aplicaciones está activada en el servicio de base de datos que utiliza la aplicación para conectarse a Autonomous Database.

Al conectar una aplicación ODP.NET a una aplicación sin servidor de Autonomous Database, no configure los servidores ONS en oraaccess.xml:

<ons>
   <servers> 
   <!—Do not enter any values --> 
   </servers> 
</ons>