반응형
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