Configura driver per disponibilità continua

In questo articolo viene descritto come configurare i driver per la disponibilità continua.

Configura driver thin JDBC

  1. Assicurarsi che tutte le patch consigliate vengano applicate al client. Fare riferimento alla nota MOS Matrice di convalida client per continuità di applicazione (ID documento 2511448.1).

  2. Usa cache 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.

  3. Sintonizza 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.

  4. Classi calcestruzzo JDBC

    Per le applicazioni JDBC, Oracle non supporta classi concrete oracle.sql non più valide BLOB, CLOB, BFILE, OPAQUE, ARRAY, STRUCT o ORADATA. Vedere la nota MOS 1364193.1, Nuove interfacce JDBC. Usare ORAchk -acchk sul client per sapere se un'applicazione passa. L'elenco delle classi concrete limitate per il driver di ripetizione JDBC è ridotto a quanto segue a partire da Oracle JDBC-thin driver versione 18c e successive: oracle.sql.OPAQUE, oracle.sql.STRUCT, oracle.sql.ANYDATA

  5. Configura Fast Connection Failover (FCF)

    Ciò corrisponde all'abilitazione della sottoscrizione agli eventi FAN.

    Per i driver client 12c e versioni successive:

    • Utilizza l'URL consigliato per i componenti automatici

    • Verificare che ons.jar (più i vasi WALLET opzionali, osdt_cert.jar, osdt_core.jar, oraclepki.jar) si trovino sul CLASSPATH

    • Impostare la proprietà del pool o del driver fastConnectionFailoverEnabled=true

    • Connection pool UCP (consigliato) o di terze parti

    • Porta aperta 6200 per ONS (6200 è la porta predefinita, è possibile che sia stata scelta una porta diversa)

    Per i driver client prima della release 12c, utilizzare gli indirizzi indicati di seguito.

    • Imposta oracle.ons.nodes =XXX01:6200, XXX02:6200, XXX03:6200

Configurazione del driver OCI (Oracle Call Interface)

  1. Assicurarsi che tutte le patch consigliate vengano applicate al client. Fare riferimento alla nota MOS Matrice di convalida client per la continuità di applicazione (ID documento 251148.1).

  2. Sostituire OCIStmtPrepare con OCIStmtPrepare2. OCIStmtPrepare() è obsoleto dalla versione 12.2. Tutte le applicazioni devono utilizzare OCIStmtPrepare2(). TAC e AC consentono l'uso di OCIStmtPrepare ma non ripetono questa istruzione.

  3. Per utilizzare FAN per le applicazioni basate su OCI, effettuare le operazioni riportate di seguito.

    • aq_ha_notifications è preimpostato sui servizi

    • Utilizzare la stringa di connessione consigliata per le funzioni automatiche

    • Impostare auto_config, events e wallet_location (facoltativo) in oraaccess.xml, come descritto in Configurare i client per FAN inclusi i wallet facoltativi.

    • Collegare l'applicazione alla libreria di thread del client O/S

    • Aprire la porta 6200 per ONS (6200 è la porta predefinita, è possibile che sia stata scelta una porta diversa). Per i driver client precedenti alla release 12c, utilizzare gli indirizzi forniti in oraccess.xml.

Configura driver provider non gestito ODP.NET

  1. Assicurarsi che tutte le patch consigliate vengano applicate al client. Fare riferimento alla nota MOS Matrice di convalida client per la continuità di applicazione (ID documento 251148.1).

  2. Per utilizzare FAN per le applicazioni basate su Oracle Call Interface, effettuare le operazioni riportate di seguito.

    • aq_ha_notifications è preimpostato sui servizi

    • Utilizzare la stringa di connessione consigliata per le funzioni automatiche

    • Impostare onsConfig e wallet_location (facoltativo) in oraaccess.xml, come descritto in Configurare i client per FAN inclusi i wallet facoltativi.

    • Porta aperta 6200 per ONS (6200 è la porta predefinita, è possibile che sia stata scelta una porta diversa)

    • Impostare FAN nella stringa di connessione: "user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true;".

    • (Facoltativo) Impostare il bilanciamento del carico di runtime, anche nella stringa di connessione: "user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true; load balancing=true;".

