OpenFrame NDB 시스템 툴
본 장에서는 OpenFrame NDB 시스템에서 사용하는 툴 프로그램 사용법에 대해 기술한다.
1. 개요
OpenFrame NDB 툴 프로그램은 배치 JOB에서 실행되는 NDB 유틸리티의 기능을 동일하게 제공하여 시스템 운영자의 작업에 편의성을 높여준다.
NDB 툴 프로그램에서 제공하는 주요 기능은 다음과 같다.
-
NDB 생성, 삭제 및 변경 등의 NDB 데이터베이스 운영에 필요한 기능
-
NDB 데이터베이스의 데이터 마이그레이션에 관련된 기능
OpenFrame NDB에서 지원하는 툴은 다음과 같이 크게 2가지로 분류할 수 있다.
-
데이터베이스 운영 툴
툴 설명 데이터베이스, 인덱스 테이블 또는 확장 인덱스 테이블을 생성할 때 필요한 파일 내용을 로드한다.
데이터베이스의 레코드를 변경 및 조회한다.
NDB를 처음 설치할 때 필요한 메타 데이터 테이블과 Restrict 테이블을 생성, 초기화 및 삭제한다.
데이터베이스 또는 인덱스 생성, 초기화 및 삭제한다.
-
데이터베이스 마이그레이션 툴
툴 설명 데이터 파일 저장에 이용하기 위한 control statements를 생성한다.
데이터 파일 변환을 위한 conversion scheme를 생성한다.
데이터 파일을 생성한다.
데이터 파일을 NDB에 저장한다.
서브스키마 Copybook을 생성한다.
ndbloader 전용 데이터 파일을 생성하기 위한 코볼을 생성한다.
ndbloader 전용 데이터 파일을 읽어 NDB에 저장한다.
2. 데이터베이스 운영 툴
본 절에서는 OpenFrame NDB 툴 프로그램 중 데이터베이스 운영에 관련된 툴의 사용법을 설명한다.
2.1. ndbadlgen
ndbmgr를 실행하기 전에 해당 스키마 파일(데이터베이스, 인덱스 테이블 또는 확장 인덱스 테이블을 생성할 때 필요한 파일 내용)을 사전에 등록하는 툴이다.
이 프로그램으로 기존 존재하는 스키마를 삭제하고 다시 등록할 경우 기존의 레코드 데이터는 더이상 사용할 수 없게 된다. |
사용법
ndbadlgen 프로그램을 실행하는 방법은 다음과 같다.
ndbadlgen {COMMAND} [options] <schema-name | adl-file-path | adl-type>
-
입력 항목
항목 설명 {COMMAND}
-
delete : NDB ADL 스키마 파일을 삭제한다.
-
load : store된 NDB ADL 정보를 로드하여 보여준다.
-
parse : NDB ADL을 파싱 처리한다.
-
store : NDB ADL을 파싱하여 해당 스키마 파일을 등록한다.
schema-name
인덱스가 정의된 DB 스키마 또는 XIF 스키마의 이름을 기술한다.
adl-file-path
ADL 파일의 경로와 파일명 전체를 기술한다.
adl-type
ADL type DSCH, XIFS, SUBS, ALL 등을 기술한다.
-
-
[options]
옵션 설명 -h
ndbadlgen의 사용법 및 OPTION, COMMAND에 대한 설명을 간략하게 조회한다.
-a
ADL 이름을 지정하여, delete, load를 수행한다.
-s
Subschema ADL 파일을 load한다.
-p
ADL 파일 위치를 설정하여, parse, store를 수행한다.
-t
DSCH, XIFS, SUBS, ALL의 ADL type을 지정하여 해당 타입의 ADL 이름을 조회한다.
사용예제
다음은 SCHTEST.adl 파일을 parse하는 예이다.
$ ndbadlgen parse -p SCHTEST.adl
[ADL]
|[SCHEMA]
| |[SCHEMA]
| | |[SCHEMA]
| | | |[SCHEMA]
| | | | |[NAME]
| | | | | |[SCHTEST]
| | | | |[TYPE]
| | | | | |[DB]
| | | | | | |[SLS]
| | | |[SCHEMA GROUP]
| | | | |[SG01]
| |[RECORD]
| | |[RECORD]
| | | |[RECORD]
| | | | |[RFB25000]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[01]
| | | | |[ITEM]
| | | | | |[P-KEY-XI]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[03]
| | | | |[ITEM]
| | | | | |[P-KEY-XI1]
| | | |[PICTURE]
| | | | |[X(010)]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[01]
| | | | |[ITEM]
| | | | | |[FILLER]
| | | |[PICTURE]
| | | | |[X(008)]
| | |[DATA]
| | | |[DATA]
| | | | |[LEVEL]
| | | | | |[01]
| | | | |[ITEM]
| | | | | |[FILLER]
| | | |[PICTURE]
| | | | |[X(29970)]
| | | |[COMPRESSED]
| | | | |[TYPE1]
| |[RANGE]
| | |[RANGE]
| | | |[RANGE]
| | | | |[RRB25000]
| | | |[RECORD]
| | | | |[RFB25000]
| | | |[LOCATION KEY]
| | | | |[P-KEY-XI2]
| | | |[STRETCHED]
| | | | |[4]
| | | |[DIVIDED]
| | | | |[512]
| | | |[RATE]
| | | | |[100]
| | | |[LOGICAL PAGE]
| | | | |[1]
| | | |[ALARM]
| | | | |[CONF]
| | | | | |[POINT]
| | | | | | |[70]
| | | | | |[OPT]
| | | | | | |[PRIME]
| | |[SUBRANGE]
| | | |[SUBRANGE]
| | | | |[SRB2500000]
| | | |[PRIME]
| | | | |[2700]
| | | |[LOCATION]
| | | | |[VALUE]
| | | | | |[ ]
| | | | |[THRU]
| | | | | |[0 ]
| |[DATASET]
| | |[DATASET]
| | | |[DATASET]
| | | | |[NAME]
| | | | | |[FKDAT.SCHTEST.H01]
| | | |[PAGE]
| | | | |[32632]
| | |[VOLUME]
| | | |[VOLUME]
| | | | |[NAME]
| | | | | |[100000]
| | | |[UNIT]
| | | | |[F6425]
| | | |[EXTENT-ID]
| | | | |[1]
| | | |[LOCATE]
| | | | |[RANGE]
| | | | | |[NAME]
| | | | | | |[RRB25000]
| | | | | |[SUBRANGE]
| | | | | | |[NAME]
| | | | | | | |[SRB2500000]
| |[EXTENDED INDEX]
| | |[EXTENDED INDEX]
| | | |[EXTENDED INDEX]
| | | | |[NAME]
| | | | | |[XIB25A1]
| | | | |[DATA]
| | | | | |[P-KEY-XI]
| | | | |[RECORD]
| | | | | |[RFB25000]
| | |[EXTENDED INDEX SUBRANGE]
| | | |[EXTENDED INDEX SUBRANGE]
| | | | |[EXTENDED INDEX]
| | | | | |[XIB25A1]
| | | | |[EXTENDED INDEX SUBRANGE]
| | | | | |[XSB250100]
| | | | | | |[SUBRANGE]
| | | | | | | |[SRB2500000]
| | | | |[EXTENDED INDEX SUBRANGE]
| | | | | |[XSB250101]
| | | | | | |[SUBRANGE]
| | | | | | | |[SRB2500001]
다음은 SCHTEST.adl 파일을 NDB 메타 테이블에 store하는 예이다.
$ ndbadlgen store -p SCHTEST.adl -f
>> [SCHTEST] delete done
>> [DSCH:SCHTEST] store done
다음은 SCHTEST.adl 파일을 load하는 예이다.
$ ndbadlgen load -a SCHTEST
SCHEMA NAME IS SCHTEST FOR DB
;SCHEMA GROUP NAME IS SG01
.
* ;XIF-SCHEMA (1)
* XITEST
RECORD NAME IS RFB25000
01 P_KEY_XI
.
03 P_KEY_XI1
;PIC X(010)
.
03 P_KEY_XI2
;PIC X(002)
.
03 P_KEY_XI3
;PIC X(010)
.
01 FILLER_0
;PIC X(008)
.
01 FILLER_1
;PIC X(29970)
.
.
. [생략]
다음은 SCHTEST.adl 파일을 delete하는 예이다.
$ ndbadlgen delete -a SCHTEST
>> [SCHTEST] delete done
2.2. ndbcmd
NDB DML을 이용하여 NDB 데이터베이스의 레코드를 직접 변경 또는 조회하는 툴이다.
사용법
ndbcmd 프로그램을 실행하는 방법은 다음과 같다.
ndbcmd [options]
-
[options]
옵션 설명 -h
ndbcmd의 OPTION에 대한 설명을 간략하게 조회한다.
-V
ndbcmd의 버전 정보를 보여준다.
-b
Batch 모드로 설정되어 프롬프트가 출력되지 않는다.
-q
DML 실행 후 FCOM 정보가 출력되지 않는다.
사용예제
다음은 STORE DML을 이용하여 2개의 레코드를 저장하는 예이다.
$ ndbcmd
NDB% READY TSTSUB02
TSTSUB02 DML:RD DBESCB:0000 PGCSRN: PGCS:0,0 PAGENO:0 RECID:0 RECSEQ:0 OCCID:0
NDB% STORE OWNREC01
1 OWN1_FLD K data group
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 01
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
1 FILLER_0 PIC X(008) : TESTDATA
TSTSUB02 DML:ST DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,3 PAGENO:-1 RECID:7 RECSEQ:3 OCCID:7696581394435
NDB% STORE OWNREC01
1 OWN1_FLD K data group
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 02
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
1 FILLER_0 PIC X(008) : TESTDATA
TSTSUB02 DML:ST DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,4 PAGENO:-1 RECID:7 RECSEQ:4 OCCID:7696581394436
NDB% COMMIT
NDB% FINISH
TSTSUB02 DML:FN DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,4 PAGENO:-1 RECID:7 RECSEQ:4 OCCID:7696581394436
NDB%
다음은 위에서 저장한 레코드를 GET ANY DML을 이용하여 조회하는 예이다.
$ ndbcmd
NDB% READY TSTSUB02
TSTSUB02 DML:RD DBESCB:0000 PGCSRN: PGCS:0,0 PAGENO:0 RECID:0 RECSEQ:0 OCCID:0
NDB% GET ANY OWNREC01
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 01
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
TSTSUB02 DML:GT DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,3 PAGENO:-1 RECID:7 RECSEQ:3 OCCID:7696581394435
NDB% PRINT OWNREC01
1 OWN1_FLD K data group
3 OWN1_FLD1 K PIC X(010) : STORE_TEST
3 OWN1_FLD2 K PIC X(002) : 01
3 OWN1_FLD3 K PIC X(010) : STORE_TEST
1 FILLER_0 PIC X(008) : TESTDATA
NDB% FINISH
TSTSUB02 DML:FN DBESCB:0000 PGCSRN:OWNREC01 PGCS:1792,3 PAGENO:-1 RECID:7 RECSEQ:3 OCCID:7696581394435
2.3. ndbinit
ndbinit은 OpenFrame NDB 제품을 처음 설치할 때 필요한 메타 테이블을 생성, 초기화 및 삭제하기 위한 툴이다.
사용법
ndbinit 프로그램을 실행하는 방법은 다음과 같다.
ndbinit {COMMAND}[options]
-
입력 항목
항목 설명 {COMMAND}
-
create : 옵션으로 주어진 테이블을 생성한다.
-
drop : 옵션으로 주어진 테이블을 삭제한다.
-
truncate : 옵션으로 주어진 테이블을 초기화한다.
-
-
[options]
옵션 설명 -h
ndbinit의 사용법 및 OPTION에 대한 설명을 간략하게 보여준다.
-t
Tibero 환경에서 지정한 테이블을 생성할 테이블 스페이스를 지정한다.
사용예제
다음은 Tibero 환경에서 DEFVOL이라는 테이블 스페이스에 메타 데이터 테이블을 생성하고 삭제하는 예이다.
$ ndbinit create -t DEFVOL
$ ndbinit drop -t DEFVOL
2.4. ndbmgr
ADL DB 스키마 또는 XIF 스키마를 참조하여 OPTION 및 COMMAND에 따라 스키마에 정의된 NDB 데이터베이스와 인덱스를 생성, 초기화, 삭제 처리하는 툴이다. 또한, 대상 스키마의 DML 라이브러리를 생성한다.
ndbmgr의 주요기능은 다음과 같다.
-
NDB 데이터베이스 생성, 초기화, 삭제
-
NDB 인덱스 생성, 초기화, 삭제
-
NDB 확장 인덱스 생성, 초기화, 삭제
-
NDB DML 라이브러리 생성
ndbmgr를 실행하기 전에 해당 스키마 파일이 사전에 등록되어 있어야 한다. 스키마 파일 등록하기 위한 ndbadlgen 툴에 관한 자세한 내용은 ndbadlgen를 참고한다. |
사용법
ndbmgr 프로그램을 실행하는 방법은 다음과 같다.
ndbmgr schm {COMMAND} schema-name [options]
-
입력 항목
항목 설명 {COMMAND}
-
create : NDB 데이터베이스, 인덱스, 확장 인덱스를 생성하고 초기화한다.
-
truncate : NDB 데이터베이스, 인덱스, 확장 인덱스를 초기화한다.
-
drop : NDB 데이터베이스, 인덱스, 확장 인덱스를 삭제한다.
-
dmlgen : 다음의 명령을 수행했을 때 지정되어 있는 경로에 대상 SCHEMA의 DML 라이브러리를 생성한다.
ofconfig LIST -s ndb -sec NDB_DEFAULT -k LIBRARY_PATH
schema-name
처리할 대상을 정의하는 DB 스키마 또는 XIF 스키마의 이름을 기술한다.
-
-
[options]
옵션 설명 -h
ndbmgr의 사용법 및 OPTION, COMMAND에 대한 설명을 간략하게 조회한다.
-V
"ndbmgr -V"을 사용하여 ndbmgr의 프로그램 버전정보를 확인한다.
-t
지정한 테이블을 생성할 테이블 스페이스를 지정한다.
-p page-size
스키마의 하위 레코드들을 검색할 경우 지정한 page-size를 기준으로 페이징 처리를 한다.
-P
DDL을 실제로 실행하지는 않고 해당 스키마의 DDL을 화면에 출력한다.
사용예제
다음은 NDB 데이터베이스를 생성하는 예이다.
$ ndbmgr schm create SCHTEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: creating SCHEMA (SCHTEST) objects
ndbmgr: successfully processed the request
다음은 NDB 데이터베이스를 삭제하는 예이다.
$ ndbmgr schm drop SCHTEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: dropping SCHEMA (SCHTEST) objects
ndbmgr: successfully processed the request
다음은 NDB 확장 인덱스를 생성하는 예이다.
$ ndbmgr schm create XITEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: creating XIFSCHEMA (XITEST) objects
ndbmgr: successfully processed the request
다음은 NDB DML 라이브러리를 생성하는 예이다(DML 라이브러리를 생성하기 전에 ndbmgr schm create를 이용해 NDB 데이터베이스가 생성되어 있어야 한다).
$ ndbmgr schm dmlgen SCHTEST
ndbmgr version 7.1.0(0) rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Managing OpenFrame NDB record tables and set tables
sacee token taken from config!
ndbmgr: generate SCHEMA (SCHTEST) objects
tbESQL Precompiler 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
/home/rona/oframe7/OHOME/ndb/temp/SCHTEST_RFB25000.tbc is precompiled successfully!
ndbmgr: successfully processed the request
3. 데이터베이스 마이그레이션 툴
본 절에서는 OpenFrame NDB 툴 프로그램 중 데이터베이스를 마이그레이션하는 과정에 사용되는 툴의 사용법을 설명한다.
3.1. ndbconvstmt
JXKUNLOD 유틸리티 또는 ndbexport 툴에서 이용된 control statements를 이용해 JXKRELOD 유틸리티 또는 ndbimport 툴에서 사용할 수 있는 control statements를 생성하는 툴이다.
사용법
ndbconvstmt 프로그램을 실행하는 방법은 다음과 같다.
ndbconvstmt [options] input-file output-file
-
[options]
옵션 설명 -h
ndbconvstmt의 사용법 및 OPTION에 대한 설명을 간략하게 조회한다.
-V
ndbconvstmt의 프로그램 버전정보를 보여준다.
-r
역변환을 수행한다.
JXKRELOD 유틸리티 또는 ndbimport 툴에서 이용된 control statements를 이용해 JXKUNLOD 유틸리티 또는 ndbexport 툴에서 사용할 수 있는 control statement를 생성한다.
-
입력 항목
항목 설명 input-file
JXKUNLOD 유틸리티 또는 ndbexport 툴에 이용된 control statements를 포함하는 파일의 이름을 기술한다.
-r을 지정하는 경우 JXKRELOD 유틸리티 또는 ndbimport 툴에서 이용된 파일 이름을 기술한다.
output-file
JXKRELOD 유틸리티 또는 ndbimport 툴에서 이용할 control statements를 저장할 파일의 이름을 기술한다.
-r을 지정하는 경우 JXKUNLOD 유틸리티 또는 ndbexport 툴에서 이용할 파일 이름을 기술한다.
사용예제
다음은 NDB 데이터베이스의 conversion scheme을 생성하는 예이다.
$ ndbconvstmt SCHTEST_UNLOAD SCHTEST_RELOAD
ndbconvstmt version 7.1.0(0), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
3.2. ndbgensch
스키마로 지정한 NDB 데이터베이스를 읽어 데이터 파일을 생성하는 툴이다.
사용법
ndbgensch 프로그램을 실행하는 방법은 다음과 같다.
ndbgensch [options] schema-name
-
[options]
옵션 설명 -h
ndbgensch의 사용법 및 OPTION에 대한 설명을 간략하게 조회한다.
-V
ndbgensch의 프로그램 버전정보를 보여준다.
-o conversion-scheme-file-name
생성될 conversion scheme 파일의 이름을 지정한다.
-v volume-name
volume을 지정한다.
-c record-name=copybook-file-path [[,record-name=copybook-file-path]…]
각 레코드의 conversion rule을 스키마에 정의된 것이 아닌 copybook에 정의된 방식으로 이용할 때 설정한다.
-
입력 항목
항목 설명 schema-name
데이터베이스를 정의한 스키마의 이름을 기술한다.
사용예제
다음은 NDB 데이터베이스의 conversion scheme을 생성하는 예이다.
$ ndbgensch SCHTEST
ndbgensch version 7.1.0(0), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
Scheme filename = /home/rona/oframe7/OHOME/schema/SCHTEST.conv - created
3.3. ndbexport
서브스키마로 지정한 NDB 데이터베이스를 읽어 NDB 데이타를 담는 데이터셋을 생성하는 툴이다. ndbexport를 실행하기 전에 관련된 모든 스키마를 생성해 놓아야 한다.
사용법
ndbexport 프로그램을 실행하는 방법은 다음과 같다.
ndbexport [options] sub-schema-name schema-name dump-dataset-name
-
[options]
옵션 설명 -h
ndbexport의 사용법 및 OPTION에 대한 설명을 간략하게 조회한다.
-V
ndbexport의 프로그램 버전정보를 보여준다.
-v volume-name
NDB 데이터가 저장될 데이터셋의 볼륨을 지정해준다.
-c control-statment-file-name
JXKUNLOD 유틸리티에서 이용되는 control statements가 담긴 파일을 지정한다.
-
입력 항목
항목 설명 sub-schema-name
내보내기(export) 대상 데이터베이스를 정의한 서브스키마의 이름을 기술한다.
schema-name
내보내기(export) 대상 데이터베이스를 정의한 스키마의 이름을 기술한다.
dump-dataset-name
ndbexport에서 생성할 DB2 포맷의 데이터셋 이름을 기술한다.
사용예제
다음은 NDB 데이터베이스의 데이터를 지정된 파일로 내보내기하는 예이다.
$ ndbexport -v DEFVOL -c MEMREC02_UNLOAD SSTEST SCHTEST FKAWA.SCHTEST.UNLD
ndbexport version 7.1.0(2), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
* JXKUNLOD START: 2019-12-18 19:08:18
_nstmts: 6
[2019-12-18T19:08:18] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
*********************** UNLOAD RECORD COUNT INFORMATION ***********************
UNLOAD DATA INFORMATION (RECFM=VB,BLKSIZE=08192,LRECL=05416)
RECORD-NAME RECORD-COUNT RECORD-LENGTH DATA-LENGTH
OWNREC01 0000000001004 00066 00050
MEMREC01 0000000003437 05416 05400
MEMREC02 0000000020930 01016 01000
*******************************************************************************
TOTAL RECORD COUNT = 0000000000025371
*******************************************************************************
[2019-12-18T19:08:19] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
* JXKUNLOD FINISH: 2019-12-18 19:08:19
dsmove version 7.1.0(1) rona@:ofsrc7/base(#5) 2019-09-25 14:03:01
Move or Rename a Dataset
DSMOVE SOURCE=SCHTEST.DB1.TxGCMFO,DEST=FKAWA.SCHTEST.UNLD,CATALOG=,VOLSER=DEFVOL,TARGET VOLSER=DEFVOL,TARGET CATALOG=
OFRUISVRDSMOVE2: Dataset Move OK. from=SCHTEST.DB1.TxGCMFO,to=FKAWA.SCHTEST.UNLD
COMPLETED SUCCESSFULLY.
dsdelete version 7.1.0(0) rona@:ofsrc7/base(#5) 2019-09-25 14:03:01
Delete an Existing Dataset or a Member of PDS Dataset
DSDELETE DSNAME=SCHTEST.CS1.T70mdcC,CATALOG=,VOLSER=DEFVOL,MEMBER=
OFRUISVRDSDEL: Dataset Delete OK. dsn=SCHTEST.CS1.T70mdcC
COMPLETED SUCCESSFULLY.
dsdelete version 7.1.0(0) rona@:ofsrc7/base(#5) 2019-09-25 14:03:01
Delete an Existing Dataset or a Member of PDS Dataset
DSDELETE DSNAME=SCHTEST.CN1.TFWBIGl,CATALOG=,VOLSER=DEFVOL,MEMBER=
OFRUISVRDSDEL: Dataset Delete OK. dsn=SCHTEST.CN1.TFWBIGl
COMPLETED SUCCESSFULLY.
3.4. ndbimport
ndbimport는 NDB 데이터 파일을 순차적으로 읽어 NDB 데이터베이스에 저장하는 툴이다. ndbimport를 실행하기 전에 관련된 모든 스키마를 생성해 놓아야 한다. NDB 데이터 파일의 구성형식은 AIM/DB의 DB2 파일 형식을 따른다. ndbexport 프로그램을 실행해도 DB2 파일 형식의 데이터셋을 만들어 준다.
ndbimport는 DB2 형식의 NDB 데이터를 읽어들여 지정된 서브스키마에 포함된 스키마에 NDB 데이터를 저장한다.
사용법
ndbimport 프로그램을 실행하는 방법은 다음과 같다.
ndbimport [options] sub-schema-name schema-name source-dataset-name
-
[options]
옵션 설명 -h
ndbimport의 사용법 및 OPTION에 대한 설명을 간략하게 조회한다.
-V
ndbimport의 프로그램 버전정보를 보여준다.
-v volume-name
NDB 데이터가 저장된 데이터셋, ixdata와 krdata가 저장될 데이터셋의 볼륨을 지정해준다.
-c control-statment-file-name
JXKRELOD 유틸리티에서 이용되는 control statement가 담긴 파일을 지정한다.
-d
ndbimport 수행시 생성되는 임시 파일(.dat, .log, .ctl)을 동작이 끝난 후 삭제한다.
-e
ndbimport를 통해 중복 검사를 수행한다. 중복 검사만 수행하므로 데이터를 import하지는 않는다.
-
입력 항목
항목 설명 sub-schema-name
적재(load) 대상 데이터베이스를 정의한 서브스키마의 이름을 기술한다.
schema-name
적재(load) 대상 데이터베이스를 정의한 스키마의 이름을 기술한다.
source-dataset-name
데이터베이스로 적재할 데이타 셋 이름을 기술한다. DB2 포맷을 따라야 한다.
사용예제
다음은 소스파일을 지정하여 NDB 데이터베이스에 적재하는 예이다.
$ ndbimport -v DEFVOL -c SCHTEST_RELOAD SSTEST SCHTEST FKAWA.SCHTEST.H00.ASCII
ndbimport version 7.1.0(0), rona@:ofsrc7/ndb(#1) 2019-06-04 14:36:45
* JXKRELOD START: 2019-12-18 19:05:57
[2019-12-18T19:05:57] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
*********************** RELOAD RECORD COUNT INFORMATION ***********************
RELOAD DATA INFORMATION (RECFM=V,BLKSIZE=43328,LRECL=32760)
RECORD-NAME RECORD-COUNT RECORD-LENGTH DATA-LENGTH
OWNREC01 0000000001004 00066 00050
MEMREC01 0000000003437 05416 05400
MEMREC02 0000000020930 01016 01000
*******************************************************************************
TOTAL RECORD COUNT = 0000000000025371
*******************************************************************************
[2019-12-18T19:06:12] [U] [NDB0033I] No JCL_AIMAPG env set, rcvl check will be skipped
* JXKRELOD FINISH: 2019-12-18 19:06:12
3.5. subsc
COBOL 애플리케이션 소스는 레코드를 정의하는데 Copybook을 사용한다. 또한 애플리케이션 소스 작성을 쉽게 하기 위하여 자주쓰이는 로직을 Copybook으로 작성하여 사용할 수 있다. 대부분의 COBOL 애플리케이션 소스에서는 Copybook을 사용하며, Copybook이 있어야 COBOL 애플리케이션 소스를 컴파일 할 수 있다.
Copybook의 종류와 생성방법은 다음과 같다.
-
사용자 Copybook
애플리케이션 작성을 쉽게 하기위해 사용자가 직접 작성하는 Copybook이다.
openframe_ndb.conf의 META 섹션의 SUBSCPY 키의 VALUE 항목에 사용자 Copybook의 경로를 추가하고 ofconfig 툴을 이용하여 해당 위치에 Copybook이 배포되도록 한다.
$ ofconfig import -f openframe_ndb.conf COMPLETED SUCCESSFULLY.
-
서브스키마 Copybook
애플리케이션이 NDB의 데이터를 사용할 경우에는 NDB의 SUBSCHEMA에 정의된 레코드를 통해 데이터를 사용하게 된다. SUBSCHEMA는 ADL로 정의하고 해당 ADL SUBSCHEMA에 레코드 정보가 정의되며, subsc를 사용하여 SUBSCHEMA에 정의된 레코드를 추출하여 지정된 경로에 Copybook을 생성한다.
사용법
subsc 프로그램을 실행하는 방법은 다음과 같다.
subsc sub-schema-name
-
입력 항목
항목 설명 sub-schema-name
copybook을 정의할 서브스키마의 이름을 기술한다.
사용예제
다음은 subsc를 사용하여 서브스키마 Copybook이 지정된 경로에 생성되었음을 보여주는 예제이다.
$ subsc TSTSUB01
* subschema copybook
[/home/rona/oframe7/OHOME/cobcpy/subscpy/TSTSUB01.cbl] create.
subschema copybook generation success (TSTSUB01)
$ OHOME/cobcpy/subscpy$ vi TSTSUB01.cbl
01 MEMREC01.
02 MEM-FLD.
04 MEMB-FLD1 PIC X(10).
04 MEMB-FLD2 PIC X(20).
04 MEMB-FLD3 PIC X(10).
01 MEMREC01-DUP REDEFINES MEMREC01.
02 FILLER PIC X(40).
01 OWNREC01.
02 OWN1-FLD.
04 OWN1-FLD1 PIC X(10).
04 OWN1-FLD2 PIC X(2).
04 OWN1-FLD3 PIC X(10).
02 FILLER-0 PIC X(8).
01 OWNREC01-DUP REDEFINES OWNREC01.
02 FILLER PIC X(30).
3.6. ndbunloader
ndbunloader는 Cross set 등 OpenFrame NDB에서 ndbexport나 jxkunlod를 이용하여 데이터를 언로드할 수 없는 경우에 사용하는 언로드용 코볼 생성 툴이다.
ndbloader에서 사용할 수 있는 전용 NDB 데이터 파일을 생성하기 위한 코볼을 만드는 데 사용한다.
ndbunloader를 수행하면 NDB_DEFAULT.UNLOAD_COBOL_PATH로 설정한 경로 하위에 스키마 이름으로 디렉터리를 생성하고 내부에 RECORD, SET 코볼을 각각 생성한다.
생성되는 코볼의 이름 규칙은 다음과 같다.
-
RECORD: 스키마명_RECS.COBOL
-
SET: 스키마명_SETS.COBOL
사용법
ndbunloader 프로그램을 실행하는 방법은 다음과 같다.
ndbunloader schema-name sub-schema-name
-
입력 항목
항목 설명 schema-name
내보내기(unload) 대상 데이터베이스를 정의한 스키마의 이름을 기술한다.
sub-schema-name
내보내기(unload) 대상 데이터베이스를 정의한 서브스키마의 이름을 기술한다.
사용예제
다음은 ndbunloader를 이용하여 코볼을 생성하는 예이다.
$ ndbunloader TSTLOC01 TSTSUB01
=== UNLOAD RECORD COBOL GENERATION SUCCESS===
[/home/jaegu/OF73/OHOME/ndb/unload_cob/TSTLOC01/TSTLOC01_RECS.COBOL] created.
=== UNLOAD SET COBOL GENERATION SUCCESS===
[/home/jaegu/OF73/OHOME/ndb/unload_cob/TSTLOC01/TSTLOC01_SETS.COBOL] created.
NDBUNLOADER: successfully finished the request for the schema TSTLOC01
3.7. ndbloader
ndbloader는 Cross set 등 OpenFrame NDB에서 ndbimport나 jxkrelod를 이용하여 데이터를 로드할 수 없는 경우에 사용하는 NDB 저장 툴이다. ndbloader를 실행하기 전에 관련된 모든 스키마를 생성해 놓아야 한다.
ndbloader는 ndbunloader 프로그램을 실행하여 생성된 코볼을 수행해 나온 NDB 데이터 파일들을 순차적으로 읽어 NDB에 저장한다.
사용법
ndbloader 프로그램을 실행하는 방법은 다음과 같다.
ndbloader command schema-name sub-schema-name source-dataset-name [options]
-
입력 항목
항목 설명 command
-
record: NDB 레코드 데이터 파일을 통해 레코드 데이터를 로드한다.
-
set: NDB 셋 데이터 파일을 이용하여 셋 관계를 저장한다. 셋을 저장하기 위해서는 레코드 데이터 로드를 선행해야 한다.
-
create: NDB 레코드 파일과 NDB 셋 파일의 데이터 관계를 이어주는 키페어 테이블을 생성한다. record 커맨드를 사용하기 전에 생성되어 있어야 한다.
-
drop: 키페어 테이블을 삭제한다.
-
truncate: 키페어 테이블을 초기화 한다.
schema-name
적재(load) 대상 데이터베이스를 정의한 스키마 이름을 기술한다. 모든 커맨드 항목에서 필수 입력 사항이다.
sub-schema-name
적재(load) 대상 데이터베이스를 정의한 서브스키마 이름을 기술한다. 키페어 테이블 관련 커맨드(create, drop, truncate)에서는 입력할 필요 없다.
source-dataset-name
데이터베이스로 적재할 데이터셋 이름을 기술한다. ndbunloader로 생성한 코볼을 수행해서 나온 데이터셋이어야 한다. 키페어 테이블 관련 커맨드(create, drop, truncate)에서는 입력할 필요 없다.
-
-
[options]
옵션 설명 -i
ndbloader를 이용해 데이터 로드 중 에러가 발생하였을 때 프로그램을 종료시키지 않고 에러만 출력 후 계속 진행한다.
-D
ndbloader를 디버그 모드로 수행한다.
-Y
ndbloader 수행 중 로드하는 레코드, 셋에 대한 정보를 출력한다.
사용예제
다음은 ndbloader를 이용하여 NDB에 데이터셋을 적재하는 예이다.
적재(load) 순서 1. 키페어 테이블 생성 $ ndbloader create TSTLOC01 NDBLOADER version 7.3.0(2) jaegu@:ofsrc/ndb(#1) 2024-03-20 19:06:55 NDB data importer - Import NDB data NDBLOADER: creating key pair table for schema TSTLOC01 NDBLOADER: key pair table for schema TSTLOC01 creation complete NDBLOADER: successfully finished the request for the schema TSTLOC01 2. 레코드 데이터 가져오기 $ ndbloader record TSTLOC01 TSTSUB01 TESTDAT.REC.ASC NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: importing record data of schema TSTLOC01 NDBLOADER: now processing 1000 record data NDBLOADER: now processing 2000 record data NDBLOADER: imported 2743 record data in total NDBLOADER: successfully finished the request for the schema TSTLOC01 3. 셋 관계 가져오기 $ ndbloader set TSTLOC01 TSTSUB01 TESTDAT.SET.ASC NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: importing set relation of schema TSTLOC01 NDBLOADER: now processing 1000 set relation NDBLOADER: imported 1631 set relation in total NDBLOADER: successfully finished the request for the schema TSTLOC01 키페어 테이블 초기화(TRUNCATE) 예시 $ ndbloader truncate TSTLOC01 NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: truncating key pair table of schema TSTLOC01 NDBLOADER: key pair table for schema TSTLOC01 truncation complete NDBLOADER: successfully finished the request for the schema TSTLOC01 키페어 테이블 삭제(DROP) 예시 $ ndbloader drop TSTLOC01 NDBLOADER version 7.3.0(2) root@OF73:ofsrc/ndb(#2) 2023-12-09 11:13:32 NDB data importer - Import NDB data NDBLOADER: dropping key pair table of schema TSTLOC01 NDBLOADER: key pair table for schema TSTLOC01 drop complete NDBLOADER: successfully finished the request for the schema TSTLOC01