Application Continuity in Autonomous Database konfigurieren

Um Application Continuity zu konfigurieren, müssen Sie die Anwendungskontinuität für den von Ihrer Anwendung verwendeten Datenbankservice aktivieren und den Failover-Typ und den Drain-Timeout konfigurieren. Darüber hinaus müssen Sie mehrere Parameter für Verbindungszeichenfolgen festlegen, die High Availability ermöglichen.

Service für Application Continuity konfigurieren

Mit DBMS_APP_CONT_ADMIN können Sie Application Continuity oder Transparent Application Continuity aktivieren:

  • Application Continuity (AC): Legen Sie diese Failover-Option mit der Prozedur DBMS_APP_CONT_ADMIN.ENABLE_AC fest. Die ENABLE_AC-Prozedur nimmt drei Parameter an: SERVICE NAME ist der zu ändernde Servicename, FAILOVER_RESTORE, auf LEVEL1 gesetzt, um Application Continuity (AC) auszuwählen, und REPLAY_INITIATION_TIMEOUT ist der Wiedergabe-Timeout, der angibt, wie viele Sekunden nach dem Weiterleiten einer Anforderung die Wiedergabe dieser Anforderung zulässig ist.

    Beispiel: Um Application Continuity für den Service TPURGENT zu aktivieren, müssen Sie als ADMIN-Benutzer:

    execute DBMS_APP_CONT_ADMIN.ENABLE_AC(
            'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
  • Transparent Application Continuity (TAC): Legen Sie diese Failover-Option mit der Prozedur DBMS_APP_CONT_ADMIN.ENABLE_TAC fest. Die Prozedur ENABLE_TAC nimmt drei Parameter an: SERVICE NAME ist der zu ändernde Servicename, FAILOVER_RESTORE, auf AUTO gesetzt, um Transparent Application Continuity (TAC) auszuwählen, und REPLAY_INITIATION_TIMEOUT ist der Wiedergabe-Timeout, der angibt, wie viele Sekunden nach der Weiterleitung einer Anforderung zur Wiedergabe dieser Anforderung liegen.

    Beispiel: Um Transparent Application Continuity für den Service TP mit einem Wiedergabe-Timeout von 20 Minuten als ADMIN-Benutzer zu aktivieren, gehen Sie wie folgt vor:

    execute DBMS_APP_CONT_ADMIN.ENABLE_TAC(
            'databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
    
  • Deaktiviert: Deaktivieren Sie das Failover mit der Prozedur DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER().

    Beispiel: Um als ADMIN-Benutzer das Failover für den TP-Service zu deaktivieren:

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

Servicenamensparameter für Application Continuity suchen

Verwenden Sie je nach Workload-Typ einen Befehl ähnlich dem folgenden SELECT aus DBA_SERVICES in Ihrer Datenbank, und identifizieren Sie den Service, für den Sie Application Continuity aktivieren möchten:

  • 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                   
  • Transaktionsverarbeitung oder 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                   

Beachten Sie, dass FAILOVER_TYPE für den high-Service keinen Wert aufweist und angibt, dass Application Continuity deaktiviert ist.

Prüfen, ob Application Continuity für einen Service aktiviert ist

Prüfen Sie je nach Workload-Typ die Ausgabe der Abfrage in DBA_SERVICES, um zu prüfen, ob Application Continuity aktiviert ist.

  • 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                   
  • Transaktionsverarbeitung oder 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                   

Der FAILOVER_TYPE-Wert für den high-Service ist jetzt AUTO. Damit wird angegeben, dass Transparent Application Continuity (TAC) aktiviert ist und der FAILOVER_TYPE-Wert für den tpurgent-Service jetzt TRANSACTION lautet. Damit wird angegeben, dass Application Continuity (AC) aktiviert ist.

Fast Application Notification (FAN) verwenden

Beim Herstellen einer Verbindung zu Autonomous Database konfiguriert die Oracle-Datenbank FAN automatisch. Bei Anwendungs-Deployments mit Autonomous Database werden Fast Application Notification-(FAN-)Ereignisse für ungeplante Ausfälle an den Connection Manager (CMAN) weitergeleitet, und es sind keine Konfigurationsschritte für Clientanwendungen erforderlich, um FAN zu verwenden.

FAN wird automatisch vom Clienttreiber und vom Autonomous Database Connection Manager (CMAN) verarbeitet:

  • Bei geplanten Wartungsereignissen wird FAN in Band direkt an die Treiber gesendet. Dies erfordert, dass Anwendungen Oracle Pools oder TAC für Anforderungsgrenzen verwenden oder Verbindungstests verwenden.
  • Die Oracle Database- und Oracle-Clienttreiber nutzen Verbindungstests und Anforderungsgrenzen.

Weitere Informationen finden Sie unter Clientkonfiguration für kontinuierliche Verfügbarkeit in Autonomous Database.

Verbindungszeichenfolge für High Availability konfigurieren

Um High Availability aufrechtzuerhalten, empfiehlt Oracle, bestimmte Parameter für Verbindungszeichenfolgen festzulegen, wenn Sie eine Verbindung zu Oracle Autonomous Database herstellen.

Legen Sie die Parameter CONNECT_TIMEOUT, RETRY_DELAY, RETRY_COUNT und TRANSPORT_CONNECT_TIMEOUT in der Verbindungszeichenfolge fest, wenn Sie eine Verbindung zu Oracle Autonomous Database herstellen. Die in die von Oracle bereitgestellte Datei tnsnames.ora eingebetteten Verbindungszeichenfolgen werden mit den entsprechenden Werten für die meisten Anwendungen vorkonfiguriert. In einigen Fällen müssen Sie, je nach den Anforderungen Ihrer Anwendungen, die vorkonfigurierten Werte für eine Verbindungszeichenfolge ändern.

Verwenden Sie diesen TNS für alle Oracle-Clients ab Version 12.2:

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

Verwenden Sie Folgendes für JDBC-Verbindungen mit Oracle-Treiberversion 12.1 oder niedriger.:

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

Hinweise zu Verbindungszeichenfolgen:

  • Bei JDBC- und ODP-Clients muss die Wartezeit der Poolverbindung so konfiguriert werden, dass sie länger als CONNECT_TIMEOUT in der Verbindungszeichenfolge ist.

  • Verwenden Sie nicht Easy Connect-Benennung für den Client, da solche Verbindungen nicht über High-Availability-Funktionen verfügen.

Informationen zur Datei tnsnames.ora finden Sie unter Clientzugangsdaten (Wallets) herunterladen.

Treiberspezifische Clientoptionen konfigurieren

Je nach Client und Treiber müssen Sie sicherstellen, dass der Client ordnungsgemäß für die Verwendung von Application Continuity konfiguriert ist, wenn Sie eine Verbindung zu Autonomous Database herstellen

JDBC Thin-Treiber konfigurieren

Zeigt Details zur Verwendung von Application Continuity mit Autonomous Database mit einem Client, der den JDBC-Thin-Treiber verwendet.

Wenn Ihre Anwendung den JDBC-Thin-Treiber verwendet, befolgen Sie diese empfohlenen Vorgehensweisen:

  1. JDBC-Anweisungscache für Abdeckung und Performance verwenden.

    Um eine optimale Abdeckung und Performance zu erzielen, verwenden Sie den Anweisungscache des JDBC-Treibers anstelle des Anweisungscache eines Anwendungsservers. Dadurch wird der Treiber am Ende von Anforderungen informiert, dass Anweisungen geschlossen sind und der Arbeitsspeicher freigegeben werden muss.

    Um den JDBC-Anweisungscache zu verwenden, verwenden Sie die Verbindungseigenschaft oracle.jdbc.implicitStatementCacheSize (OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE). Der Anweisungscache ist verbindungsabhängig. Der Wert für die Cachegröße entspricht der Anzahl von open_cursors. Beispiel:

    oracle.jdbc.implicitStatementCacheSize=nnn, wobei nnn in der Regel zwischen 10 und 100 liegt und der Anzahl der geöffneten Cursor in der Anwendung entspricht.

  2. Garbage Collector optimieren.

    Für viele Anwendungen ist die standardmäßige Optimierung des Garbage Collectors ausreichend. Für Anwendungen, die große Datenmengen zurückgeben und aufbewahren, können Sie höhere Werte verwenden, z.B. 2 GB oder mehr. Beispiel:

    java -Xms3072m -Xmx3072m 

    Es wird empfohlen, die Arbeitsspeicherzuweisung für die anfängliche Java Heap-Größe (ms) und die maximale Heap-Größe (mx) auf denselben Wert zu setzen. Dadurch wird verhindert, dass Systemressourcen den Arbeitsspeicher-Heap vergrößern und verkleinern.

  3. Deaktivieren Sie bei Verwendung des Universal Connection Pools (UCP) Fast Connection Failover. Beispiel:

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Oracle Call Interface-(OCI-)Treiber konfigurieren

Zeigt Details zur Verwendung von Application Continuity mit Autonomous Database mit einem Client, der den Oracle Call Interface-(OCI-)Treiber verwendet.

Wenn die Clientanwendung den Oracle Call Interface-(OCI-)Treiber verwendet, befolgen Sie diese empfohlene Übung:

  • Ersetzen Sie OCIStmtPrepare durch OCIStmtPrepare2. OCIStmtPrepare() ist seit 12.2 veraltet. Alle Anwendungen müssen OCIStmtPrepare2() verwenden. Transparent Application Continuity (TAC) und Application Continuity (AC) lassen OCIStmtPrepare zu, wiederholen diese Anweisung jedoch nicht.

Konfigurieren Sie keine ONS-Server in oraaccess.xml:

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

Konfigurieren Sie für Autonomous Database Serverless auch den Abschnitt <fan> nicht:

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

Treiber für nicht verwalteten ODP.NET-Provider konfigurieren

Zeigt Details zur Verwendung von Application Continuity mit Autonomous Database mit einem Client mit dem nicht verwalteten Providertreiber ODP.NET an.

Der ODP.NET-Treiber für nicht verwaltete Provider verwendet Application Continuity automatisch, wenn Application Continuity für den Datenbankservice aktiviert ist, mit dem Ihre Anwendung eine Verbindung zu Autonomous Database herstellt.

Wenn Sie eine ODP.NET-Anwendung mit Ihrer Autonomous Database Serverless verbinden, konfigurieren Sie keine ONS-Server in oraaccess.xml:

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