마이그레이션

본 장에서는 메인프레임 환경에서 운용하던 IMS/DB의 데이터를 OpenFrame 환경의 OpenFrame HiDB에서 운용하기 위한 데이터 마이그레이션 작업의 절차와 각 절차에 따른 실제 작업 방법 및 주의사항에 대해 설명한다.

1. 마이그레이션 과정

다음의 그림은 OpenFrame 환경에서의 일반적인 HiDB 마이그레이션 작업 순서와 작업단계별로 필요한 툴 프로그램의 내용을 나타낸 것이다. 이 마이그레이션 과정에 대한 설명은 DBD, PSB 관련 메타 테이블이 미리 생성된 상태라고 가정한다.

figure 6 1
OpenFrame HiDB 마이그레이션 순서도

마이그레이션 각 단계에서 사용되는 툴은 다음과 같다.

설명

1

dbdgen

DBD 생성 툴

2

hdgensch

HiDB 스키마 파일 생성 툴

3

hdpcdf01

HiDB 표준 데이터 포맷으로 변환하는 사전 변환 툴

4

dsmigin

데이터셋 Import 마이그레이션 툴

5

hdload

HiDB 데이터베이스로 로드하는 툴

HiDB 마이그레이션의 각 단계에서 실행하는 자세한 작업 내용은 각 절을 참고한다.

2. DBD 생성

HiDB 마이그레이션의 첫 단계로 마이그레이션 대상 데이터베이스의 DBD(Database Description Block)를 생성한다. DBD 생성은 UNIX Command Line에서 dbdgen 툴 프로그램을 통해 실시한다.

여기에는 메인프레임에서 사용한 DBD 생성용 스크립트나 JCL이 필요하다. DBD를 생성하기 전에 OpenFrame 환경설정에 ims 서브젝트에서 지정한 디폴트 DBDLIB 또는 사용자가 정의한 DBDLIB의 PDS 데이터셋이 생성되어 있어야 한다.

다음은 UNIX Command Line에서 dbdgen 툴 프로그램을 사용하여 실행하는 예이다.

$ dbdgen TMAXDB01

위의 명령에서 "TMAXDB01"은 DBD 생성용 스크립트 파일의 이름이다. 명령이 정상적으로 종료하면 TMAXDB01 DBD 생성 스크립트에서 정의한 DBD 이름, 디폴트 DBDLIB 이름 또는 사용자가 정의한 DBDLIB의 이름을 이용하여 DBD 관련 메타 테이블에 저장된다.

  1. dbdgen 툴 프로그램의 자세한 사용법은 OpenFrame HiDB "툴 참조 안내서"를 참고한다.

  2. ims, hidb 서브젝트에 대한 자세한 내용은 OpenFrame HiDB "환경설정 안내서"를 참고한다.

3. 스키마 생성 및 Copybook 처리

메인프레임의 EBCDIC 코드로 구성된 데이터를 OpenFrame의 ASCII 코드의 데이터로 변환하려는 경우 일반적으로 OpenFrame에서 제공하는 dsmigin 툴 프로그램을 사용한다. 이때 데이터 레코드의 필드별 속성을 정의한 스키마 파일이 필요하다. 또한 이후에 각 세그먼트에 대해 테이블을 생성하기 위해 사용자가 사용하는 Copybook을 처리해 메타 데이터를 저장할 필요가 있다. 단, 인덱스 세그먼트와 가변 길이 세그먼트(variable length segment)의 경우에는 dbdcpybkgen 프로그램으로 생성한 Copybook을 사용해야 한다.

HiDB 스키마 생성 및 Copybook 처리 단계에서는 Copybook을 분석해 dsmigin 툴 프로그램에서 입력으로 사용할 HiDB 데이터를 위한 스키마 파일을 생성하고 필드 메타 데이터를 저장한다. 이때 hdgensch 툴 프로그램을 사용해야 한다.

hdgensch 툴 프로그램은 schema 명령을 통해 각각의 세그먼트별 필드구조를 정의한 1개 이상의 Copybook 파일을 읽어들여 내부적으로 cobgensch 또는 pligensch 툴 프로그램을 호출하고, 생성된 각각의 스키마 파일들을 세그먼트 이름별 조건문을 추가하여 하나의 스키마 파일 형태로 재구성한다. 또한 meta 명령을 통해 처리한 Copybook의 필드 정보를 HiDB의 메타 데이터 테이블에 저장한다. 이때 all 명령을 사용하면 스키마와 메타를 동시에 처리할 수 있다.

