Como resolver o erro “ORA-29548: Java system class reported”

É bem mais comum do que gostaríamos. Já me deparei algumas vezes com o erro ORA-29548: Java system class reported: release of Java system classes in the database (VERSÃO_ANTIGA) does not match that of the oracle executable (VERSÃO_NOVA). Esse erro é causado principalmente pela aplicação incompleta do patch da JVM. Quando as atividades pós patch não são executadas corretamente a versão dos binários pode ficar diferente da versão registrada no banco de dados.



Esse erro deixa o java componentdo banco de dados inválido. Podemos verificar isso com a consulta abaixo.

SQL >SET LINE 200 pages 100
SQL >COL COMP_NAME FOR A50

SQL > select comp_name,comp_id, status, version from dba_registry;
COMP_NAME                                COMP_ID                        STATUS     VERSION
---------------------------------------- ------------------------------ ---------- ------------------------------
Oracle Multimedia                        ORDIM                          VALID      12.1.0.2.0
Oracle Text                              CONTEXT                        VALID      12.1.0.2.0
Oracle Workspace Manager                 OWM                            VALID      12.1.0.2.0
Oracle XML Database                      XDB                            VALID      12.1.0.2.0
Oracle Database Catalog Views            CATALOG                        VALID      12.1.0.2.0
Oracle Database Packages and Types       CATPROC                        VALID      12.1.0.2.0
JServer JAVA Virtual Machine             JAVAVM                         INVALID    12.1.0.2.0
Oracle XDK                               XML                            VALID      12.1.0.2.0
Oracle Database Java Packages            CATJAVA                        VALID      12.1.0.2.0

9 rows selected.

A solução para o problema é recriar o componente java system para que a versão dele fique de acordo com a versão dos binários. Para recriar o java system usamos o script abaixo update_javavm_db.sql

@?/javavm/install/update_javavm_db.sql

O resultado do script vai ser algo semelhante à saída abaixo.

SQL> @?/javavm/install/update_javavm_db.sql
SQL> SET FEEDBACK 1
SQL> SET NUMWIDTH 10
SQL> SET LINESIZE 80
SQL> SET TRIMSPOOL ON
SQL> SET TAB OFF
SQL> SET PAGESIZE 100
SQL>
SQL> alter session set "_ORACLE_SCRIPT"=true;

Session altered.

SQL>
SQL> -- If Java is installed, do CJS.
SQL>
SQL> -- If CJS can deal with the SROs inconsistent with the new JDK,
SQL> -- the drop_sros() call here can be removed.
SQL> call initjvmaux.drop_sros();

Call completed.

SQL>
SQL> create or replace java system;
  2 /

Java created.

SQL>
SQL> update dependency$
  2 set p_timestamp=(select stime from obj$ where obj#=p_obj#)
  3 where (select stime from obj$ where obj#=p_obj#)!=p_timestamp and
  4 (select type# from obj$ where obj#=p_obj#)=29 and
  5 (select owner# from obj$ where obj#=p_obj#)=0;

0 rows updated.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> alter session set "_ORACLE_SCRIPT"=false;

Session altered.

SQL>

Se após a execução do scrip o erro persistir, ou seja, se o java component continuar com status inválido. Os seguintes passos podem ser executados para fazer o reload do java component.

SQL > execute sys.dbms_registry.loaded('JAVAVM');
PL/SQL procedure successfully completed.
Elapsed: 00:02:37.11

SQL > execute sys.dbms_registry.valid('JAVAVM');
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.73

SQL > 
SQL > select comp_name,comp_id, status, version from dba_registry;
COMP_NAME                                COMP_ID                        STATUS     VERSION
---------------------------------------- ------------------------------ ---------- ------------------------------
Oracle Multimedia                        ORDIM                          VALID      12.1.0.2.0
Oracle Text                              CONTEXT                        VALID      12.1.0.2.0
Oracle Workspace Manager                 OWM                            VALID      12.1.0.2.0
Oracle XML Database                      XDB                            VALID      12.1.0.2.0
Oracle Database Catalog Views            CATALOG                        VALID      12.1.0.2.0
Oracle Database Packages and Types       CATPROC                        VALID      12.1.0.2.0
JServer JAVA Virtual Machine             JAVAVM                         LOADED     12.1.0.2.0
Oracle XDK                               XML                            VALID      12.1.0.2.0
Oracle Database Java Packages            CATJAVA                        VALID      12.1.0.2.0

9 rows selected.

Para verificar podemos executar as seguintes consultas. A saída deve ser algo similar ao resultado abaixo.

SQL> set line 200
SQL> col long_name for a40
SQL> SELECT dbms_java.longname('TEST') long_name from dual;

LONG_NAME
----------------------------------------
TEST

SQL> 

Também podemos verificar se o status do java está VALID

SQL> SET LINE 200 pages 100
SQL> COL COMP_NAME FOR A50
SQL> SELECT COMP_ID,COMP_NAME, VERSION,STATUS,MODIFIED FROM DBA_REGISTRY;

COMP_NAME                                COMP_ID                        STATUS     VERSION
---------------------------------------- ------------------------------ ---------- ------------------------------
Oracle Multimedia                        ORDIM                          VALID      12.1.0.2.0
Oracle Text                              CONTEXT                        VALID      12.1.0.2.0
Oracle Workspace Manager                 OWM                            VALID      12.1.0.2.0
Oracle XML Database                      XDB                            VALID      12.1.0.2.0
Oracle Database Catalog Views            CATALOG                        VALID      12.1.0.2.0
Oracle Database Packages and Types       CATPROC                        VALID      12.1.0.2.0
JServer JAVA Virtual Machine             JAVAVM                         VALID      12.1.0.2.0
Oracle XDK                               XML                            VALID      12.1.0.2.0
Oracle Database Java Packages            CATJAVA                        VALID      12.1.0.2.0

9 rows selected.

Elapsed: 00:00:00.07

Postar um comentário

0 Comentários