Oracle JDBC – Häufig gestellte Fragen (FAQ)

Diese FAQs enthalten Antworten zu den am häufigsten gestellten Fragen zu den JDBC-Treibern von Oracle. Beachten Sie, dass diese FAQs nur spezifische technische Fragen behandelt und bekannte Probleme abdeckt. Weitere Informationen zu den Funktionen und dazu, wie diese in Ihrer Anwendung verwendet werden können, finden Sie im JDBC Developer's Guide und in der Javadoc für JDBC. 


Häufig gestellte Fragen

    • Neuerungen in 26ai
    • Gibt es Dokumente für Java-Entwickler, die sich auf Orace Database Cloud beziehen?

JDBC im Allgemeinen

    • Was ist JDBC?
    • Wo kann ich mehr über JDBC erfahren?
    • Wo kann ich mehr über Java erfahren?

Versionsspezifische Fragen

    • Welche Versionen der JBDC-Treiber werden unterstützt?

Freigeben

GA-Datum

Premier Support endet

Erweiterter Support endet

Sustaining Support endet

26KI Jan. 2026
  • Dez. 2031
Dez. 2031 Unbegrenzt
21c (Innovations-Version) Aug. 2021 Jul. 2027 Nicht verfügbar Unbegrenzt
19c (Langfristige Version) Apr. 2019 Dez. 2029 (Siehe Lifetime Support-Richtlinie) Dez. 2032 Unbegrenzt
18c Jul. 2018 Jun. 2021 Nicht verfügbar Unbegrenzt
12,2 Mär. 2017 30. Nov. 2020 (Begrenzter Fehlerkorrekturzeitraum für 12.2.0.1 – 1. Dezember 2020 – 31. März 2022) Nicht verfügbar Unbegrenzt
EE 12.1 Jun. 2013 Jul. 2018 Jul. 2022 Unbegrenzt

    • Was ist die JDBC- und RDBMS-Interoperabilitätsmatrix oder die Zertifizierungsmatrix?

Interoperabilitätsmatrix

Database 23.x

Database 21.x

Database 19.x

Datenbank 18.3

Database 12.2 und 12.1

JDBC 23.x Ja Ja Ja Nein Nein
JDBC 21.x Ja Ja Ja Vorher Vorher
JDBC 19.x Ja Ja Ja Vorher Vorher
JDBC 18.x Nein Vorher Vorher Vorher Vorher
JDBC 12.2 und 12.1 Nein Vorher Vorher Vorher Vorher

    • Was sind die Versionen von Oracle JDBC in Bezug auf die JDK-Versionen?

Version von Oracle Database

Für die Version spezifische JDBC -JAR-Dateien

23.x

ojdbc17.jar mit Unterstützung von JDK17, JDK19,  JDK21 und JDK25 mit Jakarta-APIs


ojdbc11.jar bei JDK11 und JDK21


ojdbc8.jar bei JDK8 und JDK11

21.x

ojdbc11.jar bei JDK11, JDK17, JDK19 und JDK21


ojdbc8.jar bei JDK8 und JDK11

19.x

ojdbc10.jar bei JDK11, JDK17, JDK19 und JDK21 (ab 19.25)


ojdbc8.jar bei JDK8, JDK11, JDK17, JDK19 und JDK21 (ab 19.25)

18.x ojdbc8.jar bei JDK8 und JDK11
12.2 oder 12cR2 ojdbc8.jar bei JDK 8
12.1 oder 12cR1

ojdbc7.jar bei JDK 7 und JDK 8


ojdbc6.jar bei JDK 6

11.2 oder 11gR2

ojdbc6.jar bei JDK 6, JDK 7 und JDK 8


(Hinweis: JDK7 und JDK8 werden nur in 11.2.0.3 und 11.2.0.4 unterstützt)


ojdbc5.jar bei JDK 5

    • Welche JBDC-Spezifikationen werden von den jeweiligen Oracle JDBC-Versionen unterstützt?

Version von Oracle Database

Compliance der JDBC-Spezifikationen

23.x und 21.x

JDBC 4.3 bei ojdbc11.jar


JDBC 4.2 bei ojdbc8.jar

19.x

JDBC 4.3 bei ojdbc10.jar


JDBC 4.2 bei ojdbc8.jar

18.3 JDBC 4.2 bei ojdbc8.jar
12.2 oder 12cR2 JDBC 4.2 bei ojdbc8.jar
12.1 oder 12cR1

JDBC 4.1 bei ojdbc7.jar


JDBC 4.0 bei ojdbc6.jar