다음은 hdgensch 툴 프로그램의 실행 명령 예이다.

$ hdgensch all TMAXDB01 ./cpybook

위의 명령에서 "TMAXDB01"은 스키마의 대상이 되는 데이터베이스의 등록된 DBD 이름이며 "./cpybook"은 세그먼트의 필드 정보가 들어 있는 COBOL Copybook이 존재하는 디렉터리의 이름이다.

여기서 주의할 점은 디렉터리에 들어 있는 COBOL Copybook 파일의 이름이 반드시 DBD에서 지정한 세그먼트 이름과 동일해야 하며 파일의 확장자는 '.cpy’이어야 한다. PL/I Copybook인 경우에는 hdgensch 툴을 실행할 때 -p 옵션을 지정해야 하며 파일의 확장자는 '.inc’이어야 한다.

위의 명령이 정상적으로 종료하면 OpenFrame 환경설정에 ds 서브젝트, DATASET_DIRECTORY 섹션의 SCHEMA_DIR 키에서 지정한 디폴트 스키마 디렉터리에 DBD 이름과 '.conv’의 확장자로 구성된 스키마 파일이 생성된다.

  1. 툴 프로그램의 자세한 사용법은 OpenFrame HiDB "툴 참조 안내서"를 참고한다.

  2. ds 서브젝트에 대한 자세한 내용은 OpenFrame HiDB "환경설정 안내서"를 참고한다.

4. 세그먼트 테이블 생성

다음 과정으로는 DBD에서 정의된 세그먼트들에 대해 실제로 데이터를 저장할 세그먼트 테이블들을 생성해야 한다. 이때 hidbmgr 툴 프로그램을 사용한다. hidbmgr 툴은 HiDB의 메타 데이터 및 사용자 데이터를 관리하는 툴 프로그램으로서 segm create 명령을 통해 dbdgen에서 처리한 DBD에 대해 hdgensch에서 처리한 Copybook의 필드 형태로 세그먼트 테이블을 생성해주는 작업을 한다.

다음은 hidbmgr 툴 프로그램의 실행 명령 예이다.

$ hidbmgr segm create TMAXDB01

위의 명령에서 "TMAXDB01"은 앞서 dbdgen에서 처리한 DBD 이름이다.

hidbmgr 툴 프로그램의 자세한 사용법은 OpenFrame HiDB "툴 참조 안내서"를 참고한다.

5. DLI 라이브러리 생성

다음 과정으로는 hidbmgr 툴 프로그램의 dligen 명령을 사용해 데이터 로드 및 사용자 프로그램에서 사용될 DLI 라이브러리 파일을 생성한다. 데이터 로드 과정에선 DBD에 대해서만 필요하지만 이후 사용자 프로그램의 HiDB 명령이 동작하기 위해선 PSB에 대해서도 실행해야 한다. 라이브러리 파일은 OpenFrame 환경설정에 hidb 서브젝트, HIDB_DEFAULT 섹션의 HIDB_OBJECT_DIR에서 지정한 폴더에 생성된다.

다음은 hidbmgr 툴 프로그램의 실행 명령 예이다.

$ hidbmgr dbd dligen TMAXDB01

위의 명령에서 "TMAXDB01"은 앞서 dbdgen에서 처리한 DBD 이름이다.

hidbmgr 툴 프로그램의 자세한 사용법은 OpenFrame HiDB "툴 참조 안내서"를 참고한다.

6. 표준 데이터 포맷 변환

HiDB 데이터베이스로 데이터를 로드(Load)하기 위해서는 로드 대상 원본(Source) 데이터의 포맷이 반드시 사전에 HiDB에서 정한 형태로 구성되어 있어야 한다.

HiDB에서 정한 데이터 포맷을 HiDB 표준 데이터 포맷이라고 하며 그 형태는 다음의 그림과 같다.

figure 6 2
OpenFrame HiDB 표준 데이터 포맷

메인프레임의 데이터베이스 데이터가 위의 형식으로 구성되어 있다면 별도의 추가 작업없이 HiDB의 데이터베이스로 로드작업이 가능하다. 그러나 위의 형식으로 구성하기 위하여 메인프레임에서 별도의 추가 작업이 필요할 수 있다.

