Ferramentas do usuário

Ferramentas do site


ora-04023

How to solve (ORA-04023) - Object <OWNER.OBJECT> could not be validated or authorized

Olá, nesse artigo iremos abordar as etapas necessárias para corrigir o erro (ORA-04023).

  • ORA-04023 Reported while Accessing Valid Objects (Doc ID 1610514.1)
Causa:
This is issue is due to a timestamp inconsistency in the data
 dictionary. This timestamp inconsistency will lead to the problem when we
 populate the relevant cached objects and later try to select from the
 affected views.

1 - Identificar os objetos que apresentam discrepância de timestamp:

sqlplus / as sysdba
@?/rdbms/admin/utldtchk.sql

2 - Caso não tenha acesso diretamente ao servidor, pode executar a query abaixo:

SELECT du.name d_owner, d.name d_name, i.object_type, d.defining_edition d_edition,
       pu.name p_owner, p.name p_name, o.object_type, p.defining_edition p_edition,
   CASE
      WHEN p.status NOT IN (1, 2, 4) THEN 'P Status: ' || to_char(p.status)
   ELSE 'TS mismatch:      ' ||
      to_char(dep.p_timestamp, 'DD-MON-YY HH24:MI:SS') || ' - ' ||
      to_char(p.stime, 'DD-MON-YY HH24:MI:SS')
   END reason
   FROM sys."_ACTUAL_EDITION_OBJ" d, sys.user$ du, sys.dependency$ dep,
        sys."_ACTUAL_EDITION_OBJ" p, sys.user$ pu,
        sys.dba_objects o, sys.dba_objects i
   WHERE d.obj# = dep.d_obj# AND p.obj# = dep.p_obj#
     AND d.owner# = du.user# AND p.owner# = pu.user#
     AND d.status = 1                                    -- Valid dependent
     AND bitand(dep.property, 1) = 1                     -- Hard dependency
     AND d.subname IS NULL                               -- !Old type version
     AND NOT(p.type# = 32 AND d.type# = 1)               -- Index to indextype
     AND NOT(p.type# = 29 AND d.type# = 5)               -- Synonym to Java
     AND NOT(p.type# IN(5, 13) AND d.type# IN (2, 55))   -- TABL/XDBS to TYPE
     AND (p.status NOT IN (1, 2, 4) OR p.stime != dep.p_timestamp)
     AND o.owner = pu.name
     AND o.object_name = p.name
     AND i.owner = du.name
     AND i.object_name = d.name
     ORDER BY 1,2,3;

3 - Recompile manualmente todos os objetos da lista retornada.

  • Isso removerá a inconsistência de timestamp no dicionário de dados e resolverá o problema.

- Até a próxima.

How to solve (ORA-04023) - Object <OWNER.OBJECT> could not be validated or authorized

— Autor: Leonardo Lopes 06/05/2025 10H:37

ora-04023.txt · Última modificação: 06/05/2025 10H:37 por admin