오라클 프로시저 재 컴파일 방법
/* 오라클 프로시저 재 컴파일 방법 */
SELECT 'ALTER PROCEDURE '||OBJECT_NAME||' COMPILE;' DSQL
FROM USER_PROCEDURES
WHERE OBJECT_TYPE = 'PROCEDURE'
ORDER BY OBJECT_NAME
;
ALTER PROCEDURE [PROCEDURE NAME] COMPILE;
/* 이건 다른 방법 */
EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT');
라고 하면 scott 유저의 모든 Procedure/Trigger/Function등이 재컴파일 됩니다.
EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT', compile_all => false);
라고 하면 scott내에 invalid 상태만 재컴파일 하는 것으로 기억합니다.
개별적으로 선택해서 하시려면 user_objects 나 dba_objects에서 select 하면서
exec dbms_ddl.alter_compile ('PROCEDURE','SCOTT','TEST'); 의 형태에 맞춰서 spool 또는 select 후 붙여넣기의 방식으로 스크립트를 만드셔두 되겠네요.
/////////////////
select 'alter '||decode(object_type,'PACKAGE','package ',
'PACKAGE BODY', 'package ',
'VIEW', 'view ',
'FUNCTION', 'function ',
'PROCEDURE', 'procedure ',
'TYPE', 'type ',
'TRIGGER', 'trigger ', NULL) ||owner||'.'|| object_name ||' compile '||
decode(object_type,'PACKAGE BODY','body')||';'
from all_objects
where status='INVALID';
invalid 객체만 compile 하는 간단 sql 입니다.
쿼리 결과 그대로 긁은 후 스크립트 만드셔서 실행하시면 됩니다.
SELECT 'ALTER PROCEDURE '||OBJECT_NAME||' COMPILE;' DSQL
FROM USER_PROCEDURES
WHERE OBJECT_TYPE = 'PROCEDURE'
ORDER BY OBJECT_NAME
;
ALTER PROCEDURE [PROCEDURE NAME] COMPILE;
/* 이건 다른 방법 */
EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT');
라고 하면 scott 유저의 모든 Procedure/Trigger/Function등이 재컴파일 됩니다.
EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT', compile_all => false);
라고 하면 scott내에 invalid 상태만 재컴파일 하는 것으로 기억합니다.
개별적으로 선택해서 하시려면 user_objects 나 dba_objects에서 select 하면서
exec dbms_ddl.alter_compile ('PROCEDURE','SCOTT','TEST'); 의 형태에 맞춰서 spool 또는 select 후 붙여넣기의 방식으로 스크립트를 만드셔두 되겠네요.
/////////////////
select 'alter '||decode(object_type,'PACKAGE','package ',
'PACKAGE BODY', 'package ',
'VIEW', 'view ',
'FUNCTION', 'function ',
'PROCEDURE', 'procedure ',
'TYPE', 'type ',
'TRIGGER', 'trigger ', NULL) ||owner||'.'|| object_name ||' compile '||
decode(object_type,'PACKAGE BODY','body')||';'
from all_objects
where status='INVALID';
invalid 객체만 compile 하는 간단 sql 입니다.
쿼리 결과 그대로 긁은 후 스크립트 만드셔서 실행하시면 됩니다.