Abilita attributi servizio per failover

La continuità di applicazione trasparente è abilitata per impostazione predefinita per i servizi predefiniti tp_tls, tp, tpurgent_tls e tpurgent, quindi non è necessario eseguire alcuna operazione se si utilizza uno di essi. Inoltre, il valore DEFAULT per FAILOVER_RESTORE è AUTO.

È possibile modificare il tipo di failover offerto nel servizio utilizzando il pacchetto DBMS_APP_CONT_ADMIN. Utilizzare questa API per abilitare Continuità di applicazione, Continuità di applicazione trasparente o TAF (Transparent Application Failover) o per disabilitare del tutto il failover. Le nuove sessioni utilizzeranno il nuovo tipo di failover. Per utilizzare queste procedure è necessario essere amministratori.

Per abilitare la continuità di applicazione trasparente per un servizio, effettuare le operazioni riportate di seguito.

execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('databaseid_high.atp.oraclecloud.com');

Per abilitare la continuità di applicazione per un servizio:

execute DBMS_APP_CONT_ADMIN.ENABLE_AC('databaseid_tpurgent.atp.oraclecloud.com');

Per abilitare TAF SELECT per un servizio:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('databaseid_low.atp.oraclecloud.com');

Per abilitare TAF BASIC per un servizio:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('databaseid_medium.atp.oraclecloud.com', 'SESSION');

Per disabilitare il failover per un servizio:

execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('databaseid_high.atp.oraclecloud.com');

Se si desidera utilizzare TAF senza modificare i servizi, utilizzare la configurazione lato client precedente per TAF nella stringa di connessione:

(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(OVERRIDE=TRUE))

Configura attributi servizio per manutenzione

All'avvio della manutenzione pianificata, le sessioni che devono essere svuotate vengono contrassegnate per essere svuotate. Le sessioni inattive vengono rilasciate gradualmente. Le sessioni attive vengono scaricate al termine del lavoro in esecuzione in tale sessione. Il drenaggio delle sessioni è ampiamente utilizzato con i connection pool Oracle e i livelli intermedi configurati per FAN (Fast Application Notification). A partire da Oracle Database 18c, il database stesso scarica le sessioni quando i database vengono arrestati o riposizionati. Il drenaggio è sempre la soluzione migliore per nascondere la manutenzione pianificata.

Le soluzioni di failover come la continuità di applicazione sono il fallback quando il lavoro non svanirà nel tempo allocato.

Un timeout di rimozione, in secondi, e un'opzione stop possono essere impostati su un servizio utilizzando il pacchetto DBMS_APP_CONT_ADMIN. Per utilizzare queste procedure è necessario essere amministratori.

Per regolare il timeout di rimozione a 600 secondi e impostare l'opzione di arresto su IMMEDIATE:

execute DBMS_APP_CONT_ADMIN.SET_DRAINING('databaseid_high.atp.oraclecloud.com', 600, 'IMMEDIATE' );

Per regolare solo timeout rimozione:

execute DBMS_APP_CONT_ADMIN.SET_DRAINING('databaseid_tpurgent.atp.oraclecloud.com', 600);

Transparent Application Continuity (TAC) è un'opzione di failover impostata 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 (TAC) per il servizio TP con il timeout di ripetizione impostato su 20 minuti:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('databaseid_tp.atp.oraclecloud.com', 'AUTO', 1200);

Application Continuity (AC) è un'opzione di failover impostata mediante 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);

Configurare i client per FAN, inclusi i wallet facoltativi

L'autenticazione basata su wallet è un'opzione per FAN quando si utilizza Autonomous AI Database. Utilizzare lo stesso wallet della connessione TNS.

