본문 바로가기

개발참고

ORA-04068: 패키지의 기존 상태가 버려졌습니다

언제부턴가 관제에 위와 같은 메시지의 오류가 나타나는 것이었다.

 

확인해 보니, 해당 패키지에서 글로벌 변수를 사용 시에 각 하위 프로시저에서 호출 당할 시,

1회에 한 해 오류가 발생하는 것이다.

 

패키지에서 글로벌 변수를 글로별 변수 답게 쓸 때에야 문제가 없다라지만 그런 게 아닌 거라면,

괜스리 위와 같은 오류를 유발하니, 차라리 글로벌 변수를 모두 프로시저 내의 지역변수로 치환하는 작업을 하고, 기존의 글로벌 변수는 모두 지워 버리는 형태로 문제를 해결했다.

 

결과는 꽤 성공적이었다. 혹자는 11g2 미만에서만 먹힌다는 데, 11g2에서도 잘 먹힌다.

 

하위 프로시저에 지역변수를 넣어서 할 경우에는 해당 프로시저를 별도로 만들어서 컴파일해 가면서 누락된 변수를 찾는 방법이 가장 쉽게 해결하는 방법이다.