11.2 oder 11gR2

JDBC 4.0 bei ojdbc6.jar


JDBC 3.0 bei ojdbc5.jar

Weitere versionsspezifische Fragen

    • Sind die Oracle JDBC-Treiber für OpenJDK zertifiziert?
    • Welcher 19.x JDBC-Treiber wird zur Verwendung mit JDK11 empfohlen?
    • Was ist mit einer JDBC-Version, die nicht in der obenstehenden Tabelle aufgeführt ist?
    • Wo finde ich die JDBC-JAR-Dateien?
    • Wozu dienen die verschiedenen JAR-Dateien auf der Downloadseite des 19.x JDBC-Treibers?

Oracle JDBC im Allgemeinen

    • Welche verschiedenen JDBC-Treiber stellt Oracle zur Verfügung?
    • Welchen Treiber sollte ich verwenden?
    • Wie sieht es mit den JARs für den Server-Thin-Treiber und dem serverinternen Treiber aus?
    • Können Drittanbieter die JDBC-Treiber von Oracle zusammen mit ihrer eigenen Software vertreiben?
    • Welche Genehmigungen erfordern die Oracle JDBC-Treiber?

Installation

    • Wie installiere ich den Thin-Treiber?
    • Wie installiere ich den OCI-Treiber?
    • Wie installiere ich die serverseitigen internen Treiber oder den Thin-Treiber im Servertreiber?

DriverManager und DataSources

    • Was ist der Unterschied zwischen DriverManager und DataSources?
    • Welchen Verbindungspool sollte ich verwenden?
    • Worum handelt es sich bei JDBC OCI Connection Pooling?

Vernetzung

    • Welche Form hat eine URL?
    • Was ist die Form der Beschreibung?
    • Wie verwende ich das Properties-Argument?
    • Muss ich die Klasse beim DriverManager registrieren?
    • Welchen Benutzernamen und welches Kennwort sollte ich bei der Verbindung mit dem internen Servertreiber verwenden?
    • Ich erhalte einen OutofMemory Error, wenn ich einen höheren im Voraus abgerufenen Standardwert einstelle.
    • Was ist eine Service-Verbindungszeichenfolge?
    • Wie verbinde ich SYSDBA oder SYSOPER?
    • Welche Verschlüsselungsmethoden werden von den Oracle JDBC-Treibern unterstützt?
    • Wie aktiviere ich beim JDBC-Thin-Treiber die Verschlüsselung und Prüfsummierung?
    • Was versteht man unter Proxyauthentifizierung?
    • Unterstützen Oracle JDBC-Treiber SSL?
    • Unterstützen die Oracle JDBC-Treiber LDAP in der Verbindungs-URL?
    • Wie kann ich JDBC mit einem Datenbankserver hinter einer Firewall verbinden?
  • Anweisungen, PreparedStatements, CallableStatements

    • Was ist defineColumnType und wann sollte ich es verwenden?
    • Erzwingt ColumnType auf dem Server Konvertierungen?
    • Wie kann man EscapeProcessing auf der Ebene des jdbc-Treibers deaktivieren, anstatt stmt.setEscapeProcessing(false) im Anwendungscode aufrufen zu müssen?
    • Stellen Oracle JDBC-Treiber eine Bind-by-Name-Facility bereit?
    • Wie bestimmen die Oracle JDBC-Treiber bei setXXX-Methoden in PreparedStatement den Datentyp?
    • Was geschieht, wenn der Typ des Zielparameters nicht mit dem identisch ist, der von der setXXX-Methode angenommen wird?
    • Warum führen die Treiber die Konvertierung nicht auf der Clientseite durch?
    • Was sind die Byte-Datentypen, um eine Spalte in eine Tabelle einzufügen?
    • Was sind die Zeichendatentypen zum Einfügen in eine Tabellenspalte?
    • Was sind die Größen für setString, setCharacterStream und setAsciiStream, und welche Größenbeschränkungen gelten für Binärdaten über setBytes und setBinaryStream?

Form

Anweisung

Treiber

Untere Grenze

Obere Grenze

Bind-Mechanismus

Hinweis

Alle Alle Alle 0 0 Null
Alle SQL Client 1 Zeichen 32.766 Zeichen Direkt-
Alle SQL Client 32.767 Zeichen 2.147.483.647 Byte Stream
Alle SQL Client 2.147.483.648 Byte 2.147.483.647 Zeichen

Temp. CLOB


ZEICHEN  
Server 1 Zeichen 65.536 Byte

Direkt-


1, 2


NCHAR  
 
