Preguntas frecuentes sobre Oracle JDBC (preguntas frecuentes)
Este documento responde a las preguntas más frecuentes sobre los controladores JDBC de Oracle. Tenga en cuenta que estas preguntas frecuentes solo abordan preguntas técnicas específicas y también cubren problemas conocidos. Consulta la Guía para desarrolladores de JDBC y Javadoc para JDBC para obtener más detalles sobre las funcionalidades y cómo se pueden utilizar en tu aplicación.
Preguntas frecuentes
Ampliar todoReducir todo-
-
Novedades en 26ai
-
¿Existen documentos relacionados con Oracle Database Cloud Service para desarrolladores Java?
-
JDBC en General
Ampliar todoContraer todo-
-
¿Qué significa JDBC?
-
¿Dónde puedo obtener más información sobre JDBC?
-
¿Dónde puedo obtener más información sobre Java?
-
Versión |
Fecha de disponibilidad general |
Finaliza el soporte Premier |
Finaliza el soporte Extendido |
Finaliza el soporte de mantenimiento |
|---|---|---|---|---|
| 26IA | Ene 2026 |
|
Dic 2031 | Indefinido |
| 21c (versión de innovación) | Agosto de 2021 | Julio de 2027 | No disponible | Indefinido |
| 19c (versión a largo plazo) | Abril de 2019 | Dic 2029 (consulta Lifetime Support Policy) | Dic 2032 | Indefinido |
| 18c | Julio de 2018 | Junio de 2021 | No disponible | Indefinido |
| 12.2 | Marzo de 2017 | 30 de noviembre de 2020 (periodo de corrección de errores limitado para 12.2.0.1 - 1 de diciembre de 2020 - 31 de marzo de 2022) | No disponible | Indefinido |
| EE 12.1 | Junio de 2013 | Julio de 2018 | Julio de 2022 | Indefinido |
Matriz de interoperabilidad |
Database 23.x |
Database 21.x |
Database 19.x |
Database 18.3 |
Database 12.2 y 12.1 |
|---|---|---|---|---|---|
| JDBC 23.x | Sí | Sí | Sí | No | No |
| JDBC 21.x | Sí | Sí | Sí | Antes | Antes |
| JDBC 19.x | Sí | Sí | Sí | Antes | Antes |
| JDBC 18.x | No | Antes | Antes | Antes | Antes |
| JDBC 12.2 y 12.1 | No | Antes | Antes | Antes | Antes |
Versión de Oracle Database |
Archivos Jar de JDBC específicos para la versión |
|---|---|
| 23.x | ojdbc17.jar con JDK17, JDK19, JDK21 y JDK25 con compatibilidad con API de Jakarta ojdbc11.jar con JDK11 y JDK 21 ojdbc8.jar con JDK8 y JDK 11 |
| 21.x | ojdbc11.jar con JDK11, JDK17, JDK19 y JDK21 ojdbc8.jar con JDK8 y JDK 11 |
| 19.x | ojdbc11.jar con JDK11, JDK17, JDK19 y JDK21 (19.25 en adelante) ojdbc8.jar con JDK8, JDK11, JDK17, JDK19 y JDK21 (19.25 en adelante) |
| 18.x | ojdbc8.jar con JDK8 y JDK 11 |
| 12.2 o 12cR2 | ojdbc8.jar con JDK 8 |
| 12.1 o 12cR1 | ojdbc7.jar con JDK 7 y JDK 8 ojdbc6.jar con JDK 6 |
| 11.2 o 11gR2 | ojdbc6.jar con JDK 6, JDK 7 y JDK 8 (Nota: JDK7 y JDK8 solo están soportados en 11.2.0.3 y 11.2.0.4) ojdbc5.jar con JDK 5 |
Versión de Oracle Database |
Conformidad de las especificaciones de JDBC |
|---|---|
| 23.x y 21.x | JDBC 4.3 en ojdbc11.jar JDBC 4.2 en ojdbc8.jar |
| 19.x | JDBC 4.3 en ojdbc10.jar JDBC 4.2 en ojdbc8.jar |
| 18.3 | JDBC 4.2 en ojdbc8.jar |
| 12.2 o 12cR2 | JDBC 4.2 en ojdbc8.jar |
| 12.1 o 12cR1 | JDBC 4.1 en ojdbc7.jar JDBC 4.0 en ojdbc6.jar |
| 11.2 o 11gR2 | JDBC 4.0 en ojdbc6.jar JDBC 3.0 en ojdbc5.jar |
Preguntas específicas adicionales sobre la versión
Ampliar todoReducir todo-
-
¿Están los controladores de Oracle JDBC certificados para OpenJDK?
-
¿Cuál es el controlador JDBC 19.x recomendado para JDK 11?
-
¿Qué sucede con la versión de JDBC que no se muestra en la tabla anterior?
-
¿Dónde puedo obtener los archivos jar de JDBC?
-
¿Para qué sirven los distintos archivos JAR de la página de descarga del controlador JDBC 19.x?
-
Oracle JDBC en General
Ampliar todoReducir todo-
-
¿Cuáles son los diferentes controladores JDBC que proporciona Oracle?
-
¿Qué controlador debo utilizar?
-
¿Qué sucede con los archivos jar para el controlador Thin del servidor y el controlador interno del servidor?
-
¿Pueden los proveedores externos distribuir los controladores JDBC de Oracle junto con su propio software?
-
¿Qué permisos necesitan los controladores JDBC de Oracle?
-
Instalación
Ampliar todoReducir todo-
-
¿Cómo instalo el controlador Thin?
-
¿Cómo instalo el controlador OCI?
-
¿Cómo instalo el controlador interno del lado del servidor o el Thin en el controlador del servidor?
-
DriverManager y DataSources
Ampliar todoReducir todo-
-
¿Cuál es la diferencia entre DriverManager y DataSource?
-
¿Qué pool de conexiones debo utilizar?
-
¿Qué es el pool de conexiones JDBC OCI?
-
Conexiones
Ampliar todoReducir todo-
-
¿Cuál es el formato de una URL?
-
¿Cuál es la forma de la descripción?
-
¿Cómo puedo utilizar el argumento Propiedades?
-
¿No tengo que registrar la clase OracleDriver con DriverManager?
-
¿Qué nombre de usuario y contraseña debo utilizar al conectarse al controlador interno del servidor?
-
Aparece el error OutofMemory al definir un valor de recuperación previa predeterminada superior.
-
¿Qué es una cadena de conexión de servicios?
-
¿Cómo me conecto como SYSDBA o SYSOPER?
-
¿Qué métodos de cifrado admiten los controladores JDBC de Oracle?
-
¿Cómo activo el cifrado y el total de comprobación con el controlador JDBC Thin?
-
¿En qué consiste la autenticación de proxy?
-
¿Los controladores JDBC de Oracle son compatibles con SSL?
-
¿Los controladores JDBC de Oracle admiten LDAP en la URL de conexión?
-
¿Cómo puedo utilizar JDBC para conectarse a un servidor de base de datos detrás de un firewall?
-
-
Declaraciones, PreparedStatements, CallableStatements
-
¿Qué es defineColumnType y cuándo debo utilizarlo?
-
¿Fuerza defineColumnType las conversiones en el servidor?
-
¿Cómo desactivar EscapeProcessing en el nivel de controlador jdbc en lugar de llamar a stmt.setEscapeProcessing(false) en el código de aplicación?
-
¿Proporcionan los controladores JDBC de Oracle una función de enlace por nombre?
-
En los métodos setXXX en PreparedStatement, ¿cómo determinan los controladores JDBC de Oracle el tipo de dato?
-
¿Qué sucede si el tipo del parámetro de destino no es el mismo que el tipo asumido por el método setXXX?
-
¿Por qué los conductores no realizan la conversión en el lado del cliente?
-
Para insertar en una columna de una tabla, ¿cuáles son los tipos de dato de bytes?
-
Para introducir en una columna de una tabla, ¿cuáles son los tipos de dato de caracteres?
-
¿Cuáles son los tamaños de setString, setCharacterStream y setAsciiStream y los límites de tamaño para los datos binarios a través de setBytes y setBinaryStream?
-
Formulario |
Estado |
Controlador |
Límite inferior |
Límite superior |
Mecanismo de enlace |
Nota |
|---|---|---|---|---|---|---|
| Todo | Todo | Todo | 0 | 0 | Nulo | |
| Todo | SQL | Cliente | 1 caracter | 32766 caracteres | Directo | |
| Todo | SQL | Cliente | 32767 caracteres | 2147483647 bytes | Stream | |
| Todo | SQL | Cliente | 2147483648 bytes | 2147483647 caracteres | Clob temporal |
|
| CARACTER | |
Servidor | 1 carácter | 65536 bytes | Directo |
1, 2 |
| NCHAR | |
|
1 carácter | 4000 bytes | Directo |
|
| NCHAR | |
|
4001 bytes | 2147483647 caracteres | Clob temporal |
|
| CARACTER | |
|
65537 bytes | 2147483647 caracteres | Stream |
|
| |
|
|
2147483647 bytes | 2147483647 caracteres | Clob temporal |
| Todo | PL/SQL | Todo | 1 caracter | 32512 caracteres | Directo | |
| Todo | PL/SQL | Todo | 32512 caracteres | 2147483647 caracteres | Clob temporal |
API |
FORMULARIO |
Estado |
Controlador |
Límite inferior |
Límite superior |
Mecanismo de enlace |
Nota |
|---|---|---|---|---|---|---|---|
| setBytesForBlob | n/d |
Todo | Todo | 0 |
0 |
Nulo | |
| |
|
Todo | Cliente | 1 byte | 2000 bytes |
Directo | |
| |
|
Todo | Cliente | 2001 bytes | 21474836487 bytes | Blob temporal | 2 |
| setStringForClob | Todo |
Todo | Todo | 0 | 0 | Nulo | |
| |
Todo |
Todo | Cliente | 1 caracter | 32766 caracteres | Directo | |
| |
Todo |
Todo | Cliente | 32766 caracteres | 2147483647 caracteres | Clob temporal | |
| |
Todo |
Todo | Servidor | 1 caracter | 4000 bytes | Directo | |
| |
Todo |
Todo | Servidor | 4001 bytes | 2147483647 caracteres | Clob temporal | 1 |
Ampliar todoReducir todo
-
-
¿La conmutación de tipos de enlace fuerza el análisis adicional del servidor de la sentencia?
-
¿Qué sucede con CallableStatements y los procedimientos con los parámetros IN OUT?
-
¿Cambiará la selección de procedimientos polimórficos PL/SQL cuando cambie el tipo de enlace?
-
¿Qué sucede con el código existente?
-
En determinados casos, el controlador está creando lobs temporales. ¿Se realiza un seguimiento de estos y se liberan?
-
Estamos utilizando un juego de caracteres de ancho variable como UTF8. ¿El controlador corrige la longitud de bytes real de una secuencia de caracteres?
-
¿Es una buena idea utilizar, por ejemplo, setString para una cadena realmente enorme?
-
Los tipos de columna LONG RAW y LONG están en desuso. ¿Por qué hay nuevos usos de las API de setXXXStream?
-
Las API de LOB son mucho más flexibles, ¿verdad?
-
¿Por qué no puedo crear una PreparedStatement que haga select * from tab where id in (?, ?, ?, ...)?
-
ResultSets
Ampliar todoReducir todo-
-
¿Qué significa "Exhausted Resultset: prepare_for_new_get"?
-
¿Por qué tengo que cerrar ResultSets?
-
Tipos de datos simples
Ampliar todoReducir todo-
-
¿Qué sucede con DATE y TIMESTAMP?
-
¿Cuál es el valor más largo que puedo vincular?
-
Método |
Tipo de columna |
Longitud máxima |
|---|---|---|
setBytes |
LONG |
4000 bytes |
setBytes |
LONG RAW |
2G bytes |
setString |
LONG |
32 000 caracteres ( |
setString |
|
Caracteres 2G |
Ampliar todoReducir todo
-
-
¿Por qué es el resultado de leer un TIMESTAMP WITH TIME ZONE diferente?
-
Tipos de datos avanzados (objetos)
Ampliar todoReducir todo-
-
¿Cómo debo crear instancias de ADT?
-
¿Por qué no se admite el método de fábrica estándar createArrayOf?
-
BFILEs, BLOBs, CLOBs
Ampliar todoReducir todo-
-
¿Qué hace DBMS_LOB.ERASE?
-
¿Puedo utilizar oracle.sql.CLOB.putChars()?
-
OCI proporciona una función para manipular un CLOB CharSetId. ¿Cuál es el equivalente de JDBC?
-
¿Es más lento escribir en BLOBS que insertar LONG RAWs?
-
¿Por qué aparece un error ORA-03127 al obtener LobLength en el código de ejemplo de flujo?
-
Cuando obtengo un CLOB de la base de datos y, a continuación, lo actualizo, a veces mis cambios no aparecen en la base de datos. ¿Por qué?
-
Tipos de REF
Ampliar todoReducir todo-
-
¿Cómo puedo transferir un oracle.sql.REF entre dos clientes JDBC diferentes (EJB, clientes JDBC, etc.)? Dado que la clase REF no es serializable
-
¿Cómo puedo crear una nueva REF?
-
Tipos de OPAQUE
Ampliar todoReducir todo-
-
¿Qué son los tipos de OPAQUE?
-
Fuentes de filas
Ampliar todoReducir todo-
-
Al definir el atributo de desplazamiento después de la ejecución, no afecta a la capacidad de desplazamiento de RowSet. ¿Por qué?
-
¿Puedo serializar el objeto RowSet en un archivo plano incluso si RowSet contiene flujos?
-
Controlador Thin
Ampliar todoReducir todo-
-
¿Se puede utilizar el controlador JDBC Thin para desarrollar aplicaciones Java?
-
Controlador interno del servidor
Ampliar todoReducir todo-
-
¿Cuándo debo utilizar el controlador interno del servidor?
-
Controlador thin del servidor
Ampliar todoReducir todo-
-
¿Cuándo debo utilizar el controlador interno del servidor?
-
Errores
Ampliar todoReducir todo-
-
DriverManager.getConnection da el error: "Controlador no adecuado"
-
Mensaje de error: "UnsatisfiedLinkError with OCI driver"
-
Mensaje de error: "ORA-1019: imposible asignar memoria".
-
Mensaje de error: "ORA-01000: máximo de cursores abiertos superado"
-
Mensaje de error: "ORA-01002: obtención fuera de secuencia"
-
Mensaje de error: "ORA-12705: valor de parámetro NLS no válido o desconocido especificado"
-
Error al intentar recuperar texto para el error ORA-12705.
-
Mensaje de error: el controlador JDBC Thin me indica errores de "carácter no válido" para literales Unicode
-
Las operaciones INSERT o UPDATE son lentas
-
Mensaje de error: "Connection reset by peer"
-
¿Qué significa "violación de protocolo"?
-
Programas de demostración
Ampliar todoReducir todo-
-
¿Existe algún programa de demostración de JDBC?
-
¿Cómo puedo ejecutar las demostraciones?
-
¿Qué debo hacer cuando se produce un error al ejecutar una demostración?
-
Utilidad de Rastreo JDBC de Oracle
Ampliar todoReducir todo-
-
¿De qué se trata la utilidad de rastreo JDBC?
-
¿Cómo puedo activar el rastreo de JDBC antiguo?
-
¿Cómo puedo controlar el volumen de salida de rastreo?
-
¿Dónde va la salida de rastreo?
-
¿Cómo puedo desactivar DMS en un jar activado para DMS?
-
Herramientas y procesos de desarrollo
Ampliar todoReducir todo-
-
¿Puedo depurar programas JDBC con Symantec Visual Cafe?
-
¿Puedo depurar programas JDBC con Visual J++ de Microsoft?
-
Funciones compatibles
Ampliar todoReducir todo-
-
¿Pueden los controladores JDBC acceder a procedimientos almacenados PL/SQL?
-
¿Los controladores JDBC admiten la transmisión?
-
¿Los controladores JDBC admiten juegos de caracteres multibyte?
-
¿Funcionan los controladores JDBC con firewalls?
-
¿Los controladores JDBC de Oracle admiten tablas/juegos de resultados/registros/booleanos PL/SQL?
-
¿Se admite el failover?
-
¿Cómo admiten los controladores JDBC los tipos de datos Oracle ROWID? ¿Qué tiene que ver esto con getCursorName y setCursorName?
-
¿Cómo admiten los controladores JDBC los tipos de datos Oracle ROWID?
-
¿Funciona ANO con controladores JDBC?
-
¿Puedo serializar tipos de datos oracle.sql.*?
-
¿Los controladores JDBC admiten objetos o recopilaciones?
-
¿Puedo utilizar WaitOption y AutoRollback?
-
¿Puede un procedimiento almacenado Java en una instancia de base de datos abrir una conexión a otra instancia de base de datos?
-
Desempeño
Ampliar todoReducir todo-
-
¿Cuál es más rápido, el controlador Thin o el controlador OCI?
-
¿Qué es más rápido, las sentencias o PreparedStatements?
-
java.util.logging
Ampliar todoReducir todo-
-
¿Cómo puedo utilizar java.util.logging para obtener la salida de rastreo de los controladores JDBC de Oracle?
-
¿Cómo configuro java.util.logging para obtener una salida de rastreo útil de JDBC de Oracle?
-
¿Qué sucede con el controlador interno del lado del servidor?
-