Close Menu
  • Home
  • Databases
    • Oracle
      • ASM
      • Data Guard
      • RAC
  • Performance
  • Tools
  • Troubleshooting
  • Python
  • Shell Script
Search

PRVG-1901, PRVH-0185, PRVH-0516 — Fleet Maintenance falha com /tmp noexec

2026-04-20 Oracle By Henrique

ORA-29548 — Java system class reported: versão do dicionário não corresponde ao executável

2026-04-20 Oracle By Henrique

ORA-15221 — ASM operation requires compatible.asm of string or higher

2026-04-18 ASM By Henrique
YouTube LinkedIn RSS
  • Sobre
  • Contato
  • Legal
    • Aviso Legal
    • Política de Cookies
    • Política de Privacidade
    • Termos de Uso
  • RSS
  • Português
    • Inglês
Execute StepExecute Step
YouTube LinkedIn RSS
  • Home
  • Databases
    • Oracle
      • ASM
      • Data Guard
      • RAC
  • Performance
  • Tools
  • Troubleshooting
  • Python
  • Shell Script
Execute StepExecute Step
Home » ORA-29548 — Java system class reported: versão do dicionário não corresponde ao executável
Oracle Troubleshooting

ORA-29548 — Java system class reported: versão do dicionário não corresponde ao executável

HenriqueBy Henrique2026-04-205 Mins Read
Share
Facebook Twitter LinkedIn Pinterest Email Telegram WhatsApp

This post is also available in: English (Inglês)

ERROR at line 1:
ORA-29548: Java system class reported: release of Java system classes
in the database (19.0.0.0.210420 1.8) does not match that of the oracle
executable (19.0.0.0.0 1.8)

Esse erro aparece quando há uma divergência de versão entre o Java instalado no Oracle Home (sistema de arquivos) e o Java carregado no dicionário de dados. Em quase todos os casos, ele surge logo após a aplicação de um Release Update (RU) ou PSU que atualizou o binário do Oracle, mas não propagou a atualização para o JVM interno do banco.

💡 Na prática

O ORA-29548 não é um erro de aplicação — é uma consequência direta de um patch aplicado de forma incompleta. O opatchauto ou o opatch apply atualiza o Oracle Home, mas as classes Java do dicionário precisam ser atualizadas separadamente, via datapatch ou via script manual. Quando essa etapa é pulada ou falha silenciosamente, qualquer operação que acione o JVM interno do Oracle vai retornar esse erro.

Por que acontece

O Oracle mantém Java em dois lugares distintos:

  1. No Oracle Home ($ORACLE_HOME/javavm/) — os binários no sistema de arquivos, atualizados pelo OPatch.
  2. No dicionário de dados — as classes Java carregadas dentro do banco (SYS.JAVA$CLASS$MD5$TABLE e estruturas relacionadas), que precisam ser sincronizadas separadamente.

Quando você aplica um RU/PSU, o componente (1) é atualizado. O componente (2) permanece na versão anterior até que a etapa de pós-patch seja concluída. O Oracle detecta essa divergência e lança o ORA-29548 em qualquer chamada que dependa do JVM interno.

Situações comuns onde isso ocorre:

  • Aplicação de RU/PSU sem execução do datapatch após o restart do banco
  • datapatch executado mas com erro silencioso no componente OJVM
  • Rollback de patch que incluía o componente OJVM
  • Banco criado a partir de um Oracle Home já patcheado, sem execução de datapatch na nova instância

Diagnóstico

Antes de corrigir, confirme a divergência de versão:

-- Versão no dicionário de dados
SELECT dbms_java.get_jdk_version() FROM dual;

-- Versão do executável no Oracle Home (rodar no shell)
-- $ORACLE_HOME/jdk/bin/java -version

Se o SELECT retornar ORA-29548, a divergência está confirmada. O output do erro já mostra as duas versões em conflito — use isso para validar após a correção.

Verifique também o status do patch no dicionário:

SELECT patch_id, version, action, status, description
FROM   dba_registry_sqlpatch
ORDER  BY action_time DESC
FETCH FIRST 10 ROWS ONLY;

Se o último patch OJVM aparecer com status WITH ERRORS, o datapatch não concluiu corretamente — siga pela Solução 1 abaixo.

Solução

