본문으로 바로가기

1. 문자열 깨짐 발견

 

   Table 정보를 import 해야되는 상황이었습니다. 오류없이 import를 모두 마쳤는데, 한자가 아래처럼 깨지는 형상이 발생하게 되었죠.

   구글링을 해본 결과 DB Character Set 을 맞춰 준 후 import를 해야 된다는 것을 알게되었습니다.

 

   좌 - 원본DB / 우 - 대상DB

  

 

 


2. DB Character Set 확인

  

   SQL> SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';

 

   좌 - 원본DB / 우 - 대상DB

  

   ※ 원본DB는 AL32UTF8 / 대상DB는 KO16MSWIN949 로 서로 다름을 확인 할 수 있습니다.

 

 

 

3. DB Character Set 변경

 

아래 텍스트 박스 붉은 글씨의 순서대로 명령을 수행합니다. SYSDBA 권한을 이용하여 작업 해야 합니다.

 

 Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

 

C:\>sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on 월 2월 20 14:18:36 2017

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

SQL> conn system/패스워드 as sysdba
  연결되었습니다.

 

SQL> UPDATE sys.props$ SET value$='AL32UTF8' WHERE name='NLS_CHARACTERSET';

  1 행이 갱신되었습니다.

 

SQL> UPDATE sys.props$ SET value$='AL16UTF16' WHERE name='NLS_NCHAR_CHARACTERSET';

  1 행이 갱신되었습니다.

 

SQL> COMMIT;

  커밋이 완료되었습니다.

 

SQL> Shutdown immediate;
  데이터베이스가 닫혔습니다.
  데이터베이스가 마운트 해제되었습니다.
  ORACLE 인스턴스가 종료되었습니다.

 

SQL> Startup mount;
  ORACLE 인스턴스가 시작되었습니다.

  Total System Global Area 6814535680 bytes
  Fixed Size                  2188688 bytes
  Variable Size            3539995248 bytes
  Database Buffers         3254779904 bytes
  Redo Buffers               17571840 bytes
  데이터베이스가 마운트되었습니다.

 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

  시스템이 변경되었습니다.

 

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

  시스템이 변경되었습니다.

 

SQL> ALTER DATABASE OPEN;

  데이타베이스가 변경되었습니다.

 

SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

  데이타베이스가 변경되었습니다.

 

SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

  데이타베이스가 변경되었습니다.

 

SQL> SHUTDOWN IMMEDIATE;
  데이터베이스가 닫혔습니다.
  데이터베이스가 마운트 해제되었습니다.
  ORACLE 인스턴스가 종료되었습니다.

 

SQL> startup
  ORACLE 인스턴스가 시작되었습니다.

  Total System Global Area 6814535680 bytes
  Fixed Size                  2188688 bytes
  Variable Size            3539995248 bytes
  Database Buffers         3254779904 bytes
  Redo Buffers               17571840 bytes
  데이터베이스가 마운트되었습니다.
  데이터베이스가 열렸습니다.

 

 

4. DB Character Set 확인

 

   SQL> SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';

 

  

   ※ KO16MSWIN949 -> AL32UTF8  로 잘 변경되었습니다.

 

 

5. Table 확인

 

   인코딩을 변경하였다고 기존에 깨진 값이 정상으로 돌아오지 않았습니다.

   테이블을 DROP 한 뒤 다시 import 한 뒤 정상 출력을 확인 한 화면입니다.

 

  

 

 

감사합니다.

 

궁금한 것, 잘안되는 것은 문의 남겨주시면 성실히 답변해 드리겠습니다.

'DataBase > Oracle' 카테고리의 다른 글

[문제해결] ora-12638 : 신용검색에 실패했습니다  (0) 2017.03.03
오라클 계정 생성 및 삭제  (2) 2017.02.21
오라클 11gR2 설치  (0) 2017.02.20