DBAtlas · 데이터베이스 운영 아틀라스

ORA-04061: existing state of package/procedure has been invalidated (패키지/프로시저의 기존 상태가 무효화됨)

Oracle

의미

호출된 PL/SQL 객체(패키지, 프로시저, 함수)가 의존하는 객체가 변경되어 기존 상태가 무효화되었다. ORA-04068과 함께 나타나는 상태 손실 조건의 변형이며, 세션이 보유한 패키지 상태가 더 이상 유효하지 않다.

원인

세션이 패키지를 사용하는 동안 해당 패키지나 의존 객체에 DDL이 적용되었다(테이블 구조 변경, 재컴파일, 권한 변경). 그 결과 세션의 기존 패키지 상태가 무효화되었다. 애플리케이션 실행 중 스키마 변경이 이루어지는, 배포가 잦은 환경에서 나타난다.

해결 방법

같은 호출은 보통 두 번째 시도에서 성공한다(상태가 초기화되었으므로). 애플리케이션에서 이 오류를 잡아 안전하게 재시도한다. 스키마 변경은 애플리케이션 트래픽이 적을 때나 유지보수 시간에 수행한다. 무효 객체를 일괄 컴파일한다: EXEC DBMS_UTILITY.COMPILE_SCHEMA('APP_SCHEMA'); 패키지 상태(전역 변수)를 최소화하는 설계가 이 영향을 줄인다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목