본문 바로가기

개발/15.Oracle

[Oracle] ORA-06552, ORA-06553 오류 해결

반응형

배경 : docker에 설치한 오라클 테이블 을 dbeaver 툴에서 열려고하니 이 오류가 남

내용 

 

SQL Error [6552] [65000]: ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다
ORA-06552: PL/SQL: Compilation unit analysis terminated

 

오류남

 

해당 오류(ORA-06552, ORA-06553)는 DBeaver 툴 자체의 문제가 아니라, Docker에 설치된 오라클 데이터베이스 내부의 캐릭터셋(Character Set) 설정이 꼬였거나 충돌할 때 발생하는 서버 측 에러입니다.

주로 컨테이너 환경에서 문자셋을 강제로 변경하려 했거나, 데이터 딕셔너리에 저장된 문자셋 정보가 시스템과 불일치할 때 발생합니다.

해결하려면 Docker 컨테이너 내부에 직접 접속하여 sysdba 권한으로 캐릭터셋을 강제 초기화(동기화)해 주어야 합니다. 아래 단계를 순서대로 진행해 보세요.

해결 방법: 캐릭터셋 강제 초기화 및 재설정
1. Docker 컨테이너 내부 터미널 접속
먼저 오라클이 실행 중인 Docker 컨테이너로 진입합니다. (아래의 <컨테이너_이름> 부분에 실제 실행 중인 오라클 컨테이너의 이름이나 ID를 넣으세요.)

 

docker exec -it <컨테이너_이름> bash

 

2. 관리자 권한으로 SQL*Plus 접속
컨테이너 내부로 들어왔다면, 최고 관리자 권한으로 DB에 접속합니다.

 

sqlplus / as sysdba

 

3. 캐릭터셋 초기화 SQL 스크립트 실행

SQL 프롬프트(SQL>)가 나타나면, 아래의 명령어들을 복사해서 그대로 순서대로 실행하세요.

이 과정은 DB를 내렸다가 특수 모드로 올린 뒤, 캐릭터셋을 가장 범용적인 UTF-8로 강제 덮어씌우는 작업입니다.

 

-- DB를 종료하고 마운트 모드로 다시 시작

SHUTDOWN IMMEDIATE; STARTUP MOUNT;

 

-- 제한된 세션 활성화 및 불필요한 프로세스 중지

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

 

-- DB 오픈

ALTER DATABASE OPEN;

 

-- 캐릭터셋을 강제로 AL32UTF8 / AL16UTF16 으로 동기화 (오타 주의)

ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

 

-- 적용을 위해 DB 재시작

SHUTDOWN IMMEDIATE;

STARTUP;

 

4. DBeaver 재접속 확인

데이터베이스가 정상적으로 STARTUP 되었다면, exit를 입력해 SQL*Plus와 컨테이너에서 빠져나옵니다.

이후 DBeaver에서 연결을 해제했다가 다시 접속한 뒤 Table 탭을 클릭해 보세요.

오류 없이 정상적으로 테이블 목록이 조회될 것입니다.

반응형

'개발 > 15.Oracle' 카테고리의 다른 글

[ORACLE] 테이블 정보 변경시 시노님도 변경하라  (0) 2026.09.02