본문 바로가기
너알나알/오라클[Oracle]

[오라클]오브젝트 INVALID 조회+활성화

by ToBeIsFree 2024. 3. 11.

시스템을 운영하다보면 여러 스케쥴러나 JOB을 설정하는 경우가 많은데

종종 정상적인 수행이 되지 않았을때 오브젝트가 비활성화 된 상태로 존재 하는 경우가 있습니다.

FUNCTION, 프로시져 그리고 PACKAGE 등과 같은 오브젝트에 대한 비활성화 대상을 조회하고

SQL을 활용한 활성화 구문을 생성하고자 합니다

 

INVALID 상태의 오브젝트 조회
  SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
    FROM USER_OBJECTS
   WHERE STATUS = 'INVALID'

  SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS
    FROM DBA_OBJECTS -- ALL_OBJECTS
   WHERE STATUS = 'INVALID'

 

활성화(VALID) 구문 조회 SQL
SELECT DISTINCT 'ALTER '||OBJECT_TYPE||'  '||OWNER||'.'|| OBJECT_NAME || ' COMPILE ;' AS COMPILE_SQL
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID' 
  AND OBJECT_TYPE NOT IN ( 'PACKAGE BODY','SYNONYM') 
UNION
SELECT DISTINCT 'ALTER PACKAGE ' ||OWNER||'.'|| OBJECT_NAME || ' COMPILE BODY;' AS COMPILE_SQL
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID' 
  AND OBJECT_TYPE IN ( 'PACKAGE BODY')  ;

 

ALTER 오브젝트 타입 오브젝트명 COMPILE

Orange, Toad, PL/SQL Developer와 같은 Tool에서는 바로 조회 및 활성화가 가능합니다

 

 

댓글