Configurare la continuità dell'applicazione su Autonomous Database

Per configurare Application Continuity, è necessario abilitare la continuità dell'applicazione per il servizio di database utilizzato dall'applicazione e configurare il tipo di failover e il timeout di rimozione. Inoltre, è necessario impostare diversi parametri della stringa di connessione che abilitano l'alta disponibilità.

Configurare il servizio per abilitare la continuità dell'applicazione

Utilizzare DBMS_APP_CONT_ADMIN per abilitare la continuità di applicazione o la continuità di applicazione trasparente:

  • Application Continuity (AC): impostare questa opzione di failover utilizzando la procedura DBMS_APP_CONT_ADMIN.ENABLE_AC. La procedura ENABLE_AC richiede tre parametri: SERVICE NAME è il nome del servizio da modificare, FAILOVER_RESTORE, impostato su LEVEL1 per selezionare Application Continuity (AC) e REPLAY_INITIATION_TIMEOUT è il timeout di ripetizione che specifica quanti secondi dopo la sottomissione di una richiesta per consentire la ripetizione della richiesta.

    Ad esempio, come utente ADMIN, per abilitare la continuità di applicazione per il servizio TPURGENT:

    execute DBMS_APP_CONT_ADMIN.ENABLE_AC(
            'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
  • Transparent Application Continuity (TAC): impostare questa opzione di failover utilizzando la procedura DBMS_APP_CONT_ADMIN.ENABLE_TAC. La procedura ENABLE_TAC richiede tre parametri: SERVICE NAME è il nome del servizio da modificare, FAILOVER_RESTORE, impostato su AUTO per selezionare Transparent Application Continuity (TAC) e REPLAY_INITIATION_TIMEOUT è il timeout di ripetizione che specifica quanti secondi dopo la sottomissione di una richiesta per consentire la ripetizione della richiesta.

    Ad esempio, come utente ADMIN, per abilitare Transparent Application Continuity per il servizio TP con il timeout di ripetizione impostato su 20 minuti:

    execute DBMS_APP_CONT_ADMIN.ENABLE_TAC(
            'databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
    
  • Disabilitato: disabilitare il failover utilizzando la procedura DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER().

    Ad esempio, come utente ADMIN, per disabilitare il failover per il servizio TP:

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

Trova parametro nome servizio per continuità applicazione

A seconda del tipo di carico di lavoro, utilizzare un comando simile a quello riportato di seguito in SELECT da DBA_SERVICES nel database e identificare il servizio in cui si desidera abilitare la continuità di applicazione.

  • Data warehouse

    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                   
  • Elaborazione delle transazioni o Database JSON

    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                   

Si noti che FAILOVER_TYPE per il servizio high non ha alcun valore e indica che la continuità di applicazione è disabilitata.

Verifica che la continuità di applicazione sia abilitata per un servizio

A seconda del tipo di carico di lavoro, controllare l'output della query su DBA_SERVICES per verificare che la continuità di applicazione sia abilitata.

  • Data warehouse

    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                   
  • Elaborazione delle transazioni o Database JSON

    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                   

Il valore FAILOVER_TYPE del servizio high è ora AUTO, per indicare che la Transparent Application Continuity (TAC) è abilitata e il valore FAILOVER_TYPE per il servizio tpurgent è ora TRANSACTION, per indicare che la Application Continuity (AC) è abilitata.

Uso di FAN (Fast Application Notification)

Quando si esegue la connessione ad Autonomous Database, il database Oracle configura automaticamente FAN. Per le distribuzioni di applicazioni con Autonomous Database, gli eventi FAN (Fast Application Notification) per indisponibilità non pianificate vengono indirizzati al Connection Manager (CMAN) e non è necessario alcun passo di configurazione dell'applicazione client per utilizzare FAN.

FAN viene gestito automaticamente dal driver client e da Autonomous Database Connection Manager (CMAN):

  • Per gli eventi di manutenzione pianificati, FAN viene inviato in banda, direttamente ai driver. Ciò richiede che le applicazioni utilizzino i pool Oracle o il TAC per definire i limiti delle richieste o per utilizzare i test di connessione.
  • I driver client Oracle Database e Oracle vengono rimossi dai test di connessione e, se richiesto, dai limiti.

Per ulteriori informazioni, consulta la sezione relativa alla configurazione client per la disponibilità continua su Autonomous Database.

Configura stringa di connessione per High Availability

Per mantenere l'alta disponibilità, Oracle consiglia di impostare determinati parametri della stringa di connessione quando ci si connette a Oracle Autonomous Database.

Impostare i parametri CONNECT_TIMEOUT, RETRY_DELAY, RETRY_COUNT e TRANSPORT_CONNECT_TIMEOUT nella stringa di connessione quando ci si connette a Oracle Autonomous Database. Le stringhe di connessione incorporate nel file tnsnames.ora fornito da Oracle sono preconfigurate con i valori appropriati per la maggior parte delle applicazioni. In alcuni casi, a seconda delle esigenze delle applicazioni, potrebbe essere necessario modificare i valori preconfigurati per una stringa di connessione.

Utilizzare questo TNS per tutti i client Oracle versione 12.2 o successiva:

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)))

