[ORACLE]ORA-04061, ORA-04065, ORA-06508, ORA-04068

반응형

ORA-04061 오류 분석 및 자주 발생하는 연관 에러코드

ORA-04061 오류 분석 및 자주 발생하는 연관 에러코드

1️⃣ 오류 개요

ORA-04061: existing state of package has been invalidated 오류는 이미 세션에 로드되어 있던 패키지 또는 패키지 본문이 변경되거나 재컴파일되면서, 세션이 사용하던 버전이 더 이상 유효하지 않아 충돌이 발생할 때 나타나는 문제입니다.

주요 발생 환경:

  • 패키지를 재컴파일한 직후
  • 의존 객체가 INVALID 상태로 변경된 후 호출할 때
  • RAC 환경에서 노드 간 패키지 버전 차이
  • 장시간 유지된 세션이 오래된 패키지 버전을 사용 중일 때

2️⃣ 실제 오류 예시


ORA-04061: existing state of package has been invalidated
ORA-04065: not executed, altered or dropped
ORA-06508: PL/SQL: could not find program unit
ORA-04068: existing state of packages has been discarded
ORA-06512: at line XX
    

3️⃣ ORA-04061과 함께 자주 발생하는 연관 오류

✔ ORA-04065 — not executed, altered or dropped

ORA-04061 이후 가장 많이 동반되는 오류로, 패키지가 변경되었거나 실행할 수 없는 상태일 때 발생합니다.
✔ ORA-06508 — PL/SQL: could not find program unit

패키지가 INVALID이거나 메모리에서 내려갔지만 다시 LOAD되지 못한 상태일 때 발생합니다.
ORA-04061 → ORA-04065 → ORA-06508 순서로 연달아 발생하는 경우가 아주 흔합니다.
✔ ORA-04068 — existing state of packages has been discarded

세션이 보유하던 패키지 STATE가 버려졌음을 의미합니다.
ORA-04061과 강한 연관성을 가진 오류입니다.
✔ ORA-00604 — error occurred at recursive SQL level

내부 재컴파일 또는 Oracle 내부 재귀 SQL 수행 중 오류가 발생했을 때 상위 스택에서 함께 출력됩니다.
✔ ORA-06512 — at line …

오류가 발생한 PL/SQL 라인의 위치를 알려주는 정보이며, 원인 오류는 대부분 ORA-04061 또는 ORA-06508입니다.

4️⃣ 발생 원인 분석

ORA-04061은 단일 원인보다 아래와 같은 “상태 불일치(STATE MISMATCH)” 상황이 복합적으로 발생할 때 나타납니다:

  • 패키지 헤더/바디가 재컴파일됨
  • 기존 세션이 패키지의 이전 버전을 계속 사용
  • RAC 간 캐시된 패키지 버전 불일치
  • 패키지 STATE를 포함한 세션 지속 환경(Persistent State)이 꼬인 경우

5️⃣ 조치 방법

  • 패키지 및 의존 객체 전체 재컴파일
  • 장시간 오픈된 세션 종료 또는 재연결
  • RAC 환경일 경우 모든 노드에서 패키지 상태 정합성 확인
  • DBMS_UTILITY.compile_schema 실행으로 전체 스키마 재컴파일 수행
  • 패키지 내 글로벌 변수·STATE 영향도 점검

6️⃣ 사후관리 및 예방

  • 운영 배포 시 패키지 재컴파일 직후 애플리케이션 세션 재연결 유도
  • RAC 환경에서는 각 노드별 캐시 일관성 점검
  • 패키지 STATE를 많이 사용하는 구조라면 Stateless 방식 개선 고려
  • INVALID 객체 자동 모니터링 스크립트 활용

7️⃣ 기본 오류 대응 4단계

1) 외부 노출 여부 확인
2) 관련 역할/서비스 비활성화
3) 포트·연결 차단
4) 로그 모니터링 및 패턴 분석

8️⃣ WSUS 순서도

✔ 외부 노출 확인 → 역할 비활성화 → 포트 차단 → 로그 모니터링
반응형
LIST