본문 바로가기

프로그램

[ORACLE]PRAGMA SERIALLY_REUSABLE

반응형

PRAGMA SERIALLY_REUSABLE


왠만하면 이 URL을 보시는게 좋습니다.

http://deviant86.tistory.com/471



package body 를 컴파일 하고 나면 

다른 세션이 물려 있는 애들이 해당 패키지 실행 시 오류가 발생함

(예로 들면 WAS가 미리 생성하여 POOL 에 넣어둔 세션에서 해당 PKG를 수행할 경우)


오류메시지 

ORA-04061 package body 패키지명의 기존상태가 무효화 되었습니다.

ORA-04065 실행불가 패키지명 이 변경 또는 삭제되었습니다.



이를 방지하기 위해 추가하는 구문이라고 함

PRAGMA SERIALLY_REUSABLE; 



package body와 spec 모두 추가해야함

package as 뒤에 선언해야함



오류가 발생하는 원인은 SPEC 부분에 전역변수를 선언하였을 경우라고 함

(테스트 해보니 전역변수를 삭제하니 동일현상을 발생하지 않음)


이게 의문인게 다른데서 위의 url에서는 메모리 영역의 차이로 보는데

구글링에서는 serially_reusable 선언 시 항상 재컴파일 하기 때문이라고도 하고 

애매하다.ㅠㅠ

(지식이 짧다.ㅠㅠ)


오라클 버젼 : 10g


참고URL

http://deviant86.tistory.com/471