Application Continuity in Autonomous Database konfigurieren

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

Service zur Aktivierung von Application Continuity konfigurieren

Verwenden Sie DBMS_APP_CONT_ADMIN, um Anwendungskontinuität oder transparente Anwendungskontinuität zu aktivieren:

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

    Beispiel: So aktivieren Sie als ADMIN-Benutzer Application Continuity für den TPURGENT-Service:

    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 wird auf AUTO gesetzt, um Transparent Application Continuity (TAC) auszuwählen, und REPLAY_INITIATION_TIMEOUT ist der Wiedergabetimeout, der angibt, wie viele Sekunden nach der Weiterleitung einer Anforderung die Wiedergabe dieser Anforderung zulässig ist.

    Beispiel: So aktivieren Sie als ADMIN-Benutzer Transparent Application Continuity für den TP-Service mit einem Wiedergabetimeout von 20 Minuten:

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

    Beispiel: So deaktivieren Sie als ADMIN-Benutzer Failover für den TP-Service:

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

Servicenamensparameter für Application Continuity suchen

Je nach Workload-Typ verwenden Sie einen SELECT-Befehl ähnlich dem folgenden, um aus DBA_SERVICES den Service in der Datenbank zu identifizieren, in dem 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-Datenbank

    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 der FAILOVER_TYPE-Wert für den high-Service keinen Wert enthält 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 DBA_SERVICES-Abfrage, 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-Datenbank

    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 lautet jetzt AUTO. Dadurch wird angegeben, dass Transparent Application Continuity (TAC) aktiviert ist. Außerdem lautet der FAILOVER_TYPE-Wert für den tpurgent-Service jetzt TRANSACTION. Dadurch wird angegeben, dass Application Continuity (AC) aktiviert ist.

Fast Application Notification (FAN) verwenden

Wenn Sie eine Verbindung zu Autonomous Database herstellen, 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 zur Verwendung von FAN erforderlich.

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

  • Für geplante Wartungsereignisse wird FAN In-Band direkt an die Treiber weitergeleitet. Dies setzt voraus, dass Anwendungen Oracle-Pools oder TAC für Anforderungsgrenzen oder Verbindungstests verwenden.
  • Die Oracle Database- und Oracle-Clienttreiber führen bei Verbindungstests und bei Anforderungsgrenzen einen Drain-Vorgang aus.

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

Verbindungszeichenfolge für High Availability konfigurieren

Oracle empfiehlt, dass Sie bestimmte Parameter für Verbindungszeichenfolgen festlegen, 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 eingebettete Verbindungszeichenfolge werden mit entsprechenden Werten für die meisten Anwendungen vorkonfiguriert. In einigen Fällen müssen Sie je nach Anwendungsanforderungen 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 für Verbindungszeichenfolgen:

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

  • Verwenden Sie nicht die Easy-Connect-Benennung für den Client, da diese Verbindungen keine Hochverfügbarkeitsfunktionen haben.

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 in Autonomous Database mit einem Client an, der den JDBC Thin-Treiber verwendet.

Wenn Ihre Anwendung den JDBC Thin-Treiber verwendet, befolgen Sie die folgenden empfohlenen Übungen:

  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 kann der Treiber am Ende von Anforderungen wissen, 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. Beispiele:

    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. Beispiele:

    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 Fast Connection Failover, wenn Sie den UCP (Universal Connection Pool) verwenden. Beispiele:

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Oracle Call Interface-(OCI-)Treiber konfigurieren

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

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

  • 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, geben diese Anweisung jedoch nicht wieder.

Konfigurieren Sie keine ONS-Server in oraaccess.xml:

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

Konfigurieren Sie außerdem für Autonomous Database Serverless 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 in Autonomous Database mit einem Client an, der den Treiber für nicht verwaltete Provider ODP.NET verwendet.

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

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

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