Utilizzare quanto riportato di seguito per le connessioni JDBC che utilizzano il driver Oracle versione 12.1 o precedente.

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)))

Note per le stringhe di connessione:

  • Per i client JDBC e ODP, il tempo di attesa della connessione al pool deve essere configurato in modo da essere più lungo del valore CONNECT_TIMEOUT nella stringa di connessione.

  • Non utilizzare Easy Connect Naming sul client perché tali connessioni non dispongono di funzionalità ad alta disponibilità.

Per informazioni sul file tnsnames.ora, vedere Download delle credenziali client (wallet).

Configura opzioni client specifiche del driver

A seconda del client e del driver, è necessario assicurarsi che il client sia configurato correttamente per utilizzare la continuità di applicazione quando ci si connette ad Autonomous Database

Configura driver thin JDBC

Mostra i dettagli per utilizzare la continuità dell'applicazione con Autonomous Database con un client utilizzando il driver Thin JDBC.

Se l'applicazione utilizza il driver Thin JDBC, attenersi alle procedure consigliate riportate di seguito.

  1. Utilizzare la cache delle istruzioni JDBC per copertura e prestazioni.

    Per una migliore copertura e prestazioni, utilizzare la cache delle istruzioni del driver JDBC al posto di una cache delle istruzioni di Application Server. Ciò consente al conducente di sapere che le istruzioni sono chiuse e che la memoria deve essere liberata al termine delle richieste.

    Per utilizzare la cache delle istruzioni JDBC, utilizzare la proprietà di connessione oracle.jdbc.implicitStatementCacheSize (OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE). La cache delle istruzioni è per connessione. Il valore della dimensione della cache corrisponde al numero di open_cursors. Ad esempio:

    oracle.jdbc.implicitStatementCacheSize=nnn, dove nnn è in genere compreso tra 10 e 100 ed è uguale al numero di cursori aperti gestiti dall'applicazione.

  2. Regola il Garbage Collector.

    Per molte applicazioni è sufficiente l'ottimizzazione di Garbage Collector predefinita. Per le applicazioni che restituiscono e mantengono grandi quantità di dati, è possibile utilizzare valori più elevati, ad esempio 2 GB o più grandi. Ad esempio:

    java -Xms3072m -Xmx3072m 

    Si consiglia di impostare l'allocazione di memoria per la dimensione heap Java iniziale (ms) e la dimensione heap massima (mx) sullo stesso valore. Ciò impedisce l'utilizzo delle risorse di sistema durante la crescita e la riduzione dell'heap di memoria.

  3. Quando si utilizza Universal Connection Pool (UCP), disabilitare Fast Connection Failover. Ad esempio:

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configura driver Oracle Call Interface (OCI)

Mostra i dettagli per utilizzare la continuità di applicazione con Autonomous Database con un client utilizzando il driver Oracle Call Interface (OCI).

Se l'applicazione client utilizza il driver Oracle Call Interface (OCI), seguire questa procedura consigliata:

  • Sostituire OCIStmtPrepare con OCIStmtPrepare2. OCIStmtPrepare() è obsoleto dalla versione 12.2. Tutte le applicazioni devono utilizzare OCIStmtPrepare2(). La continuità di applicazione trasparente (TAC, Transparent Application Continuity) e la continuità di applicazione (AC, Application Continuity) consentono l'utilizzo di OCIStmtPrepare senza riprodurre questa istruzione.

Non configurare i server ONS in oraaccess.xml:

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

Inoltre, per Autonomous Database Serverless, non configurare la sezione <fan>:

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

Configura driver provider non gestito ODP.NET

Mostra i dettagli per utilizzare la continuità di applicazione con Autonomous Database con un client utilizzando il driver provider non gestito ODP.NET.

Il driver ODP.NET Unmanaged Provider utilizza automaticamente la continuità di applicazione quando la continuità di applicazione è abilitata nel servizio di database utilizzato dall'applicazione per connettersi ad Autonomous Database.

Quando si connette un'applicazione ODP.NET ad Autonomous Database Serverless, non configurare i server ONS in oraaccess.xml:

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