IBM 메인프레임의 IMS/DB에서는 데이터베이스의 데이터를 언로드(Unload)할 때 일반적으로 IMS/DB에서 제공하는 DFSURGU0 유틸리티를 사용하게 된다. HiDB에서는 DFSURGU0에서 생성한 언로드 데이터셋을 HiDB 표준 데이터 포맷으로 변환하는 hdpcdf01 툴 프로그램을 제공한다. 따라서 DFSURGU0 유틸리티로 데이터를 언로드한 경우라면 메인프레임에서는 별도의 추가 작업이 필요없으며 OpenFrame에서 hdpcdf01 툴 프로그램을 실행하여 표준 데이터 포맷으로 변환하면 된다.

다음은 hdpcdf01 툴 프로그램의 실행 명령 예이다.

$ hdpcdf01 if=tmaxdb01.dat of=tmax01db.hdb dbd=TMAX01DB

위 명령에서 "if"는 입력파일을 의미하며 IBM 메인프레임의 IMS/DB에서 DFSURGU0 유틸리티로 생성한 언로드 데이터셋의 파일명을 지정한다. "of"는 HiDB 표준 포맷으로 변환할 출력 파일명이고 "dbd"는 로드 대상 데이터베이스를 정의한 DBD 이름으로 지정한다.

  1. hdpcdf01 툴 프로그램의 자세한 사용법은 OpenFrame HiDB" 툴 참조 안내서"를 참고한다.

  2. DFSURGU0 유틸리티에 관한 자세한 내용은 OpenFrame HiDB" 유틸리티 참조 안내서"를 참고한다.

7. 코드 변환

메인프레임 환경에서의 데이터셋은 EBCDIC 코드를 사용하고 OpenFrame 환경에서는 ASCII 코드를 사용하고 있다. 따라서 메인프레임의 데이터셋을 UNIX 환경의 OpenFrame 데이터셋으로 마이그레이션할 때 코드 변환 작업이 필요하게 된다. OpenFrame에서는 코드 변환 작업을 위해 dsmigin 툴 프로그램을 제공한다.

dsmigin을 사용하기 위해서는 마이그레이션 대상 원본 파일과 해당 데이터셋의 필드별 속성 정보가 들어 있는 스키마 파일이 필요한데 HiDB 마이그레이션 작업을 하는 경우에는 HiDB 표준 포맷의 원본 파일과 hdgensch 툴 프로그램으로 생성한 스키마 파일을 준비해야 한다.

다음은 HiDB 마이그레이션 작업을 수행할 때 dsmigin 툴 프로그램의 실행 명령 예이다.

$ dsmigin MYDATA MYHIDBDATA -s MYSCHEMA.conv -C -f V

위의 명령에서 "MYDATA"는 HiDB 표준 포맷으로 구성된 코드 변환 전 입력 파일명이고, "MYHIDBDATA"는 코드 변환 후의 출력 파일명이다. "MYSCHEMA.conv"는 hdgensch 툴 프로그램으로 생성한 HiDB 스키마 파일명이다. [-C] 옵션은 카탈로그 등의 작업 없이 데이터 코드 변환만 실행하는 것을 의미하며, "-f V" 옵션은 입력 파일의 형식이 가변형임을 의미한다.

dsmigin 툴 프로그램에 관한 자세한 사용법은 OpenFrame Base "툴 참조 안내서"를 참고한다.

8. 데이터 로드

이번 작업은 코드 변환이 완료된 HiDB 표준 포맷의 데이터를 HiDB로 로드하는 단계이다. 이때 사용하는 툴 프로그램은 hdload이다. 처음으로 로드 작업을 하는 경우 해당 세그먼트 테이블이 비어 있는 상태인지 확인한다.

다음은 hdload 툴 프로그램의 실행 명령 예이다.

$ hdload TMAX01DB tmax01db.hdb

위의 명령에서 "TMAX01DB"는 로드 대상 데이터베이스의 DBD 이름이다. "tmax01db.hdb"는 코드 변환이 완료된 HiDB 표준 포맷의 데이터 파일 이름이다.

HiDB 데이터 로드 작업 중 <Ctrl>+C 키를 이용하여 강제로 중단한 경우 해당 데이터셋에 대한 Lock이 해제되지 않을 수 있다. 그런 상태에서 로드 작업을 재실행하는 경우 정상적인 동작을 하지 않게 되므로 반드시 해당 데이터셋에 대한 Lock 해제 처리를 해주어야 한다.

hdload 툴 프로그램에 관한 자세한 사용법은 OpenFrame HiDB "툴 참조 안내서"를 참고한다.