Per le applicazioni JDBC

  1. Assicurarsi che i seguenti file jar siano presenti nel file CLASSPATH dell'applicazione:

     (ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
    
    
  2. Specificare il wallet per FAN in uno dei modi riportati di seguito.

    • Per utilizzare ONS autoconfigurato con i wallet, impostare le proprietà del sistema Java riportate di seguito.

      "-Doracle.ons.walletfile=/replace this with host path/onswallet"
      
      "-Doracle.ons.walletpassword=myONSWalletPassword"
      

      Si noti che questi non possono essere impostati per pool o per connessione.

    • Per impostare esplicitamente ONS, effettuare una delle operazioni riportate di seguito.

      • Imposta in modo esplicito utilizzando un file di configurazione XML UCP. Ad esempio:

                
         <ucp-properties>
         <connection-pool
           connection-pool-name="UCP_pool1"
           user="dbuser"
           password="dbuserpasswd"
           connection-factory-class-name="oracle.jdbc.pool.OracleDataSource"
           initial-pool-size="10"
           min-pool-size="5"
           max-pool-size="15"
           validate-connection-on-borrow="true"
           connection-wait-timeout="900"
           max-connections-per-service="50"
           sql-for-validate-connection="select 1 from dual"
           url="jdbc:oracle:thin:@(DESCRIPTION =(CONNECT_TIMEOUT= 120)(RETRY_COUNT=20) (RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3)(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=standby-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = MY-SERVICE)))"
           fastConnectionFailoverEnabled="true"
           onsConfiguration="nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_with_host_path/onswallet\nwalletpassword=myWalletPassword" >
          </connection-pool>
         </ucp-properties>
        
      • Impostare a livello di programmazione dall'interno di UCP, utilizzando una chiamata a setONSConfiguration(), ad esempio:

        pds.setONSConfiguration("nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_this_with_host_path/onswallet\nwalletpassword=myWalletPassword");
        

Per applicazioni Oracle Call Interface (OCI) che utilizzano il driver Oracle versione 12.2 o più recenti

Aggiungere quanto segue alla sezione <default_parameters> del file oraaccess.xml:

<default_parameters>
      (Other settings may be present in this section)
   <events>
      true
   </events>
   <ons>
      <auto_config>true</auto_config>
      <wallet_location>/my_path/onswallet</wallet_location>
   </ons>
</default_parameters>

Il percorso <wallet_location> deve essere il nome della directory contenente il wallet.

Altri parametri possono essere impostati nella sezione ons di oraaccess.xml, inclusi <hosts>, <max_connections> e <subscription_wait_timeout>.

I driver che supportano i controlli delle impostazioni degli eventi nativi possono omettere la sezione <events> e utilizzare l'impostazione del driver.

Per impostazione predefinita, le connessioni verranno stabilite al database anche se ONS non riesce. Se si preferisce che le connessioni non riescano in questo scenario, è possibile aggiungere una sezione allo stesso livello di <events> e <ons>:

<fan>
   <subscription_failure_action>
      error
   </subscription_failure_action>
</fan>

Posizionare il file oraaccess.xml nella stessa directory dei file di rete tnsnames.ora e sqlnet.ora. Ad esempio, quando si utilizza Oracle Instant Client questi file potrebbero trovarsi nella directory predefinita network/admin. In alternativa, è possibile inserire tutti i file di configurazione di rete in un'altra directory accessibile. Impostare quindi la variabile d'ambiente TNS_ADMIN sul nome della directory.

Provider gestito ODP.Net

Utilizzare il file application.config per specificare la configurazione ONS e la posizione del wallet. Ad esempio:

<oracle.manageddataaccess.client>
    <version number="*">
      <onsConfig mode="remote">
        <settings>
          <setting name="Protocol" value="TCPS" />
          <setting name="WALLET_LOCATION" value="C:\myPath\ONS_SSLWallet" />
        </settings>
        <ons database="atp01db">
          <add name="nodeList" value="racNode1:6205,racNode2:6205,racNode3:6205" />
        </ons>
      </onsConfig>
    </version>
</oracle.manageddataaccess.client>

Contenuto correlato