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)

    • O que há de novo no 26ai?
    • Existe algum documento relacionado ao Oracle Database Cloud Service para desenvolvedores de Java?

JDBC em Geral

    • O que é o JDBC?
    • Onde posso aprender mais sobre o JDBC?
    • Onde posso aprender mais sobre o Java?

Perguntas Específicas sobre Versão

    • Quais versões dos drivers JDBC são compatíveis?

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
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

    • O que é a matriz de interoperabilidade JDBC e RDBMS ou a matriz de certificação?

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

    • Quais são as versões do Oracle JDBC e as do JDK?

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

    • Quais são as versões do Oracle JDBC e as especificações do JDK?

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

    • 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

    • 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

    • 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

    • 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

    • 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

    • Quais são os limites de tamanho para os métodos proprietários setBytesForBlob, setStringForClob em oracle.jdbc.OraclePreparedStatement?

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

    • 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

    • O que significa "Exhausted Resultset: prepare_for_new_get"?
    • Por que devo fechar ResultSets?

Tipos de dados simples

    • 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(SetBigStringTryClob="false")
4 mil caracteres (SetBigStringTryClob="true")


setString

CLOB


2G caracteres


    • Por que o resultado da leitura de um TIMESTAMP WITH TIME ZONE é diferente?

Tipos de Dados Avançados (Objetos)

    • Como criar instâncias de ADTs?
    • Por que o método de fábrica padrão createArrayOf não é suportado?

BFILEs, BLOBs, CLOBs

    • 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

    • 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

    • O que são os tipos OPAQUE?

Origens da Linha

    • 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

    • O Driver JDBC Thin pode ser usado para desenvolver aplicações Java?

Driver Interno do Servidor

    • Quando usar o Driver Interno do Servidor?

Driver Thin do Servidor

    • Quando usar o Driver Thin do Servidor?

Erros

    • 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

    • 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

    • 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

    • Posso depurar programas do JDBC com o Symantec Visual Cafe?
    • Posso depurar programas do JDBC com o Microsoft's Visual J++?

Recursos Suportados

    • 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

    • Qual é mais rápido, o driver Thin ou o driver OCI?
    • O que é mais rápido, Statements ou PreparedStatements?

java.util.logging

    • 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?