배경 : 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 |
|---|