😰오라클을 실행한후 값을 insert 하였는데 한글이 깨지는 현상이 발생하였습니다. 이에 여러 글을 찾아본 결과 오라클 인코딩 UTF로 변경 - sysinfo에서 그 해답을 찾을 수 있었습니다.
select * from nls_database_parameters where parameter like '%CHARACTERSET%'
🫡한글을 지원하는 주요 Oracle 인코딩에는 다음과 같은 것들이 있습니다:
AL32UTF8: 이는 Oracle에서 권장하는 유니코드 UTF-8 인코딩의 구현입니다. AL32UTF8은 국제화된 데이터베이스 환경에 권장되며, 모든 유니코드 문자를 포함하므로 한글을 포함한 전 세계의 모든 언어를 지원합니다.
KO16KSC5601: 이는 한국 표준 코드(KSC 5601)에 기반한 인코딩으로, 한글을 포함한 한국어 문자를 지원합니다.
KO16MSWIN949: 이는 Microsoft의 CP949 코드 페이지를 기반으로 하며, 한글 Windows 환경과의 호환성을 위해 설계되었습니다. 이 인코딩은 KSC 5601을 확장하여 더 많은 한글 문자를 지원합니다.
KO16UHC: 이는 Unified Hangul Code를 의미하며, KSC 5601에 기반한 다른 한글 인코딩 방식입니다. 이는 주로 유닉스 기반 시스템에서 사용됩니다.
UTF8: 오라클의 이전 UTF-8 인코딩으로, 유니코드 3.0 표준 이하의 문자만을 지원합니다. 이는 오라클 데이터베이스 9i 이전 버전에서 사용되었고, 유니코드의 모든 문자를 지원하지는 않습니다.
AL16UTF16: 유니코드의 UTF-16 인코딩을 의미하며, 한글을 포함한 모든 언어를 지원합니다.
🤔데이터베이스 관리자(DBA)만이 수행할 수 있는 작업이므로 먼저 sysdba로 접근해줍니다.
sqlplus / as sysdba
이후 아래 명령어들을 차례대로 입력하시면 됩니다.
UPDATE sys.props$ SET value$='AL32UTF8' WHERE name='NLS_CHARACTERSET';
시스템 테이블 sys.props$에서 NLS_CHARACTERSET 속성의 값을 AL32UTF8로 변경합니다. 이는 데이터베이스의 기본 문자 집합을 UTF-8로 설정하려는 의도입니다.
UPDATE sys.props$ SET value$='AL16UTF16' WHERE name='NLS_NCHAR_CHARACTERSET';
같은 시스템 테이블에서 NLS_NCHAR_CHARACTERSET 속성의 값을 AL16UTF16로 변경합니다. 이는 데이터베이스의 국가 언어 문자 집합을 UTF-16으로 설정하려는 의도입니다.
COMMIT;
이전 두 업데이트 작업을 트랜잭션 로그에 영구적으로 기록합니다.
Shutdown immediate;
데이터베이스를 즉시 종료합니다. 이 명령은 처리 중인 모든 트랜잭션을 롤백하고 사용자 세션을 닫은 다음 데이터베이스 인스턴스를 종료합니다.
Startup mount;
데이터베이스 인스턴스를 시작하고 데이터베이스를 마운트 상태로 둡니다. 이 상태에서는 데이터베이스가 열리지 않아 사용자가 데이터에 접근할 수 없습니다.
ALTER SYSTEM ENABLE RESTRICTED SESSION;
제한된 세션 모드를 활성화하여 DBA만이 데이터베이스에 접근할 수 있도록 설정합니다.
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
백그라운드 작업을 처리하는 JOB_QUEUE_PROCESSES 매개변수를 0으로 설정하여 모든 데이터베이스 작업을 중지합니다.
ALTER DATABASE OPEN;
데이터베이스를 열어 사용자가 접근할 수 있게 합니다
ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
데이터베이스의 문자 집합을 AL32UTF8로 변경합니다. INTERNAL_USE 키워드는 일반적으로 Oracle 지원을 통해서만 사용되며, 데이터베이스 내부 메타데이터에만 영향을 줍니다.
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
데이터베이스의 국가 언어 문자 집합을 AL16UTF16로 변경합니다.
SHUTDOWN IMMEDIATE;
변경 사항을 적용하기 위해 데이터베이스를 다시 즉시 종료합니다.
STARTUP
데이터베이스 인스턴스를 시작하고 데이터베이스를 정상적으로 오픈합니다.
🥳위 명령어들을 수행하고 나서 진행하시면 한글도 잘 나오는 것을 확인 할 수 있습니다.
위 방법 외에도 직접 파일에 접근해서 하는 방법도 있으니 더 편하신 방법으로 하시면 될 것 같습니다.