ORA-04068: existing state of packages has been discarded
Oracle의미
실행 중인 세션이 패키지의 상태를 사용하는 동안 패키지가 재컴파일되어 그 상태가 무효화되었다. 세션이 보유한 패키지 인스턴스가 더 이상 유효하지 않다.
원인
패키지 body 또는 specification이 이에 종속된 세션이 활성 상태인 동안 ALTER/CREATE OR REPLACE로 재컴파일됨. 보통 운영 중인 시스템에 애플리케이션을 배포할 때 발생한다. ORA-04061/04065와 함께 나타난다.
해결 방법
호출을 다시 실행(재시도)하면 대개 해결된다. 두 번째 시도에서 패키지가 새 형태로 로드된다. 애플리케이션에서 ORA-04068을 잡아 자동으로 재시도한다. 패키지 변경은 사용자 활동이 적은 유지보수 시간대에 적용한다. stateless 패키지 설계는 이 문제를 줄인다.
같은 데이터베이스의 다른 항목
- ORA-00979not a GROUP BY expression
- ORA-00918column ambiguously defined
- ORA-06550line/column PLS-... PL/SQL compilation error
- ORA-01427single-row subquery returns more than one row
- ORA-12899value too large for column
- ORA-30926unable to get a stable set of rows in the source tables
- ORA-08103object no longer exists