패키지의 기존 상태가 삭제되었습니다.
그래서 저는 PLSQL 절차를 정상적으로 실행하고 있으며 오류 없이 컴파일하고 있습니다.절차를 한 번 변경했는데도 여전히 잘 컴파일되지만 이제 실행하면 다음 오류가 발생합니다.
ERROR at line 1:
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "SCHEMA.XP_COVER_PAGEP" has been invalidated
ORA-04065: not executed, altered or dropped package body "SCHEMA.XP_COVER_PAGEP"
ORA-06508: PL/SQL: could not find program unit being called: "SCHEMA.XP_COVER_PAGEP"
ORA-06512: at "SCHEMA.XP_ST_002180", line 141
ORA-06512: at line 1
이게 뭔지 짐작 가는 거라도?제가 변경한 내용이 너무 미미해서 이런 오류가 발생했을 수도 있다고 생각합니다.당신의 도움에 미리 감사드립니다!
세션이 패키지를 사용할 때 해당 세션은 패키지의 일부 상태를 유지합니다.다음에 같은 세션에서 패키지를 참조할 때 해당 패키지를 다시 컴파일하면 해당 오류가 발생합니다.
이 문제를 방지하려면 패키지를 사용했을 가능성이 있는 각 세션의 연결을 끊거나 DBMS_SESSION.RESET_PACKAGE를 수행하여 패키지 상태를 재설정하도록 해야 합니다.
패키지 사양을 다시 컴파일하면 모든 종속 개체가 무효화됩니다.종속 개체는 다시 컴파일된 패키지 사양의 선언을 참조하는 보기, 패키지 사양, 패키지 본문, 함수 또는 프로시저입니다.
또한 darreljnz가 지적한 바와 같이, 세션은 일반적으로 액세스한 패키지의 상태에 대한 참조를 유지하며, 이로 인해ORA-04068: existing state of packages has been discarded
다음 번에 세션이 패키지를 참조하려고 할 때.
이러한 후자의 동작은 매우 번거로우며, 새 버전의 패키지를 설치한 후 코드를 작성하여 작업을 재시도하거나 모든 활성 세션을 닫아야 합니다(애플리케이션/서비스를 효과적으로 다시 시작).결론:핫픽스를 설치하는 것이 더 어려워집니다.
사용하다pragma serially_reusable
패키지 및 패키지 본문에 포함됩니다.
언급URL : https://stackoverflow.com/questions/7920396/existing-state-of-packages-has-been-discarded
'sourcecode' 카테고리의 다른 글
스프링 프로파일, 다양한 Log4j2 구성 (0) | 2023.06.22 |
---|---|
.NET을 사용하여 Oracle에 대량 삽입 (0) | 2023.06.22 |
VBA: 문자열 yyyy-mm-dd로 날짜를 가져오는 방법 (0) | 2023.06.22 |
Git: 각 repo에 대해 local user.name 및 user.email을 다르게 설정합니다. (0) | 2023.06.22 |
풀 아우터 조인트를 사용하기에 좋은 상황은 언제입니까? (0) | 2023.06.22 |