1 Zeichen 4.000 Byte

Direkt-


NCHAR  
 
4.001 Byte 2.147.483.647 Zeichen

Temp. CLOB


ZEICHEN  
 
65.537 Byte 2.147.483.647 Zeichen

Stream


 
 
 
2.147.483.647 Byte 2.147.483.647 Zeichen

Temp. CLOB


Alle PL/SQL Alle 1 Zeichen 32.512 Zeichen Direkt-  
Alle PL/SQL Alle 32.512 Zeichen 2.147.483.647 Zeichen Temp. CLOB

    • Welche Größenbeschränkungen gelten für die proprietären Methoden setBytesForBlob und setStringForClob in oracle.jdbc.OraclePreparedStatement?

API

FORM

Anweisung

Treiber

Untere Grenze

Obere Grenze

Bind-Mechanismus

Hinweis

setBytesForBlob

n/a


Alle Alle

0


0


Null
 
 
Alle Client 1 Byte

2.000 Byte


Direkt-
 
 
Alle Client 2.001 Byte 21.474.836.487 Byte Temp. BLOB 2
setStringForClob

Alle


Alle Alle 0 0 Null  
 

Alle


Alle Client 1 Zeichen 32.766 Zeichen Direkt-  
 

Alle


Alle Client 32.766 Zeichen 2.147.483.647 Zeichen Temp. CLOB  
 

Alle


Alle Server 1 Zeichen 4.000 Byte Direkt-  
 

Alle


Alle Server 4.001 Byte 2.147.483.647 Zeichen Temp. CLOB 1

    • Erzwingt ein Wechsel der Bind-Typen ein zusätzliches serverseitiges Parsen der Anweisung?
    • Wie sieht es mit CallableStatements und Prozeduren mit IN OUT-Parametern aus?
    • Ändert sich die Auswahl der polymorphen PL/SQL-Prozeduren, wenn sich der Bind-Typ ändert?
    • Was ist mit vorhandenem Code?
    • In bestimmten Fällen erstellt der Treiber temporäre LOBs. Verfolgt er diese nach und gibt sie frei?
    • Wir verwenden einen Zeichensatz mit variabler Breite wie UTF8. Führt der Treiber in Bezug auf die tatsächliche Länge einer Zeichenfolge Korrekturen durch?
    • Ist es bei einer wirklich großen Zeichenfolge eine gute Idee, z. B. setString zu verwenden?
    • LONG RAW und LONG-Spaltentypen sind veraltet. Warum gibt es neue Verwendungsmöglichkeiten von setXXXStream-APIs?
    • Die LOB-APIs sind aber viel flexibler, nicht wahr?
    • Warum kann ich kein PreparedStatement erstellen, das select * from tab where id in (?, ?, ?, ...) ausführt?

ResultSets

    • Was bedeutet „Exhausted Resultset: prepare_for_new_get“?
    • Warum muss ich ResultSets schließen?

Einfache Datentypen

    • Was geschieht mit DATE und TIMESTAMP?
    • Was ist der längste Wert, den ich binden kann?

Methode

Spaltentyp

Maximale Länge

setBytes LONG

4 KB


setBytes LONG RAW

2 GB


setString LONG

32.000 Zeichen(SetBigStringTryClob="false")
4.000 Zeichen (SetBigStringTryClob="true")


setString

CLOB


2 GB Zeichen


    • Warum erhalte ich beim Lesen von einem TIMESTAMP WITH TIME ZONE ein anderes Ergebnis?

Fortgeschrittene Datentypen (Objekte)

    • Wie sollte ich Instanzen von fortgeschrittenen Datentypen (Advanced Data Types, ADTs) erstellen?
    • Warum wird die Standard-Factory-Method createArrayOf nicht unterstützt?

BFILEs, BLOBs, CLOBs

    • Was macht DBMS_LOB.ERASE?
    • Kann ich oracle.sql.CLOB.putChars() verwenden?
    • OCI stellt Funktionen zur Bearbeitung eines CLOB CharSetld zur Verfügung. Was ist das Äquivalent davon bei JDBC?
    • Ist das Schreiben in BLOBS langsamer als das Einfügen von LONG RAWs?
    • Warum erhalte ich einen ORA-03127-Fehler , wenn ich LobLength im Stream-Beispielcode erhalte?
    • Wenn ich ein CLOB aus der Datenbank abrufe und aktualisiere, werden meine Änderungen manchmal nicht in der Datenbank angezeigt. Woran liegt das?

