Configurare la continuità di applicazione su Autonomous Database

Per configurare la continuità di applicazione, è necessario abilitare la continuità di 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 la continuità di applicazione (AC) e REPLAY_INITIATION_TIMEOUT, è il timeout di ripetizione che specifica quanti secondi dopo la sottomissione di una richiesta per consentire la ripetizione di tale 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 TAC (Transparent Application Continuity) e REPLAY_INITIATION_TIMEOUT è il timeout di ripetizione che specifica quanti secondi dopo la sottomissione di una richiesta per consentire la ripetizione di tale richiesta.

    Ad esempio, come utente ADMIN, per abilitare la continuità di applicazione trasparente 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');
    

Trovare il parametro del nome del servizio per la continuità di applicazione

A seconda del tipo di carico di lavoro in uso, utilizzare un comando simile al seguente 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                   

Notare che il valore FAILOVER_TYPE per il servizio high non è valido 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 in uso, controllare l'output della query in 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 per il servizio high è ora AUTO, a indicare che è abilitata la TAC (Transparent Application Continuity) e che il valore FAILOVER_TYPE per il servizio tpurgent è ora TRANSACTION, a indicare che è abilitata la continuità di applicazione (AC).

Utilizzare FAN (Fast Application Notification)

Quando ci si connette ad Autonomous Database, il database Oracle si configura automaticamente FAN. Per le distribuzioni di applicazioni con Autonomous Database, gli eventi FAN (Fast Application Notification) per interruzioni non pianificate vengono indirizzati al Connection Manager (CMAN) e non sono necessari passi di configurazione delle applicazioni client per utilizzare FAN.

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

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

Per ulteriori informazioni, vedere 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 si esegue la connessione 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 di 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 Scarica credenziali client (wallet).

Configura opzioni client specifiche del driver

A seconda del client e del driver in uso, è necessario assicurarsi che il client sia configurato in modo appropriato per utilizzare la continuità di applicazione quando si esegue la connessione ad Autonomous Database.

Configura driver thin JDBC

Mostra i dettagli per utilizzare la continuità di 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 ottenere copertura e prestazioni ottimali, utilizzare la cache delle istruzioni del driver JDBC al posto della cache delle istruzioni di Application Server. Ciò consente al conducente di sapere che le istruzioni sono chiuse e che la memoria deve essere liberata alla fine 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. Ottimizzare il Garbage Collector.

    Per molte applicazioni è sufficiente il tuning Garbage Collector predefinito. Per le applicazioni che restituiscono e conservano 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 della memoria per la dimensione heap Java iniziale (ms) e la dimensione heap massima (mx) sullo stesso valore. Ciò impedisce di utilizzare le risorse di sistema per aumentare e ridurre l'heap di memoria.

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

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configurare il driver OCI (Oracle Call Interface)

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), attenersi alla procedura consigliata riportata di seguito.

  • Sostituire OCIStmtPrepare con OCIStmtPrepare2. OCIStmtPrepare() non è più valido dalla versione 12.2. Tutte le applicazioni devono utilizzare OCIStmtPrepare2(). La continuità di applicazione trasparente (TAC) e la continuità di applicazione (AC) consentono OCIStmtPrepare ma non ripetono 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>

Configurare il driver del provider non gestito ODP.NET

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

Il driver del provider non gestito ODP.NET 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 al serverless di Autonomous Database, non configurare i server ONS in oraaccess.xml:

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