FAQ Oracle JDBC
Cette FAQ contient des réponses aux questions les plus fréquentes sur les pilotes JDBC d'Oracle. Notez que cette FAQ répond uniquement à des questions techniques spécifiques et couvre également les problèmes connus. Consultez le Guide des développeurs JDBC et la Javadoc pour JDBC pour en savoir plus sur les fonctionnalités et leur utilisation dans votre application.
Questions fréquemment posées
Tout développerTout réduire-
-
Nouveautés de 26ai
-
Existe-t-il des documents relatifs à Oracle Database Cloud Service pour les développeurs Java ?
-
JDBC en général
Tout développerTout réduire-
-
Qu'est-ce que JDBC ?
-
Où puis-je en savoir plus sur JDBC ?
-
Où puis-je en savoir plus sur Java ?
-
Version |
Date de GA |
Fin du support Premier |
Fin du support étendu |
Fin du support de maintien |
|---|---|---|---|---|
| 26ia | Jan. 2026 |
|
Déc. 2031 | Non défini |
| 21c (Version de l'innovation) | Août 2021 | Juillet 2027 | Non disponible | Non défini |
| 19c (version à long terme) | Avril 2019 | Déc. 2029 (voir Lifetime Support Policy) | Déc 2032 | Non défini |
| 18c | Juillet 2018 | Juin 2021 | Non disponible | Non défini |
| 12.2 | Mars 2017 | 30 novembre 2020 (Période de correction limitée des erreurs pour 12.2.0.1 - 1er décembre 2020 - 31 mars 2022) | Non disponible | Non défini |
| EE 12.1 | Juin 2013 | Juillet 2018 | Juillet 2022 | Non défini |
Matrice d'interopérabilité |
Base de données 23.x |
Base de données 21.x |
Base de données 19.x |
Base de données 18.3 |
Base de données 12.2 et 12.1 |
|---|---|---|---|---|---|
| JDBC 23.x | Oui | Oui | Oui | Non | Non |
| JDBC 21.x | Oui | Oui | Oui | Passé | Passé |
| JDBC 19.x | Oui | Oui | Oui | Passé | Passé |
| JDBC 18.x | Non | Passé | Passé | Passé | Passé |
| JDBC 12.2 et 12.1 | Non | Passé | Passé | Passé | Passé |
Version d'Oracle Database |
Fichiers jar JDBC propres à la version |
|---|---|
| 23.x | ojdbc17.jar avec JDK17, JDK19, JDK21 et JDK25 avec prise en charge des API Jakarta ojdbc11.jar avec JDK11 et JDK21 ojdbc8.jar avec JDK8 et JDK11 |
| 21.x | ojdbc11.jar avec JDK11, JDK17, JDK19 et JDK21 ojdbc8.jar avec JDK8 et JDK11 |
| 19.x | ojdbc10.jar avec JDK11, JDK17, JDK19 et JDK21 (19.25 et versions supérieures) ojdbc8.jar avec JDK8, JDK11, JDK17, JDK19 et JDK21 (19.25 et versions supérieures) |
| 18.x | ojdbc8.jar avec JDK8 et JDK11 |
| 12.2 ou 12cR2 | ojdbc8.jar avec JDK 8 |
| 12.1 ou 12cR1 | ojdbc7.jar avec JDK 7 et JDK 8 ojdbc6.jar avec JDK 6 |
| 11.2 ou 11gR2 | ojdbc6.jar avec JDK 6, JDK 7 et JDK 8 (Remarque : JDK7 et JDK8 ne sont pris en charge que dans 11.2.0.3 et 11.2.0.4) ojdbc5.jar avec JDK 5 |
Version d'Oracle Database |
Conformité aux spécifications JDBC |
|---|---|
| 23.x et 21.x | JDBC 4.3 dans ojdbc11.jar JDBC 4.2 dans ojdbc8.jar |
| 19.x | JDBC 4.3 dans ojdbc10.jar JDBC 4.2 dans ojdbc8.jar |
| 18.3 | JDBC 4.2 dans ojdbc8.jar |
| 12.2 ou 12cR2 | JDBC 4.2 dans ojdbc8.jar |
| 12.1 ou 12cR1 | JDBC 4.1 dans ojdbc7.jar JDBC 4.0 dans ojdbc6.jar |
| 11.2 ou 11gR2 | JDBC 4.0 dans ojdbc6.jar JDBC 3.0 dans ojdbc5.jar |
Questions supplémentaires spécifiques à la version
Tout développerTout réduire-
-
Les pilotes Oracle JDBC sont-ils certifiés pour OpenJDK ?
-
Quel est le pilote JDBC 19.x recommandé à utiliser avec JDK11 ?
-
Qu'en est-il de la version JDBC qui ne figure pas dans le tableau ci-dessus ?
-
Où puis-je obtenir les fichiers jar JDBC ?
-
À quoi servent les différents fichiers JAR sur la page de téléchargement du pilote JDBC 19.x ?
-
Oracle JDBC en général
Tout développerTout réduire-
-
Quels sont les différents pilotes JDBC fournis par Oracle ?
-
Quel pilote dois-je utiliser ?
-
Qu'en est-il des fichiers jar pour le pilote léger du serveur et le pilote interne du serveur ?
-
Les fournisseurs tiers peuvent-ils distribuer les pilotes JDBC d'Oracle avec leurs propres logiciels ?
-
Quels sont les droits d'accès requis par les pilotes JDBC Oracle ?
-
Installation
Tout développerTout réduire-
-
Comment installer le pilote léger ?
-
Comment installer le pilote léger ?
-
Comment installer le pilote interne côté serveur ou le pilote léger dans le pilote du serveur ?
-
DriverManager et DataSources
Tout développerTout réduire-
-
Quelle est la différence entre DriverManager et DataSource ?
-
Quel pool de connexions dois-je utiliser ?
-
Qu'est-ce que le pool de connexions OCI JDBC ?
-
Connexions
Tout développerTout réduire-
-
Quelle est la forme d'une URL ?
-
Quelle est la forme de la description ?
-
Comment utiliser l'argument Properties ?
-
Ne dois-je pas inscrire la classe OracleDriver auprès de DriverManager ?
-
Quel nom d'utilisateur et quel mot de passe dois-je utiliser pour me connecter au pilote interne du serveur ?
-
Je reçois l'erreur OutofMemory lorsque je définis une valeur de pré-extraction par défaut plus élevée.
-
Qu'est-ce qu'une chaîne de connexion de service ?
-
Comment me connecter en tant que SYSDBA ou SYSOPER ?
-
Quelles sont les méthodes de cryptage prises en charge par les pilotes JDBC Oracle ?
-
Comment activer le cryptage et la vérification par checksum avec le pilote léger JDBC ?
-
Qu'est-ce que l'authentification par proxy ?
-
Les pilotes JDBC Oracle prennent-ils en charge le SSL ?
-
Les pilotes JDBC Oracle prennent-ils en charge le protocole LDAP dans l'URL de connexion ?
-
Comment utiliser JDBC pour me connecter à un serveur de base de données derrière un pare-feu ?
-
-
Instructions, PreparedStatements, CallableStatements
-
Qu'est-ce que defineColumnType et quand devrais-je l'utiliser ?
-
defineColumnType force-t-il les conversions sur le serveur ?
-
Comment désactiver EscapeProcessing au niveau du pilote JDBC plutôt que d'appeler stmt.setEscapeProcessing(false) dans le code d'application ?
-
Les pilotes JDBC Oracle ont-ils fourni une fonction Liaison par nom ?
-
Pour les méthodes setXXX dans PreparedStatement, comment les pilotes Oracle JDBC déterminent-ils le type de données ?
-
Que se passe-t-il si le type du paramètre cible est différent du type pris en compte par la méthode setXXX ?
-
Pourquoi les pilotes ne font-ils pas la conversion côté client ?
-
Pour l'insertion dans une colonne d'une table, quels sont les types de données d'octet ?
-
Pour l'insertion dans une colonne d'une table, quels sont les types de données de caractères ?
-
Quelles sont les tailles pour setString, setCharacterStream et setAsciiStream, et les limites pour les données binaires via setBytes et setBinaryStream ?
-
Formulaire |
Instruction |
Pilote |
Limite inférieure |
Limite supérieure |
Mécanisme de liaison |
Remarque |
|---|---|---|---|---|---|---|
| Tout | Tout | Tout | 0 | 0 | Valeur nulle | |
| Tout | SQL | Client | 1 caractère | 32 766 caractères | Ventes | |
| Tout | SQL | Client | 32 767 caractères | 2 147 483 647 octets | Analyse de | |
| Tout | SQL | Client | 2 147 483 648 octets | 2 147 483 647 caractères | CLOB temporaire |
|
| CARACTÈRE | |
Serveurs | 1 caractère | 65 536 octets | Ventes |
1, 2 |
| NCHAR | |
|
1 caractère | 4 000 octets | Ventes |
|
| NCHAR | |
|
4 001 octets | 2 147 483 647 caractères | CLOB temporaire |
|
| CARACTÈRE | |
|
65 537 octets | 2 147 483 647 caractères | Analyse de |
|
| |
|
|
2 147 483 647 octets | 2 147 483 647 caractères | CLOB temporaire |
| Tout | PL/SQL | Tout | 1 caractère | 32 512 caractères | Ventes | |
| Tout | PL/SQL | Tout | 32 512 caractères | 2 147 483 647 caractères | CLOB temporaire |
API |
FORMULAIRE |
Instruction |
Pilote |
Limite inférieure |
Limite supérieure |
Mécanisme de liaison |
Remarque |
|---|---|---|---|---|---|---|---|
| setBytesForBlob | S/O |
Tout | Tout | 0 |
0 |
Valeur nulle | |
| |
|
Tout | Client | 1 octet | 2 000 octets |
Ventes | |
| |
|
Tout | Client | 2 001 octets | 21 474 836 487 octets | BLOB temporaire | 2 |
| setStringForClob | Tout |
Tout | Tout | 0 | 0 | Valeur nulle | |
| |
Tout |
Tout | Client | 1 caractère | 32 766 caractères | Ventes | |
| |
Tout |
Tout | Client | 32 766 caractères | 2 147 483 647 caractères | CLOB temporaire | |
| |
Tout |
Tout | Serveurs | 1 caractère | 4 000 octets | Ventes | |
| |
Tout |
Tout | Serveurs | 4 001 octets | 2 147 483 647 caractères | CLOB temporaire | 1 |
Tout développerTout réduire
-
-
Le changement de type de liaison force-t-il l'analyse supplémentaire de l'instruction côté serveur ?
-
Qu'en est-il des CallableStatements et des procédures avec des paramètres IN OUT ?
-
La sélection des procédures PL/SQL polymorphes change-t-elle lorsque le type de liaison change ?
-
Qu'en est-il du code existant ?
-
Dans certains cas, le pilote crée des LOB temporaires. Est-ce qu'il les suit et les libère ?
-
Nous utilisons un jeu de caractères de largeur variable tel que UTF8. Le pilote corrige-t-il la longueur d'octet réelle d'une séquence de caractères ?
-
Est-ce une bonne idée d'utiliser, par exemple, setString pour une chaîne vraiment énorme ?
-
Les types de colonnes LONG RAW et LONG sont en phase d'abandon. Pourquoi y a-t-il de nouvelles utilisations des API setXXXStream ?
-
Les API LOB sont beaucoup plus flexibles, n'est-ce pas ?
-
Pourquoi ne puis-je pas créer un PreparedStatement qui effectue select * from tab where id in ( ?, ?, ?, ...) ?
-
ResultSets
Tout développerTout réduire-
-
Que signifie « Exhausted Resultset: prepare_for_new_get » ?
-
Pourquoi dois-je fermer ResultSets ?
-
Types de données simples
Tout développerTout réduire-
-
Que se passe-t-il avec DATE et TIMESTAMP ?
-
Quelle est la valeur la plus longue que je puisse lier ?
-
Méthode |
Type de colonne |
Longueur maximale |
|---|---|---|
setBytes |
LONG |
4 Ko |
setBytes |
LONG RAW |
2 Go |
setString |
LONG |
32 000 caractères( |
setString |
|
Caractères 2G |
Tout développerTout réduire
-
-
Pourquoi le résultat de la lecture d'un TIMESTAMP WITH TIME ZONE est-il différent ?
-
Types de données avancés (objets)
Tout développerTout réduire-
-
Comment créer des instances d'ADT ?
-
Pourquoi la méthode de fabrique standard createArrayOf n'est-elle pas prise en charge ?
-
Fichiers BFILE, BLOB, CLOB
Tout développerTout réduire-
-
Quelle est la fonction de DBMS_LOB.ERASE ?
-
Puis-je utiliser oracle.sql.CLOB.putChars() ?
-
OCI fournit une fonction permettant de manipuler un objet CLOB CharSetId. Quel est l'équivalent JDBC ?
-
L'écriture dans BLOBS est-elle plus lente que l'insertion de LONG RAW ?
-
Pourquoi une erreur ORA-03127 s'affiche-t-elle lors de l'obtention de LobLength dans l'exemple de code Stream ?
-
Lorsque j'obtiens un CLOB à partir de la base de données et que je le mets à jour, certaines modifications n'apparaissent pas dans la base de données. Pourquoi ?
-
Types REF
Tout développerTout réduire-
-
Comment transmettre un élément oracle.sql.REF entre deux clients JDBC différents (EJB, clients JDBC, etc.) ? En effet, la classe REF n'est pas sérialisable.
-
Comment créer un nouveau REF ?
-
Types OPAQUE
Tout développerTout réduire-
-
Que sont les types OPAQUE ?
-
Sources de ligne
Tout développerTout réduire-
-
Lorsque je définis l'attribut de défilement après exécution, il n'a aucun effet sur la défilabilité de RowSet. Pourquoi ?
-
Puis-je sérialiser l'objet RowSet vers un fichier plat même si RowSet contient des flux ?
-
Pilote léger
Tout développerTout réduire-
-
Le pilote léger JDBC peut-il être utilisé pour développer des applications Java ?
-
Pilote interne du serveur
Tout développerTout réduire-
-
Quand dois-je utiliser le pilote interne du serveur ?
-
Pilote léger du serveur
Tout développerTout réduire-
-
Quand dois-je utiliser le pilote léger du serveur ?
-
Erreurs
Tout développerTout réduire-
-
DriverManager.getConnection indique l'erreur : « Aucun pilote approprié »
-
Message d'erreur : « UnsatisfiedLinkError avec le pilote OCI »
-
Message d'erreur : « ORA-1019 : impossible d'allouer de la mémoire ».
-
Message d'erreur : « ORA-01000 : maximum de curseurs ouverts dépassé »
-
Message d'erreur : « ORA-01002 : extraction hors séquence »
-
Message d'erreur : « ORA-12705 : valeur de paramètre NLS non valide ou inconnue spécifiée »
-
Erreur lors de la tentative de récupération du texte pour l'erreur ORA-12705.
-
Message d'erreur : le pilote léger JDBC crée des erreurs « caractères non valides » pour les littéraux Unicode
-
Les opérations INSERT ou UPDATE sont lentes
-
Message d'erreur : « Connexion réinitialisée par le pair »
-
Que signifie « violation de protocole » ?
-
Programmes de démonstration
Tout développerTout réduire-
-
Existe-t-il des programmes de démonstration JDBC ?
-
Comment exécuter les démos ?
-
Que dois-je faire si une erreur s'affiche lorsque j'exécute une démonstration ?
-
Oracle JDBC Trace Facility
Tout développerTout réduire-
-
Qu'est-ce que JDBC Trace Facility ?
-
Comment activer l'ancienne trace JDBC ?
-
Comment contrôler le volume de la sortie de trace ?
-
Où va la sortie de trace ?
-
Comment désactiver DMS dans un fichier JAR compatible DMS ?
-
Outils et environnements de développement
Tout développerTout réduire-
-
Puis-je déboguer des programmes JDBC avec Symantec Visual Cafe ?
-
Puis-je déboguer des programmes JDBC avec Visual J++ de Microsoft ?
-
Fonctions prises en charge
Tout développerTout réduire-
-
Les pilotes JDBC peuvent-ils accéder aux procédures stockées PL/SQL ?
-
Les pilotes JDBC prennent-ils en charge la transmission en continu ?
-
Les pilotes JDBC prennent-ils en charge les jeux de caractères multioctets ?
-
Les pilotes JDBC fonctionnent-ils avec les pare-feu ?
-
Les pilotes JDBC d'Oracle prennent-ils en charge les tables/ensembles de résultats/enregistrements/booléens PL/SQL ?
-
Le basculement est-il pris en charge ?
-
Comment les pilotes JDBC prennent-ils en charge les types de données Oracle ROWID ? Quel est le rapport avec getCursorName et setCursorName ?
-
Comment les pilotes JDBC prennent-ils en charge les types de données Oracle REFCURSOR ?
-
ANO fonctionne-t-il avec les pilotes JDBC ?
-
Puis-je sérialiser les types de données oracle.sql.* ?
-
Les pilotes JDBC prennent-ils en charge les objets ou les collections ?
-
Puis-je utiliser WaitOption et AutoRollback ?
-
Une procédure stockée Java dans une instance de base de données peut-elle ouvrir une connexion à une autre instance de base de données ?
-
Performances
Tout développerTout réduire-
-
Quel est le plus rapide, le pilote léger ou le pilote OCI ?
-
Lequel est plus rapide, Statements ou PreparedStatements ?
-
java.util.logging
Tout développerTout réduire-
-
Comment utiliser java.util.logging pour obtenir la sortie de trace des pilotes JDBC Oracle ?
-
Comment configurer java.util.logging pour obtenir une sortie de trace utile à partir d'Oracle JDBC ?
-
Qu'en est-il du pilote interne côté serveur ?
-