IBM mainframe 군 (OS/390,MVS,VM,OS/400)에서 생산된 fixed length data를  UNIX상으로 load시에는 사용하는 code의 차이로 인한 한글문제가 발생 할수 있다.

 

– EBCDIC(extended binary coded decimal interchange code)과  ASCII(The american standard code for information interchange)간의  double byte character code 체계의 차이로 인한 문제 발생

 

. EBCDIC은 8 bit 체계의 code로 double byte character의 표현은  SO(hex 0E, shift out), SI(hex 0F, shift in)를 이용하여 표현

. ASCII는 7 bit 체계의 code로 0 bit의 on/off로 표현한다. 0 bit가 on 이 되어 있으면 code page및 code값으로 double byte chracter를 표현 그러므로 ftp를 이용하여 code convertion시에는 SO/SI가 null로 변환되어  data의 길이가 달라진다.

 

– TCP/IP ftp utility중 한글을 지원하지 않는 경우가 발생(KNET/TCP)

위와 같은 이유로 EBCDIC 체계의 DATA를 ASCII체계의 시스템에 LOAD시에는 다음과 같이 하는 것이 좋다.

 

방법)

1) IBM MAINFRAME의 RECORD LENGTH를 확인한다.

2) BINARY MODE로 FTP 한다.

3) SQLLOADER를 아래와 같은 방법으로 LOAD한다.

 

  sqlldr userid=xxx/xxx control=kr.ctl data=./xxxx.dat direct=true



  --- kr.ctl

  unrecoverable

  load data

  characterset KO16DBCS

  infile '/data2/d4/kid01' "FIX 550"

  append

  into table krtbl

    ( col1 position(1:10)  char(10))

 

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다