[ORACLE] ORA-29532 오류

반응형

ORA-29532 오류

ORA-29532 오류

ORA-29532 오류

1️⃣ 오류 개요

Oracle 데이터베이스 업그레이드 이후 AP 테스트 중 다음과 같은 오류가 발생할 수 있습니다:

ORA-29532: 자바 호출이 잡혀지지 않은 자바 예외로 인해 종료되었습니다
java.security.AccessControlException:
the Permission ("java.lang.RuntimePermission" "accessClassInPackage.sun.misc")
has not been granted to WS_COM

이 오류는 Oracle 내부 JavaVM(Java Virtual Machine)의 보안 정책에 의해 특정 스키마(WS_COM)의 Java 코드가 sun.misc 패키지 접근 권한을 부여받지 못한 상태에서 호출을 시도할 때 발생하는 일반오류형 오류입니다.

핵심 요약:
- Oracle 업그레이드 이후 Java 권한 초기화 또는 재설정 과정 누락
- WS_COM 스키마가 내부 패키지(sun.misc)에 접근할 권한 없음
- Java 보안 정책(DBMS_JAVA 권한) 충돌로 AccessControlException 발생

2️⃣ 1단계 — 원인 분석

ORA-29532는 단순 SQL 오류가 아닌 Oracle JVM 권한 문제입니다. 업그레이드 후 JAVAVM 구성 요소가 재배포되거나 보안정책이 초기화되면서 기존 스키마에 부여되어 있던 Java 권한이 사라지는 경우가 있습니다.

발생 원인 정리:
- JAVAVM 재설치/업그레이드로 인한 권한 초기화
- SYS 패키지(SYS:java.lang.RuntimePermission)에 대한 권한 미부여
- AP에서 사용하는 Java 라이브러리가 sun.misc 패키지를 호출

3️⃣ 2단계 — 영향 범위 점검

해당 오류는 다음 기능에 영향을 줄 수 있습니다.

  • Java 기반 AP 모듈 또는 Java Stored Procedure
  • sun.misc 관련 내부 클래스 접근 기능
  • 업그레이드 후 JVM 권한이 필요한 업무 로직
점검 포인트:
- DBA_JAVA_POLICY에서 WS_COM 권한 조회
- JAVAVM 구성 요소 invalid 여부 확인
- 업그레이드 이전에 사용하던 Java 권한 목록 비교

4️⃣ 3단계 — 임시 조치 및 검증

AP 오류를 즉시 해결하려면 필요한 권한을 WS_COM 스키마에 먼저 부여해야 합니다. Oracle은 내부 Java 보안 정책을 DBMS_JAVA 패키지로 관리합니다.

begin
  dbms_java.grant_permission(
      'WS_COM',
      'SYS:java.lang.RuntimePermission',
      'accessClassInPackage.sun.misc',
      ''
  );
end;
/

위 코드는 WS_COM 사용자에게 sun.misc 패키지 접근 권한을 부여하는 공식적인 방식입니다.

실행 전 주의사항:
- SYSDBA 권한 필요
- 잘못된 패키지 접근 권한 남발은 보안 위험
- 권한 부여 후 해당 AP 모듈 재테스트 필수

5️⃣ 4단계 — 근본 원인 제거 및 재발 방지

근본적으로는 업그레이드 후 Java 권한이 다시 초기화되는 상황을 대비해야 합니다.

  • 업그레이드 전/후 JVM 권한 백업 및 비교
  • DBMS_JAVA 관련 권한 자동 스크립트 준비
  • AP 모듈이 사용하는 Java 패키지 목록 확인
  • 불필요한 내부 패키지 의존성 제거(가능하면 sun.misc 제거)
추가 점검:
- JAVAVM invalid object 유무
- DBA_REGISTRY_COMPONENTS → JAVAVM 상태 확인
- 최근 적용한 패치 로그(OPatch) 검토

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

1단계: 원인 파악
2단계: 영향 범위 확인
3단계: 임시 조치 적용
4단계: 근본 원인 제거

오류 분석 흐름도

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