Procedure/Trigger/Function 컴파일하기 0 6 6,596

by 손님 [2010.04.02 14:32:04]



저는 오라클 10g 쓰는데요
가끔 Procedure/Trigger/Function을 컴파일 해야할 경우가 발생되더라구요
일일이 찾아서 컴파일 하기가 힘들어서
한번에 모든 Procedure/Trigger/Function을 컴파일하고 싶은데..
방법이 없나요?
by proud [2010.04.02 14:35:41]
dbms_utility.compile_schema(
schema IN VARCHAR2,
compile_all IN BOOLEAN DEFAULT TRUE,
reuse_settings IN BOOLEAN DEFAULT FALSE);

by 손님 [2010.04.02 14:50:53]
답변감사드립니다. 근데 무슨말인지 잘 이해가 않가요..ㅠ_ㅠ
참고로 저는 오라클 툴만 사용하고 있어서..
SQL+ 는 어떻게 쓰는지 모릅니다.
아직 시작한지 얼마 되지않는 초보라서..
자세히 설명을좀 부탁드립니다.

by 비니 [2010.04.02 16:19:19]
저두 초보입니다만.. 절대 처음에 툴 쓰지 마시기를 권장드려요.

툴을 안쓰고 사용하시는게 훨씬 도움이 많이 됩니다.

by proud [2010.04.02 16:20:10]
EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT');
라고 하면 scott 유저의 모든 Procedure/Trigger/Function등이 재컴파일 됩니다.

EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT', compile_all => false);
라고 하면 scott내에 invalid 상태만 재컴파일 하는 것으로 기억합니다.

by proud [2010.04.02 16:23:19]
아참, 개별적으로 선택해서 하시려면 user_objects 나 dba_objects에서 select 하면서

exec dbms_ddl.alter_compile ('PROCEDURE','SCOTT','TEST'); 의 형태에 맞춰서 spool 또는 select 후 붙여넣기의 방식으로 스크립트를 만드셔두 되겠네요.

by maxmania [2010.04.05 17:15:07]
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 입니다.
쿼리 결과 그대로 긁은 후 스크립트 만드셔서 실행하시면 됩니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입