본문 바로가기

DB/__Oracle & Scripts & Log

INVALID OBJECT 컴파일 하기

제목 : INVALID OBJECT 컴파일 하기 

      
방법1 ) utlrp.sql 을 통한 재컴파일 하기
: 만약 utlrp.sql로 수행이 안될 경우에는 여러번 수행하면 재컴파일 됩니다.

10G 에서 utlrp.sql을 통한 Object recompile 하기
SYS@TGDOM>@$ORACLE_HOME/rdbms/admin/utlrp.sql

COMP_TIMESTAMP UTLRP_BGN  2007-08-28 10:47:08

COMP_TIMESTAMP UTLRP_END  2007-08-28 10:48:10
Invoking Ultra Search Install/Upgrade validation procedure VALIDATE_WK
=======================================================
=     WKSYS schema validation failed: ORA-01422: exact fetch returns more than requested number of rows
=======================================================

8i 에서 utlrp.sql을 통한 object recompile 하기
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
PL/SQL procedure successfully completed.

 

방법2) VALID/INVALID 구분 없이 모두 컴파일 하기
SQL> !more recompile.sql

prompt
prompt object를 다시 컴파일 수행
prompt
set pagesize 2000
set linesize 200

SELECT 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE;'
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID'
AND OBJECT_TYPE != 'PACKAGE BODY'
UNION
SELECT 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE BODY;'
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID'
AND OBJECT_TYPE = 'PACKAGE BODY'
/

 

방법3) INVALID 만 컴파일 하기

SQL> !more invalideobject_recompile.sql

set heading off
set feedback off
set pages 1000
set verify off
spool allcompile.sql
SELECT 'alter '||DECODE(object_type,'PACKAGE BODY',
'PACKAGE',object_type)||' '||owner||'.'||object_name||
' compile'||
DECODE(object_type,'PACKAGE BODY',' body;',';')
FROM dba_objects
WHERE object_type in
('VIEW','FUNCTION','TRIGGER','PROCEDURE','PACKAGE',
'PACKAGE BODY')
AND status='INVALID'
ORDER BY owner,decode
(object_type,'VIEW','A','FUNCTION','B',
'TRIGGER','C','PROCEDURE','D',
'PACKAGE','E','PACKAGE BODY','F')
,object_name
/
spool off

출처 : OTN 포럼 민천사님 글
 http://kr.forums.oracle.com/forums/thread.jspa?messageID=1528813&#1528813