프린트 하기

OS환경 : Oracle Linux 6.8 (64bit)


DB 환경 : Oracle Database 11.2.0.4


방법 : 오라클 케릭터셋 변경 방법

오라클 DB 재생성 후 이전 DB 데이터를 datapump로 가져오는 방법이 제일 좋음

신규로 설치한 DB라면 새로 생성하는게 좋음

신규 DB라도 아래 방법으로 (sys.props$ 변경) 할 경우 추후 업그레이드나 다른 작업시 문제가 생길 수 있음

*****중요*****(문서 ID 1573247.1)

아직도 NLS_CHARACTERSET 또는 NLS_NCHAR_CHARACTERSET를 변경하기 위해 props$ 를 직접 갱신하는 DBA들이 있다. 이 방법은 지원되지 않을 뿐더러 데이터베이스 커럽(corrupt)을 유발할 수 있다. 이것은 전체 데이터셋을 망가뜨리는 최고의 방법 중 하나다. 


만약에라도 그와 같은 방법을 시행했다면 가장 먼저 해야 할 일은 해당 데이터베이스를 전체 리스토어하는 일이다. 만약 백업이 없을 경우, 이 방식으로 망가진 데이터베이스의 데이터를 복구하는 경우에 대해 오라클 Support는 도움을 주기는 하겠지만, 데이터 복구에 대한 보장은 할 수 없다. 이 경우 데이터에 대해 full export를 받고 데이터베이스를 새로 생성해야 한다.


주의! props$를 직접 변경하지 말라.

*****중요*****(문서 ID 1573247.1)



아래는 위 경고에도 불구하고 변경하려 할 경우를 위해 작성함

오라클 한글 테이블 생성 방법

1. vi로 .bash_profile를 수정 후DB 캐릭터셋을 확인

1
$ vi .bash_profile


2. 아래 내용 추가

1
export LNS_LANG=KOREAN_KOREA.KO16MSWIN949;


3. profile 적용

1
$ . ./.bash_profile


4. sqlplus / as sysdba 접속

1
$ sqlplus / as sysdba

5. 아래 값 확인

1
2
3
4
5
6
7
8
9
10
SQL> select * from nls_database_parameters;
 
PARAMETER               VALUE
------------------------------ --------------------------------------------------------------------------------
NLS_LANGUAGE               AMERICAN
NLS_TERRITORY               AMERICA
NLS_CURRENCY               $
NLS_ISO_CURRENCY           AMERICA
NLS_NUMERIC_CHARACTERS           .,
NLS_CHARACTERSET           KO16MSWIN949


6. NLS_CHARACTERSET 이 KO16MSWIN949 가 아니라면 변경


*****중요*****(문서 ID 1573247.1)

아직도 NLS_CHARACTERSET 또는 NLS_NCHAR_CHARACTERSET를 변경하기 위해 props$ 를 직접 갱신하는 DBA들이 있다. 이 방법은 지원되지 않을 뿐더러 데이터베이스 커럽(corrupt)을 유발할 수 있다. 이것은 전체 데이터셋을 망가뜨리는 최고의 방법 중 하나다. 


만약에라도 그와 같은 방법을 시행했다면 가장 먼저 해야 할 일은 해당 데이터베이스를 전체 리스토어하는 일이다. 만약 백업이 없을 경우, 이 방식으로 망가진 데이터베이스의 데이터를 복구하는 경우에 대해 오라클 Support는 도움을 주기는 하겠지만, 데이터 복구에 대한 보장은 할 수 없다. 이 경우 데이터에 대해 full export를 받고 데이터베이스를 새로 생성해야 한다.


주의! props$를 직접 변경하지 말라.

*****중요*****(문서 ID 1573247.1)

7. 경고문을 보고도 괜찮다고 한다면 아래 업데이트 구문 실행

(* props$를 update 하는 이방법은 꼭 DB에 다른 한글 데이터가 없을 때 진행해야함

만약 데이터가 있는 상태로 한다면 기존 데이터가 깨지는 현상이 발생 할 수 있음)

1
2
3
SQL> update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
 
SQL> commit;


8. 재기동

1
2
3
SQL> shutdown immediate;
 
SQL> startup;


9. 확인

한글 테이블 생성

1
2
3
SQL> create table 한글 as select * from emp;
 
Table created.


한글 테이블 조회

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SQL> select * from 한글;
 
     EMPNO ENAME      JOB           MGR HIREDATE       SAL         COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK          7902 80/12/17       800 (null)          20
      7499 ALLEN      SALESMAN          7698 81/02/20      1600          300      30
      7521 WARD       SALESMAN          7698 81/02/22      1250          500      30
      7566 JONES      MANAGER          7839 81/04/02      2975 (null)          20
      7654 MARTIN     SALESMAN          7698 81/09/28      1250         1400      30
      7698 BLAKE      MANAGER          7839 81/05/01      2850 (null)          30
      7782 CLARK      MANAGER          7839 81/06/09      2450 (null)          10
      7788 SCOTT      ANALYST          7566 82/12/09      3000 (null)          20
      7839 KING       PRESIDENT (null)       81/11/17      5000 (null)          10
      7844 TURNER     SALESMAN          7698 81/09/08      1500 (null)          30
      7876 ADAMS      CLERK          7788 83/01/12      1100 (null)          20
      7900 JAMES      CLERK          7698 81/12/03       950 (null)          30
      7902 FORD       ANALYST          7566 81/12/03      3000 (null)          20
      7934 MILLER     CLERK          7782 82/01/23      1300 (null)          10
 
14 rows selected.


한글 사용가능해진다.



참조 : 

https://cafe.naver.com/prodba/50456

(문서 ID 1573247.1)