Solução 1 — Script manual (mais rápida e mais segura)

⚠️ Pré-requisito: O banco deve estar aberto (OPEN), não em MOUNT. Execute como SYS.

sqlplus / as sysdba
SQL> @?/javavm/install/update_javavm_db.sql

O script recarrega e sincroniza as classes Java do sistema. A execução pode levar de alguns minutos a dezenas de minutos dependendo do ambiente. Não interrompa.

Para ambientes CDB/Multitenant: o script precisa ser executado no CDB$ROOT e em cada PDB que apresentar o erro:

-- No CDB$ROOT
SQL> @?/javavm/install/update_javavm_db.sql

-- Conecte em cada PDB afetado e repita
SQL> ALTER SESSION SET CONTAINER = nome_do_pdb;
SQL> @?/javavm/install/update_javavm_db.sql

ℹ️ Em ambientes RAC, o dicionário de dados é compartilhado. Basta executar o script uma vez, a partir de qualquer nó, com o banco em aberto.

Solução 2 — Via datapatch (abordagem correta para ambientes patcheados)

Se o banco foi patcheado com RU recente e o datapatch não foi executado corretamente, execute-o agora:

$ORACLE_HOME/OPatch/datapatch -verbose

Em RAC, datapatch roda a partir de um único nó. O dicionário é compartilhado entre as instâncias.

ℹ️ Se o datapatch foi executado mas o ORA-29548 persiste, o OJVM pode não ter sido incluído no RU aplicado, ou houve um erro silencioso. Use a Solução 1 como fallback.

Validação

Após a correção, confirme que as versões estão sincronizadas:

SQL> SELECT dbms_java.get_jdk_version() FROM dual;

DBMS_JAVA.GET_JDK_VERSION()
--------------------------------------------------------------------------------
1.8.0_201

1 row selected.

Se o SELECT retornar a versão sem erro, o JVM está sincronizado.

Checklist rápido

-- 1. Confirmar o erro
SELECT dbms_java.get_jdk_version() FROM dual;

-- 2. Verificar status do último patch OJVM
SELECT patch_id, version, action, status, description
FROM   dba_registry_sqlpatch
ORDER  BY action_time DESC
FETCH FIRST 5 ROWS ONLY;

-- 3a. Solução via script (banco aberto, como SYS)
@?/javavm/install/update_javavm_db.sql

-- 3b. Alternativa via datapatch (shell)
-- $ORACLE_HOME/OPatch/datapatch -verbose

-- 4. Validar
SELECT dbms_java.get_jdk_version() FROM dual;

Referências

  • Oracle Database Error Messages — ORA-29548
  • Oracle Patching Documentation: Post-Patch SQL Actions (datapatch)
  • MOS Note 1609718.1 — Using the datapatch Utility (verificar)
datapatch java ojvm ora-29548 oracle patching
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email WhatsApp
Previous ArticleORA-15221 — ASM operation requires compatible.asm of string or higher
Next Article PRVG-1901, PRVH-0185, PRVH-0516 — Fleet Maintenance falha com /tmp noexec

Related Posts

Oracle

EMD runCollection Error — Agente OEM Rodando Sem Coletar Métricas

2026-04-14
Read More
Oracle

Oracle RAC 12.2 no VMware Workstation — Post 4: Instalação do Oracle Database e DBCA

2026-04-11
Read More
Oracle

ORA-01031 — Privilégio Insuficiente ao Criar Coluna IDENTITY

2026-04-03
Read More
Add A Comment
Leave A Reply Cancel Reply

Demo
Follow Me
  • Email
  • GitHub
  • LinkedIn
  • RSS
  • YouTube

INS-06006 – Passwordless SSH Connectivity Not Set Up

2026-02-2614 Views

Limpeza da biblioteca de software OEM: Purge seguro e controle de crescimento de swlib

2026-02-215 Views

ORA-29548 – Como corrigir o erro “Java System Class Reported” no Oracle Database

2026-03-053 Views
Demo
Execute Step
YouTube LinkedIn RSS
  • Home
  • Sobre
  • Contato
  • RSS
  • Português
    • English (Inglês)
© 2026 ExecuteStep. Designed by ThemeSphere.

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Our website is made possible by displaying online advertisements to our visitors. Please support us by disabling your Ad Blocker.