Configura driver per disponibilità continua
Questo articolo descrive come configurare i driver per la disponibilità continua.
Argomenti correlati
Configura driver thin JDBC
-
Assicurarsi che tutte le patch consigliate vengano applicate sul client. Fare riferimento alla nota MOS Matrice di convalida client per la continuità di applicazione (ID documento 2511448.1).
-
Usa cache 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 diopen_cursors
. Ad esempio:oracle.jdbc.implicitStatementCacheSize=nnn
dovennn
è in genere compreso tra 10 e 100 ed è uguale al numero di cursori aperti gestiti dall'applicazione. -
Ottimizza 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.
-
Classi calcestruzzo JDBC
Per le applicazioni JDBC, Oracle non supporta le classi concrete
oracle.sql
non più valide BLOB, CLOB, BFILE, OPAQUE, ARRAY, STRUCT o ORADATA. Vedere la nota MOS 1364193.1, Nuove interfacce JDBC. UsareORAchk -acchk
sul client per sapere se un'applicazione viene superata. La lista di classi concrete limitate per il driver di ripetizione JDBC viene ridotta a quanto segue a partire dalla versione 18c e successive del driver Oracle JDBC thin:oracle.sql.OPAQUE
,oracle.sql.STRUCT
,oracle.sql.ANYDATA
-
Configura FCF (Fast Connection Failover)
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 (oltre ai file JAR WALLET opzionali, osdt_cert.jar, osdt_core.jar, oraclepki.jar) si trovi sul CLASSPATH
- Impostare la proprietà pool o driver fastConnectionFailoverEnabled=true
- UCP (consigliato) o connection pool di terze parti
- Porta aperta 6200 per ONS (6200 è la porta predefinita, è possibile che sia stata scelta un'altra porta)
Per i driver client precedenti a 12c utilizzare gli indirizzi forniti:
- Impostare oracle.ons.nodes =XXX01:6200, XXX02:6200, XXX03:6200
Configurare il driver OCI (Oracle Call Interface)
-
Assicurarsi che tutte le patch consigliate vengano applicate sul client. Fare riferimento alla nota MOS Matrice di convalida client per la continuità di applicazione (ID documento 251148.1).
-
Sostituire
OCIStmtPrepare
conOCIStmtPrepare2
.OCIStmtPrepare()
non è più valido dalla versione 12.2. Tutte le applicazioni devono utilizzareOCIStmtPrepare2()
. TAC e AC consentonoOCIStmtPrepare
ma non replicano questa istruzione. -
Per utilizzare FAN per le applicazioni basate su OCI, effettuare le operazioni riportate di seguito.
- aq_ha_notifications è preimpostato sui servizi
- Usa la stringa di connessione consigliata per i componenti automatici
- Impostare auto_config, eventi e wallet_location (facoltativo) in oraaccess.xml, come descritto in Configura client per FAN inclusi wallet facoltativi.
- Collegare l'applicazione alla libreria di thread del client O/S
- Aprire la porta 6200 per ONS (6200 è la porta predefinita, potrebbe essere stata scelta un'altra porta). Per i driver client precedenti a 12c utilizzare gli indirizzi forniti in oraccess.xml.
Configurare il driver del provider non gestito ODP.NET
-
Assicurarsi che tutte le patch consigliate vengano applicate sul client. Fare riferimento alla nota MOS Matrice di convalida client per la continuità di applicazione (ID documento 251148.1).
-
Per utilizzare FAN per le applicazioni basate su Oracle Call Interface, effettuare le operazioni riportate di seguito.
- aq_ha_notifications è preimpostato sui servizi
- Usa la stringa di connessione consigliata per i componenti automatici
- Impostare onsConfig e wallet_location (facoltativo) in oraaccess.xml, come descritto in Configura client per FAN con wallet facoltativi.
- Porta aperta 6200 per ONS (6200 è la porta predefinita, è possibile che sia stata scelta un'altra porta)
- 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
, pertanto non è necessario eseguire alcuna operazione se si utilizza uno di questi servizi. 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 la continuità di applicazione, la continuità di applicazione trasparente o TAF (Transparent Application Failover) o per disabilitare completamente il failover. Le nuove sessioni utilizzeranno il nuovo tipo di failover. Per utilizzare queste procedure è necessario essere un amministratore.
Per abilitare la continuità di applicazione trasparente per un servizio, effettuare le operazioni riportate di seguito.
execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('HIGH');
Per abilitare la continuità di applicazione per un servizio:
execute DBMS_APP_CONT_ADMIN.ENABLE_AC('TPURGENT');
Per abilitare TAF SELECT per un servizio:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('LOW');
Per abilitare TAF BASIC per un servizio, effettuare le operazioni riportate di seguito.
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('MEDIUM', 'SESSION');
Per disabilitare il failover per un servizio:
execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('HIGH');
Se si desidera utilizzare TAF senza modificare i servizi, utilizzare la configurazione lato client meno recente 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 da svuotare sono contrassegnate per lo svuotamento. Le sessioni inattive vengono rilasciate gradualmente. Le sessioni attive vengono scaricate al termine del lavoro eseguito in quella sessione. La rimozione delle sessioni è ampiamente utilizzata con i connection pool Oracle e i livelli medi configurati per FAN (Fast Application Notification). A partire da Oracle Database 18c, il database stesso elimina le sessioni quando i database vengono arrestati o riposizionati. Il drenaggio è sempre la soluzione migliore per nascondere la manutenzione pianificata.
Le soluzioni di failover, ad esempio la continuità di applicazione, rappresentano il fallback quando il lavoro non verrà rimosso nel tempo allocato.
È possibile impostare un timeout di rimozione, in secondi, e un'opzione di arresto su un servizio utilizzando il pacchetto DBMS_APP_CONT_ADMIN
. Per utilizzare queste procedure è necessario essere un amministratore.
Per regolare il timeout di scarico a 600 secondi e impostare l'opzione di arresto su IMMEDIATE:
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('HIGH', 600, 'IMMEDIATE' );
Per regolare solo il timeout di rimozione:
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('TPURGENT', 600);
Configura client per FAN, inclusi wallet facoltativi
L'autenticazione basata su wallet è un'opzione per FAN quando si utilizza Autonomous Database. Utilizzare lo stesso wallet della connessione TNS.
Per le applicazioni JDBC
-
Assicurarsi che i seguenti file jar siano presenti nel file
CLASSPATH
dell'applicazione:(ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
-
Specificare il wallet per FAN in uno dei seguenti modi:
-
Per utilizzare ONS autoconfigurato con i wallet, impostare le seguenti proprietà di sistema Java:
"-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 in modo esplicito ONS, effettuare una delle operazioni riportate di seguito.
-
Impostare in modo esplicito utilizzando un file di configurazione XML UCP. Ad esempio:
<!--?xml version="1.0" encoding="UTF-8"? --> <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 le applicazioni Oracle Call Interface (OCI) che utilizzano il driver Oracle versione 12.2 o più recente
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 che contiene 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 di impostazione degli eventi nativi possono omettere la sezione <events>
e utilizzare invece l'impostazione del driver.
Per impostazione predefinita, le connessioni al database verranno stabilite anche se ONS non riesce. Se si preferisce che le connessioni non funzionino correttamente in questo scenario, è possibile aggiungere una sezione allo stesso livello di <events>
e <ons>
:
<fan> <subscription_failure_action> error </subscription_failure_action> </fan>
Inserire 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, tutti i file di configurazione della rete possono essere inseriti in un'altra directory accessibile. Quindi impostare la variabile di ambiente TNS_ADMIN
sul nome della directory.
ODP.Net Provider gestito
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>