Perguntas frequentes sobre o Oracle JDBC (FAQ)
Este FAQ contém respostas às perguntas mais frequentes sobre os drivers JDBC da Oracle. Observe que estas Perguntas frequentes abordam apenas questões técnicas específicas e também cobrem problemas conhecidos. Consulte o Guia do Desenvolvedor JDBC e o Javadoc para JDBC para obter mais detalhes sobre os recursos e como eles podem ser usados em sua aplicação.
Perguntas frequentes (FAQ)
Expandir tudoRecolher tudo-
-
O que há de novo no 26ai?
-
Existe algum documento relacionado ao Oracle Database Cloud Service para desenvolvedores de Java?
-
JDBC em Geral
Expandir tudoRecolher tudo-
-
O que é o JDBC?
-
Onde posso aprender mais sobre o JDBC?
-
Onde posso aprender mais sobre o Java?
-
Versão |
Data da disponibilidade geral |
Término do Suporte Premier |
Término do suporte estendido |
Término do suporte de manutenção |
|---|---|---|---|---|
| 26ia | Jan 2026 |
|
Dez 2031 | Indefinido |
| 21c (Versão de Inovação) | Agosto de 2021 | Julho de 2027 | Não disponível | Indefinido |
| 19c (Versão de Longo Prazo) | Abril de 2019 | Dezembro de 2029 (Consulte a Política de Suporte Vitalício) | Dezembro de 2032 | Indefinido |
| 18c | Julho de 2018 | Junho de 2021 | Não disponível | Indefinido |
| 12.2 | Março de 2017 | 30 de novembro de 2020 (período limitado de correção de erros para 12.2.0.1 - 1º de dezembro de 2020 - 31 de março de 2022) | Não disponível | Indefinido |
| EE 12.1 | Junho de 2013 | Julho de 2018 | Julho de 2022 | Indefinido |
Matriz de Interoperabilidade |
Banco de Dados 23.x |
Banco de Dados 21.x |
Banco de Dados 19.x |
Banco de Dados 18.3 |
Banco de Dados 12.2 e 12.1 |
|---|---|---|---|---|---|
| JDBC 23.x | Sim | Sim | Sim | Não | Não |
| JDBC 21.x | Sim | Sim | Sim | Foi | Foi |
| JDBC 19.x | Sim | Sim | Sim | Foi | Foi |
| JDBC 18.x | Não | Foi | Foi | Foi | Foi |
| JDBC 12.2 e 12.1 | Não | Foi | Foi | Foi | Foi |
Versão do Oracle Database |
Arquivos JAR do JDBC específicos da versão |
|---|---|
| 23.x | ojdbc17.jar com JDK17, JDK19, JDK21 e JDK25 com suporte a APIs Jakarta ojdbc11.jar com JDK11 e JDK21 ojdbc8.jar com JDK8 e JDK11 |
| 21.x | ojdbc11.jar com JDK11, JDK17, JDK19, e JDK21 ojdbc8.jar com JDK8 e JDK11 |
| 19.x | ojdbc10.jar com JDK11, JDK17, JDK19, e JDK21 (19.25 em diante) ojdbc8.jar com JDK8, JDK11, JDK17, JDK19 e JDK21 (19.25 em diante) |
| 18.x | ojdbc8.jar com JDK8 e JDK11 |
| 12.2 ou 12cR2 | ojdbc8.jar com JDK 8 |
| 12.1 ou 12cR1 | ojdbc7.jar com JDK 7 e JDK 8 ojdbc6.jar com JDK 6 |
| 11.2 ou 11gR2 | ojdbc6.jar com JDK 6, JDK 7, e JDK 8 (Observação: JDK7 e JDK8 são suportados apenas nas versões 11.2.0.3 e 11.2.0.4) ojdbc5.jar com JDK 5 |
Versão do Oracle Database |
Conformidade da especificação do JDBC |
|---|---|
| 23.x e 21.x | JDBC 4.3 in ojdbc11.jar JDBC 4.2 no ojdbc8.jar |
| 19.x | JDBC 4.3 in ojdbc10.jar JDBC 4.2 no ojdbc8.jar |
| 18.3 | JDBC 4.2 no ojdbc8.jar |
| 12.2 ou 12cR2 | JDBC 4.2 no ojdbc8.jar |
| 12.1 ou 12cR1 | JDBC 4.1 no ojdbc7.jar JDBC 4.0 no ojdbc6.jar |
| 11.2 ou 11gR2 | JDBC 4.0 no ojdbc6.jar JDBC 3.0 no ojdbc5.jar |
Perguntas adicionais específicas sobre versão
Expandir tudoRecolher tudo-
-
Os drivers Oracle JDBC são certificados em OpenJDK?
-
Qual é o driver JDBC 19.x recomendado para ser usado com o JDK11?
-
E quanto à versão do JDBC que não está listada na tabela acima?
-
Onde eu consigo os arquivos jar do JDBC?
-
Para que servem os diferentes arquivos JAR na página de download do driver JDBC 19.x?
-
Oracle JDBC em Geral
Expandir tudoRecolher tudo-
-
Quais são os diferentes drivers JDBC fornecidos pela Oracle?
-
Qual driver usar?
-
E quanto aos arquivos jar do Driver Thin do Servidor e o Driver Interno do Servidor?
-
Os fornecedores de terceiros podem distribuir os drivers JDBC da Oracle juntamente com seus próprios softwares?
-
Quais permissões os drivers Oracle JDBC exigem?
-
Instalação
Expandir tudoRecolher tudo-
-
Como instalar o driver Thin?
-
Como instalar o driver Thin?
-
Como instalar o driver Interno do lado do servidor ou o Thin no driver do servidor?
-
DriverManager e DataSources
Expandir tudoRecolher tudo-
-
Qual é a diferença entre DriverManager e DataSource?
-
Qual pool de conexões usar?
-
O que é o Pool de Conexões do JDBC OCI?
-
Conexões
Expandir tudoRecolher tudo-
-
Qual é o formato de um URL?
-
Qual é o formato da descrição?
-
Como usar o argumento Properties?
-
Não é necessário registrar a classe OracleDriver no DriverManager?
-
Qual nome de usuário e senha devem ser usados ao conectar com o Driver Interno do servidor?
-
Vejo o erro OutofMemory quando defino um valor de pré-extração padrão mais alto.
-
O que é uma string de conexão de serviço?
-
Como me conectar como SYSDBA ou SYSOPER?
-
Quais métodos de criptografia são suportados pelos drivers Oracle JDBC?
-
Como ativar a criptografia e a soma de verificação com o driver JDBC Thin?
-
O que é a autenticação de proxy?
-
Os drivers Oracle JDBC suportam SSL?
-
Os drivers Oracle JDBC suportam LDAP no URL de conexão?
-
Como usar o JDBC para me conectar com um servidor de banco de dados protegido por um firewall?
-
-
Statements, PreparedStatements, CallableStatements
-
O que é defineColumnType e quando usar?
-
defineColumnType força as conversões no Servidor?
-
Como desativar EscapeProcessing no nível do driver JDBC em vez de chamar stmt.setEscapeProcessing(false) no código da aplicação?
-
Os drivers Oracle JDBC forneceram um recurso Vincular por Nome?
-
No caso de métodos setXXX em PreparedStatement, como os drivers JDBC da Oracle determinam o tipo de dados?
-
O que acontece se o tipo do parâmetro de destino não for o mesmo que o tipo presumido pelo método setXXX?
-
Por que os drivers não fazem a conversão no lado do cliente?
-
Quais são os tipos de dados de byte para inserir em uma coluna em uma tabela?
-
Quais são os tipos de dados de caracteres para inserir em uma coluna em uma tabela?
-
Quais são os tamanhos para setString, setCharacterStream e setAsciiStream e os limites de tamanho para dados binários via setBytes e setBinaryStream?
-
Form |
Instru |
Driver |
Limite inferior |
Limite Superior |
Mecanismo de vinculação |
Observação |
|---|---|---|---|---|---|---|
| Todos | Todos | Todos | 0 | 0 | Nulo | |
| Todos | SQL | Cliente | 1 caractere | 32766 caracteres | Direto | |
| Todos | SQL | Cliente | 32767 caracteres | 2147483647 bytes | Streaming | |
| Todos | SQL | Cliente | 2147483648 bytes | 2147483647 caracteres | Clob Temporário |
|
| CARAC | |
Servidor | 1 Char | 65536 bytes | Direto |
1, 2 |
| NCARAC | |
|
1 Char | 4000 bytes | Direto |
|
| NCARAC | |
|
4001 bytes | 2147483647 caracteres | Clob Temporário |
|
| CARAC | |
|
65537 bytes | 2147483647 caracteres | Streaming |
|
| |
|
|
2147483647 bytes | 2147483647 caracteres | Clob Temporário |
| Todos | PL/SQL | Todos | 1 caractere | 32512 caracteres | Direto | |
| Todos | PL/SQL | Todos | 32512 caracteres | 2147483647 caracteres | Clob Temporário |
API |
FORM |
Instru |
Driver |
Limite inferior |
Limite Superior |
Mecanismo de vinculação |
Observação |
|---|---|---|---|---|---|---|---|
| setBytesForBlob | n/d |
Todos | Todos | 0 |
0 |
Nulo | |
| |
|
Todos | Cliente | 1 byte | 2000 bytes |
Direto | |
| |
|
Todos | Cliente | 2001 bytes | 21474836487 bytes | Blob Temporário | 2 |
| setStringForClob | Todos |
Todos | Todos | 0 | 0 | Nulo | |
| |
Todos |
Todos | Cliente | 1 caractere | 32766 caracteres | Direto | |
| |
Todos |
Todos | Cliente | 32766 caracteres | 2147483647 caracteres | Clob Temporário | |
| |
Todos |
Todos | Servidor | 1 caractere | 4000 bytes | Direto | |
| |
Todos |
Todos | Servidor | 4001 bytes | 2147483647 caracteres | Clob Temporário | 1 |
Expandir tudoRecolher tudo
-
-
Alternar os tipos de vinculação força uma análise adicional do servidor da instrução?
-
E quanto a CallableStatements e procedimentos com parâmetros IN OUT?
-
A seleção de procedimentos PL/SQL polimórficos será alterada quando o tipo de vínculo mudar?
-
E quanto ao código existente?
-
Em alguns casos, o driver cria lobs temporários. Ele os rastreia e os libera?
-
Estamos usando um conjunto de caracteres com largura variável, como UTF8. O driver corrige o tamanho do byte de uma sequência de caracteres?
-
É uma boa ideia usar, por exemplo, setString para uma string muito grande?
-
Os tipos de coluna LONG RAW e LONG foram descontinuados. Por que há novos usos das APIs setXXXStream?
-
As APIs LOB são muito mais flexíveis, não é verdade?
-
Por que não posso criar um PreparedStatement que faça select * from tab where id in (?, ?, ?, ...)?
-
ResultSets
Expandir tudoRecolher tudo-
-
O que significa "Exhausted Resultset: prepare_for_new_get"?
-
Por que devo fechar ResultSets?
-
Tipos de dados simples
Expandir tudoRecolher tudo-
-
Qual é o caso de DATE e TIMESTAMP?
-
Qual é o valor mais longo que pode ser vinculado?
-
Método |
Tipo de Coluna |
Tamanho máximo |
|---|---|---|
setBytes |
LONG |
4 mil bytes |
setBytes |
LONG RAW |
2G bytes |
setString |
LONG |
32 mil caracteres( |
setString |
|
2G caracteres |
Expandir tudoRecolher tudo
-
-
Por que o resultado da leitura de um TIMESTAMP WITH TIME ZONE é diferente?
-
Tipos de Dados Avançados (Objetos)
Expandir tudoRecolher tudo-
-
Como criar instâncias de ADTs?
-
Por que o método de fábrica padrão createArrayOf não é suportado?
-
BFILEs, BLOBs, CLOBs
Expandir tudoRecolher tudo-
-
O que DBMS_LOB.ERASE faz?
-
Posso usar oracle.sql.CLOB.putChars()?
-
O OCI fornece uma função para manipular um CLOB CharSetId. Qual é o equivalente do JDBC?
-
Escrever em BLOBS é mais lento do que inserir LONG RAWs?
-
Por que vejo um erro ORA-03127 ao receber o LobLength no código de amostra do Stream?
-
Quando recebo um CLOB do banco de dados e o atualizo, às vezes minhas alterações não aparecem no banco de dados. Por quê?
-
Tipos REF
Expandir tudoRecolher tudo-
-
Como passar um oracle.sql.REF entre dois clientes JDBC diferentes (Clientes EJBs, JDBC etc.)? Como a classe REF não é serializável?
-
Como criar um novo REF?
-
Tipos OPAQUE
Expandir tudoRecolher tudo-
-
O que são os tipos OPAQUE?
-
Origens da Linha
Expandir tudoRecolher tudo-
-
Quando eu defino o atributo de capacidade de rolagem após a execução, ele não tem nenhum efeito na rolagem do RowSet. Por quê?
-
Posso serializar o objeto RowSet em um arquivo simples mesmo que RowSet contenha fluxos?
-
Driver Thin
Expandir tudoRecolher tudo-
-
O Driver JDBC Thin pode ser usado para desenvolver aplicações Java?
-
Driver Interno do Servidor
Expandir tudoRecolher tudo-
-
Quando usar o Driver Interno do Servidor?
-
Driver Thin do Servidor
Expandir tudoRecolher tudo-
-
Quando usar o Driver Thin do Servidor?
-
Erros
Expandir tudoRecolher tudo-
-
DriverManager.getConnection gera o Erro: “Nenhum driver adequado”
-
Mensagem de Erro: “UnsatisfiedLinkError com o driver OCI”
-
Mensagem de erro: “ORA-1019: não foi possível alocar memória.”
-
Mensagem de erro: “ORA-01000: número máximo de cursores abertos excedido”
-
Mensagem de Erro: “ORA-01002: extração fora de sequência”
-
Mensagem de Erro: “ORA-12705: valor do parâmetro NLS inválido ou desconhecido especificado”
-
Erro ao tentar recuperar o texto do erro ORA-12705.
-
Mensagem de Erro: O Driver JDBC Thin mostra Erros de "caractere inválido" de Literais Unicode
-
As operações INSERT ou UPDATE são lentas
-
Mensagem de erro: "Conexão redefinida pelo sistema de mesmo nível"
-
O que significa "violação do protocolo"?
-
Programas de Demonstração
Expandir tudoRecolher tudo-
-
Existe algum programa de demonstração do JDBC?
-
Como executar as demonstrações?
-
O que fazer em caso de erro ao executar uma demonstração?
-
Oracle JDBC Trace Facility
Expandir tudoRecolher tudo-
-
O que é o JDBC Trace Facility?
-
Como ativar o rastreamento JDBC antigo?
-
Como controlar o volume de saída de rastreamento?
-
Para onde vai a saída do rastreamento?
-
Como posso desativar o DMS em um jar habilitado para DMS?
-
Ferramentas e ambientes de desenvolvimento
Expandir tudoRecolher tudo-
-
Posso depurar programas do JDBC com o Symantec Visual Cafe?
-
Posso depurar programas do JDBC com o Microsoft's Visual J++?
-
Recursos Suportados
Expandir tudoRecolher tudo-
-
Os Drivers JDBC podem acessar Procedimentos Armazenados PL/SQL?
-
Os Drivers JDBC suportam streaming?
-
Os Drivers JDBC suportam conjuntos de caracteres multibyte?
-
Os Drivers JDBC funcionam com firewalls?
-
Os drivers JDBC da Oracle suportam TABLES/RESULT SETS/RECORDS/BOOLEANS PL/SQL?
-
Existe suporte para failover?
-
Como os drivers JDBC suportam tipos de dados Oracle ROWID? O que isso tem a ver com getCursorName e setCursorName?
-
Como os drivers JDBC suportam tipos de dados Oracle REFCURSOR?
-
O ANO funciona com drivers JDBC?
-
Posso serializar tipos de dados oracle.sql.*?
-
Os Drivers JDBC suportam Objetos ou Coleções?
-
Posso usar WaitOption e AutoRollback?
-
Um Procedimento Armazenado Java em uma instância de banco de dados pode abrir uma conexão com outra instância de banco de dados?
-
Desempenho
Expandir tudoRecolher tudo-
-
Qual é mais rápido, o driver Thin ou o driver OCI?
-
O que é mais rápido, Statements ou PreparedStatements?
-
java.util.logging
Expandir tudoRecolher tudo-
-
Como usar java.util.logging para obter a saída de rastreamento dos drivers Oracle JDBC?
-
Como configurar java.util.logging para obter uma saída de rastreamento útil do Oracle JDBC?
-
E quanto ao driver Interno do lado do Servidor?
-