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
Alle einblendenAlle ausblenden-
-
Neuerungen in 26ai
-
Gibt es Dokumente für Java-Entwickler, die sich auf Orace Database Cloud beziehen?
-
JDBC im Allgemeinen
Alle einblendenAlle ausblenden-
-
Was ist JDBC?
-
Wo kann ich mehr über JDBC erfahren?
-
Wo kann ich mehr über Java erfahren?
-
Freigeben |
GA-Datum |
Premier Support endet |
Erweiterter Support endet |
Sustaining Support endet |
|---|---|---|---|---|
| 26KI | Jan. 2026 |
|
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 |
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 |
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 |
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
Was ist der Unterschied zwischen DriverManager und DataSources?
-
Welchen Verbindungspool sollte ich verwenden?
-
Worum handelt es sich bei JDBC OCI Connection Pooling?
-
Vernetzung
Alle einblendenAlle ausblenden-
-
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 |
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 |
Alle einblendenAlle ausblenden
-
-
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
Alle einblendenAlle ausblenden-
-
Was bedeutet „Exhausted Resultset: prepare_for_new_get“?
-
Warum muss ich ResultSets schließen?
-
Einfache Datentypen
Alle einblendenAlle ausblenden-
-
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( |
setString |
|
2 GB Zeichen |
Alle einblendenAlle ausblenden
-
-
Warum erhalte ich beim Lesen von einem TIMESTAMP WITH TIME ZONE ein anderes Ergebnis?
-
Fortgeschrittene Datentypen (Objekte)
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
Was sind OPAQUE-Typen?
-
Zeilenquellen
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
Kann der JDBC-Thin-Treiber zur Entwicklung von Java-Anwendungen verwendet werden?
-
Interner Servertreiber
Alle einblendenAlle ausblenden-
-
Wann sollte ich den internen Servertreiber verwenden?
-
Thin-Servertreiber
Alle einblendenAlle ausblenden-
-
Wann sollte ich den Thin-Servertreiber verwenden?
-
Fehler
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
Kann ich JDBC-Programme mit Symantec Visual Cafe debuggen?
-
Kann ich JDBC-Programme mit Visual J++ von Microsoft debuggen?
-
Unterstützte Funktionen
Alle einblendenAlle ausblenden-
-
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
Alle einblendenAlle ausblenden-
-
Was ist schneller, der Thin-Treiber oder der OCI-Treiber?
-
Was ist schneller, Anweisungen oder PreparedStatements?
-
java.util.logging
Alle einblendenAlle ausblenden-
-
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?
-