Skip to end of metadata
Go to start of metadata

개요

데이터베이스의 character set은  데이터베이스 생성 시점에 설정값에 의해서 정해지며 다시 변경할 수 없습니다.  따라서 변경을 하려면 데이터베이스를 삭제하고 새로 생성해야 합니다.

데이터베이스가 삭제되면 모든 객체와 데이터가 사라지므로 필요한 데이터는 백업후 데이터베이스를 재생성후  다시 import해야만 합니다.

필요한 데이터를 보존하면서  데이터베이스 character set 을 변경하는 상황을 가정하고 설명합니다.

 

대상버전

다국어 지원이 가능한 ALTIBASE HDB 5.3.1 이상 버전에  해당하는 설명입니다.

 

변경절차

변경절차 요약

변경절차는 전체적으로  요약하면 아래와  같은  단계로 진행합니다.

  • STEP 1 :  데이터베이스 export 툴을 사용하여  데이터베이스의  전체 스키마를 다운로드 받습니다.
  • STEP 2 :  데이터베이스의 데이터를 현재의 DB character set 으로  다운로드 받습니다.  예)  KSC5601
  • STEP 3 :  데이터베이스를 삭제하고  새로 데이터베이스를 변경하고자 하는 character set 설정으로 생성합니다.  예)  UTF8
  • STEP 4 :  STEP1에서 다운로드 받은 스키마 정보를 이용하여 새로 생성된 DB에 스키마를 구성합니다.
  • STEP 5 :  데이터 import 툴을 사용하여 STEP2 에서 다운로드 받은 데이터를  변경된 character set 을 사용하여  업로드 합니다.  예) UTF8

 

변경절차 상세

상세한 변경절차는 아래와 같은 단계로 진행합니다.  현재 DB의 character set 이  US7ASCII 인 DB의 character set 을  MS949로 변경하는 절차에 대한 설명입니다.

STEP 1.  데이터 베이스의 스키마를 다운로드 받습니다.

#1.1 현재 DB와 같은 client character set 를  환경변수로 설정합니다.

$ export ALTIBASE_NLS_USE=US7ASCII

 

#1.2 현재 DB의 character set 과 client character set 을 확인합니다.

iSQL> set vertical on;

iSQL> select * from v$nls_parameters;

SESSION_ID                                       : 1         

NLS_USE                                            : US7ASCII             <---  client character set                   

NLS_CHARACTERSET                      : ASCII                    <---  database character set

NLS_NCHAR_CHARACTERSET       : UTF16

NLS_COMP                                        : BINARY 

NLS_NCHAR_CONV_EXCP             : FALSE  

NLS_NCHAR_LITERAL_REPLACE : FALSE  

 

#1.3 aexport 툴을 사용하여  스키마를 다운로드 받습니다.

$ aexport

STEP 2.  데이터를 현재의 character set 으로 다운로드 받습니다.

#2.1 현재 DB와 같은 client character set 를  환경변수에 셋팅한다.

$ export ALTIBASE_NLS_USE=US7ASCII

 

#2.2  STEP1 에서  aexport 에 의해서 생성된  run_il_out.sh 에서  formout script와  data export script를 생성합니다.

iSQL> create table hangul_t (c1 char(500));

iSQL> insert into hangul_t values('US7ASII_한글테스트합니다');

iSQL> select * from hangul_t;

C1 : US7ASII_한글테스트합니다        

 

$ cat  run_il_out.sh | grep formout > formout.sh

$ cat run_il_out.sh | grep 'out -f'  >  dataout.sh

 

#2.3 formout script를 생성하고  form script 의 NLS_USE가 DB와 같은 character set 인지 확인합니다.

$ sh formout.sh

$ cat  *.fmt

table HANGUL_T

{

"C1" char (500);

}

DATA_NLS_USE=US7ASCII

 

#2.4   2.2 단계에서 만든 script를  실행하여 데이터를 파일로 다운로드하고 한글이 정상적으로 포함되어 있는지  한글 데이터를 확인합니다

$ sh  dataout.sh

$ cat   *.dat

"한글 데이터입니다"

 

STEP 3. 데이터베이스를 삭제하고  새로 데이터베이스를 변경하고자 하는 character set 설정으로 생성합니다.

#3.1  데이터베이스를 삭제합니다.

$ server stop

$  cd $ALTIBASE_HOME

$ rm dbs/*

$ rm logs/*

 

#3.2 새로운 character set 으로 DB를 생성합니다.

$ export ALTIBASE_NLS_USE=MS949

$ server create MS949 UTF16

 

#3.3  DB의 character set 을 확인합니다.

iSQL> set vertical on;

iSQL> select * from v$nls_parameters;

SESSION_ID                                       : 1         

NLS_USE                                            : MS949                                   

NLS_CHARACTERSET                      : MS949                                   

NLS_NCHAR_CHARACTERSET       : UTF16                                   

NLS_COMP                                        : BINARY 

NLS_NCHAR_CONV_EXCP              : FALSE  

NLS_NCHAR_LITERAL_REPLACE   : FALSE

 

STEP 4 :  STEP1에서 다운로드 받은 스키마 정보를 이용하여 새로 생성된 DB에 스키마를 구성합니다.

#4.1   aexport로 생성된 스키마 생성 shell script를 실행하고  스키마가  정상적으로 생성되었는지 확인합니다.

$ sh run_is.sh

iSQL> select * from tab;

 

STEP 5 :  데이터 import 툴을 사용하여 STEP2 에서 다운로드 받은 데이터를  변경된 character set 을 사용하여  업로드합니다.

#5.1  STEP 2.2 에서 생성된 form 파일안의  NLS_USE 설정을   새로운  character set으로 변경합니다.

$ export ALTIBASE_NLS_USE=MS949

$ cat *.fmt

table HANGUL_T

{

"C1" char (500);

}

DATA_NLS_USE=MS949

#5.2  aexport 에 의해서 생성된 데이터를 import 해주는 shell script를 실행해서  데이터를 테이블에 업로드합니다.

$ sh run_il_in.sh

 

#5.3  데이터가 정상적으로  업로드 되었는지 한글이 들어가 있는  테이블을 조회합니다.

iSQL> select * from v$nls_parameters;

SESSION_ID                                      : 1         

NLS_USE                                           : MS949                                   

NLS_CHARACTERSET                    : MS949                                  

NLS_NCHAR_CHARACTERSET     : UTF16                                   

NLS_COMP                                      : BINARY 

NLS_NCHAR_CONV_EXCP            : FALSE  

NLS_NCHAR_LITERAL_REPLACE : FALSE

 

iSQL> select * from hangul_t;

C1 : US7ASII_한글테스트합니다 .

 

 

  • No labels