REF-Typen

    • Wie kann ich ein oracle.sql.REF zwischen zwei verschiedenen JDBC-Clients (EJBs, JDBC-Clients usw.) übergeben? Denn die REF-Klasse ist schließlich nicht serialisierbar, oder?
    • Wie kann ich eine neue REF erstellen?

OPAQUE-Typen

    • Was sind OPAQUE-Typen?

Zeilenquellen

    • Wenn ich nach dem Ausführen das Attribut für die Scrollbarkeit festlege, hat dies keinen Effekt auf die Scrollbarkeit von RowSet. Woran liegt das?
    • Kann ich das Objekt RowSet in eine Flat File serialisieren, obwohl das RowSet Streams enthält?

Thin -Treiber

    • Kann der JDBC-Thin-Treiber zur Entwicklung von Java-Anwendungen verwendet werden?

Interner Servertreiber

    • Wann sollte ich den internen Servertreiber verwenden?

Thin-Servertreiber

    • Wann sollte ich den Thin-Servertreiber verwenden?

Fehler

    • DriverManager.getConnection gibt den Fehler „Kein geeigneter Treiber“ aus
    • Fehlermeldung: „UnsatisfiedLinkError bei OCI-Treiber“
    • Fehlermeldung: „ORA-1019: Speicher kann nicht zugewiesen werden.“
    • Fehlermeldung: „ORA-01000: maximale Anzahl offener Cursor überschritten“
    • Fehlermeldung: „ORA-01002: „FETCH auf ungültigen oder geschlossenen Cursor“
    • Fehlermeldung: „ORA-12705: ungültiger oder unbekannter NLS-Parameterwert spezifiziert“
    • Fehler beim Abrufen von Text für Fehler ORA-12705.
    • Fehlermeldung: Der JDBC-Thin-Treiber zeigt mir für Unicode Literale den Fehler „ungültiges Zeichen“ an.
    • Vorgänge zum EINFÜGEN oder UPDATES sind langsam
    • Fehlermeldung: „Verbindung von Peer zurückgesetzt“
    • Was bedeutet „Protokollverletzung“?

Demo-Programme

    • Gibt es irgendwelche Demo-Programme zu JDBC?
    • Wie führe ich die Demos aus?
    • Was sollte ich tun, wenn bei der Ausführung einer Demo ein Fehler auftritt.

Oracle JDBC Trace Facility

    • Was ist die JDBC Trace Facility?
    • Wie aktiviere ich das alte JDBC-Trace?
    • Wie kann ich das Volumen der Trace-Ausgabe steuern?
    • Wohin geht die Trace-Ausgabe?
    • Wie kann ich DMS in einer DMS-fähigen JAR-Datei deaktivieren?

Entwicklungstools und Umgebungen

    • Kann ich JDBC-Programme mit Symantec Visual Cafe debuggen?
    • Kann ich JDBC-Programme mit Visual J++ von Microsoft debuggen?

Unterstützte Funktionen

    • Können die JDBC-Treiber auf gespeicherte PL/SQL-Prozeduren zugreifen?
    • Unterstützen die JDBC-Treiber Streaming?
    • Unterstützen die JDBC-Treiber Mehrbyte-Zeichensätze?
    • Funktionieren die JDBC-Treiber mit Firewalls?
    • Unterstützen die JDBC-Treiber von Oracle PL/SQL-Tabellen/-Ergebnismengen/-Datensätze/-Booleans?
    • Wird Failover unterstützt?
    • Wie unterstützen die JDBC-Treiber Oracle ROWID-Datentypen? Was hat dies mit getCursorName und setCursorName zu tun?
    • Wie unterstützen die JDBC-Treiber Oracle REFCURSOR-Datentypen?
    • Funktioniert ANO mit JDBC-Treibern?
    • Kann ich oracle.sql.*-Datentypen serialisieren?
    • Unterstützen die JDBC-Treiber Objekte oder Collections?
    • Kann ich WaitOption und AutoRollback verwenden?
    • Kann eine gespeicherte Java-Prozedur in einer Datenbankinstanz eine Verbindung zu einer anderen Datenbankinstanz öffnen?

Leistung

    • Was ist schneller, der Thin-Treiber oder der OCI-Treiber?
    • Was ist schneller, Anweisungen oder PreparedStatements?

java.util.logging

    • Wie verwende ich java.util.logging, um Trace-Ausgaben aus den Oracle JDBC-Treibern abzurufen?
    • Wie konfiguriere ich java.util.logging, um von Oracle JDBC nützliche Trace-Ausgaben zu erhalten?
    • Was ist mit dem serverseitigen internen Treiber?