OpenFrame HiDB 유틸리티
본 장에서는 OpenFrame HiDB 데이터베이스를 재편성하는 유틸리티에 대해 기술한다.
2. DFSURGL0
DFSURGL0 유틸리티는 HD 재편성 Unload 유틸리티인 DFSURGU0에서 생성한 데이터셋을 입력으로 하여 HDAM, HIDAM 또는 HISAM 데이터베이스로 Reload한다.
DFSURGL0 유틸리티 프로그램은 다음과 같은 기능을 수행한다.
-
DFSURGU0 유틸리티가 생성한 재편성용 Unload 데이터셋을 HDAM, HIDAM, HISAM 데이터베이스로 Reload
-
Logical Relationship 및 Secondary Index 정보가 담긴 워크 데이터셋 생성
-
데이터베이스 Reload 후 세그먼트 통계 정보 출력
HiDB의 DFSURGL0 유틸리티는 IBM IMS/DB의 DFSURGL0 유틸리티에 대응한다. |
2.1. EXEC 설정
EXEC 문장의 설정은 다음과 같다.
PGM=DFSRRC00,PARM='ULU,DFSURGL0,dbd-name'
항목 | 설명 |
---|---|
PGM |
DFSURGL0 유틸리티는 IMS/DB 사용 프로그램의 실행 유틸리티인 DFSRRC00을 통해 실행된다. |
PARM |
|
2.2. DD 설정
DD 설정 항목은 다음과 같다.
항목 | 설명 |
---|---|
IMS DD |
EXEC 문장에서 파라미터로 입력한 DBD가 위치하는 라이브러리를 지정한다. (필수 항목) |
database DD |
Unload 대상 데이터베이스 데이터셋을 지정한다. (필수 항목) 데이터베이스 DD 이름은 반드시 DBD에서 기술된 DD 이름과 동일해야 한다. HIDAM 데이터베이스인 경우 관련 인덱스 데이터셋도 함께 지정해야 한다. |
SYSPRINT DD |
DFSURGL0 유틸리티의 메시지가 출력된다. (필수 항목) |
DFSUINPT DD |
HD 재편성 Unload 유틸리티인 DFSURGU0에서 생성한 데이터셋으로 Reload 대상 입력 데이터셋을 지정한다. (필수 항목) 입력 데이터셋을 DUMMY로 기술한 경우 HDAM, HIDAM 데이터베이스는 데이터셋 초기화(pre-format)작업이 수행된다. |
DFSURWF1 DD |
Reload 대상 데이터베이스가 세그먼트 간의 Logical Relationship을 갖는 경우 생성할 작업용 데이터셋을 지정한다. 데이터셋은 Prefix Resolution 유틸리티인 DFSURGL0에서 입력 데이터셋으로 사용되며 Reload할 때 발생한 Logical Relationship 또는 Secondary Index 관련 정보가 담긴다. |
DFSURCDS DD |
HiDB에서는 문법 오류만 검사하고 사용하지 않는다. |
DFSURLOG DD |
Reload 작업에 대한 로그를 출력할 데이터셋을 지정한다. (선택 항목) Reload 작업이 실패할 경우 원인이 되는 세그먼트 데이터를 찾을 때 유용하다. 로그 데이터셋에는 Reload 입력 데이터셋의 세그먼트 순번, 세그먼트 이름, 상태코드, 세그먼트 키값이 기록된다. |
2.4. 통계 정보
데이터베이스 Reload 작업이 정상적으로 종료되면 다음과 같은 통계 정보를 SYSPRINT DD에 출력한다.
*** HIERARCHICAL DIRECT DB REORG RELOAD *** SEGMENT LEVEL STATISTICS TOTAL SEGMENTS BY SEGMENT TYPE =========================================== SEGMENT SEGMENT NAME LEVEL RELOADED DIFFERENCE ------------------------------------------- PBM01VAA 1 9628 PBM01VAD 2 9628 PBM01VAE 2 0 PBM01VAB 2 28243 PBM01VAF 3 28243 PBM01VAC 3 15586 PBM01VAG 2 0 ------------------------------------------- TOTAL SEGMENTS IN DATABASE UNLOADED RELOADED DIFFERENCE 91328 91328 ===========================================
-
SEGMENT LEVEL STATISTICS 필드 항목
다음은 출력 내용 중 SEGMENT LEVEL STATISTICS의 필드 항목에 대한 설명이다.
항목 설명 SEGMENT NAME
같은 라인의 통계 정보가 적용되는 세그먼트 이름이다.
SEGMENT LEVEL
데이터베이스 내 세그먼트의 계층 레벨 번호이다.
RELOADED
데이터베이스에 Reload된 세그먼트 인스턴스의 총 개수이다.
DIFFERENCE
Reload 건수와 Unload 건수가 일치하면 공백으로 표시된다.
Reload 건수가 더 많은 경우는 플러스(+) 기호, Unload 건수가 더 많은 경우는 마이너스(-) 기호와 해당 건수가 함께 표시된다.
-
TOTAL SEGMENTS IN DATABASE 필드 항목
다음은 출력 내용 중 TOTAL SEGMENTS IN DATABASE의 필드 항목에 대한 설명이다.
항목 설명 UNLOADED
HD 재편성 Unload 유틸리티인 DFSURGU0에서 Unload할 때 계수한 모든 세그먼트 인스턴스들의 개수이다.
RELOADED
HD 재편성 Reload 유틸리티인 DFSURGL0에서 Reload할 때 계수한 모든 세그먼트 인스턴스들의 개수이다.
DIFFERENCE
Reload 건수와 Unload 건수가 일치하면 공백으로 표시된다. 같지 않으면 차이나는 건수가 표시된다.
2.5. 사용예제
다음은 HD 재편성 Unload 유틸리티인 DFSURGU0에서 생성한 TMAX01.DB1 데이터셋을 DFSUINPT DD로 지정하여 TMAX01DB DBD에서 정의한 데이터베이스로 Reload하는 예제이다.
//DFSURGL0 JOB MSGLEVEL=1,MSGCLASS=X,CLASS=A,REGION=4096K //******************************************************************* //* R E L O A D ( H I D A M ) //******************************************************************* //STEP020 EXEC PGM=DFSRRC00,PARM='ULU,DFSURGL0,TMAX01DB' //STEPLIB DD DSN=IMSVS.RESLIB,DISP=SHR //IMS DD DSN=IMS.DBDMOD,DISP=SHR //SYSPRINT DD SYSOUT=* //DFSUINPT DD DSN=TMAX01.DB1,DISP=SHR //DFSURWF1 DD DSN=TMAX01.DFSURWF1,UNIT=3380, // SPACE=(TRK,(5000,500),RLSE), // DCB=(BLKSIZE=1008,LRECL=300,RECFM=VB), // DISP=(,CATLG,DELETE) //DFSURCDS DD DSN=TMAX01.DFSURCDS,DISP=SHR //TMAX01I1 DD DSN=TMAX01.IX1,DISP=SHR //TMAX01D1 DD DSN=TMAX01.DD1,DISP=SHR //TMAX01D2 DD DSN=TMAX01.DD2,DISP=SHR
TMAX01I1 DD는 인덱스 데이터셋을 지정한 것이며 TMAX01D1과 TMAX01D2 DD는 데이터베이스의 데이터셋을 지정한 것이다. DFSURWF1 DD는 Logical Relationship 정보가 들어있는 TMAX01.DFSURWF1 데이터셋을 지정한 것으로, Reload 중 생성되며 Prefix Resolution 유틸리티인 DFSURGL0에서 입력 데이터셋으로 사용된다.
2.6. 유의사항
DFSURGL0 유틸리티 프로그램을 실행한 결과는 다음과 같다.
-
정상적으로 실행한 경우
코드 0을 반환한다.
-
에러가 발생한 경우
해당 에러 메시지를 SYSPRINT DD에 출력하고 에러에 해당하는 코드를 반환한다.
DFSURGL0 유틸리티 프로그램에서 발생할 수 있는 에러 코드는 다음과 같다.
코드 설명 4
Reload 대상 세그먼트가 존재하지 않는 경우에 발생한다.
8
Reload 건수와 Unload 건수가 불일치하는 경우에 발생한다.
16
프로그램 처리 에러 또는 시스템과 관련된 에러로 다음의 경우가 해당된다.
-
OpenFrame 시스템 라이브러리 초기화 실패
-
데이터베이스 Reload 작업의 실패
-
기타 DFSURGL0 유틸리티 프로그램 에러
-
3. DFSURGU0
DFSURGU0 유틸리티는 HDAM, HIDAM 또는 HISAM 액세스 메소드로 정의된 데이터베이스를 읽어 데이터베이스 재편성에 필요한 순차 데이터셋(SDS)을 생성한다.
DFSURGU0 유틸리티 프로그램으로 다음과 같은 기능을 수행한다.
-
HDAM, HIDAM, HISAM 데이터베이스의 재편성용 Unload 데이터셋 생성
-
Unload 데이터셋의 세그먼트 통계 정보 출력
HiDB의 DFSURGU0 유틸리티는 IBM IMS/DB의 DFSURGU0 유틸리티에 대응한다. |
3.1. EXEC 설정
EXEC 문장의 설정은 다음과 같다.
PGM=DFSRRC00,PARM='ULU,DFSURGU0,dbd-name,[formatopt]'
항목 | 설명 |
---|---|
PGM |
DFSURGU0 유틸리티는 IMS/DB 사용 프로그램의 실행 유틸리티인 DFSRRC00을 통해 실행된다. |
PARM |
|
3.2. DD 설정
DD 설정 항목은 다음과 같다.
항목 | 설명 |
---|---|
IMS DD |
EXEC 문장에서 파라미터로 입력한 DBD가 위치하는 라이브러리를 지정한다. (필수 항목) |
database DD |
Unload 대상 데이터베이스 데이터셋을 지정한다. (필수 항목) 데이터베이스 DD 이름은 반드시 DBD에서 기술된 DD 이름과 동일해야 한다. HIDAM 데이터베이스인 경우 관련 인덱스 데이터셋도 함께 지정해야 한다. |
SYSPRINT DD |
DFSURGU0 유틸리티의 메시지가 출력된다. (필수 항목) |
DFSURGU1 DD |
데이터베이스를 Unload하여 출력할 순차 데이터셋을 지정한다. (필수 항목) Unload 데이터셋의 포맷은 OpenFrame 표준 HiDB 마이그레이션 데이터 포맷을 참조한다. |
3.4. 통계 정보
데이터베이스 Unload 작업이 정상적으로 종료되면 다음과 같은 통계 정보를 SYSPRINT DD에 출력한다.
******************** HIERARCHICAL DIRECT DB REORG UNLOAD ********************** D A T A B A S E S T A T I S T I C S SEGMENT LEVEL STATISTICS RECORD LEVEL STATISTICS =============================================================================== MAXMUM AVG MAXIMUM AVG SEGMENT SEGMENT TOTAL SEGMENTS AVG COUNT PER TWINS TWINS CHILDREN CHILDREN NAME LEVEL BY SEG TYPE DB RECORD ------------------------------------------------------------------------------- 1 1.00 1873 8.48 PBM01VAA 1 9628 1.00 1 1.00 0 0.00 PBM01VAD 2 9628 1.00 0 0.00 0 0.00 PBM01VAE 2 0 0.00 567 2.93 12 1.55 PBM01VAB 2 28243 2.93 1 1.00 0 0.00 PBM01VAF 3 28243 2.93 11 0.55 0 0.00 PBM01VAC 3 15586 1.61 ------------------------------------------------------------------------------- TOTAL SEGMENTS IN DATABASE= 91328 AVERAGE DATABASE RECORD LENGTH= 2271 BYTES ===============================================================================
-
SEGMENT LEVEL STATISTICS 필드 항목
다음은 출력 내용 중 SEGMENT LEVEL STATISTICS의 필드 항목에 대한 설명이다.
항목 설명 MAXIMUM TWINS
같은 부모 세그먼트 인스턴스에 종속된 트윈 세그먼트 인스턴스의 최대 개수이다. 루트 세그먼트는 항상 1의 값을 가진다.
AVG TWINS
같은 부모 세그먼트 인스턴스에 종속된 트윈 세그먼트 인스턴스의 평균 개수이다.
MAXIMUM CHILDREN
같은 부모 세그먼트 인스턴스에 종속된 자식 세그먼트 인스턴스의 최대 개수이다.
AVG CHILDREN
같은 부모 세그먼트 인스턴스에 종속된 자식 세그먼트 인스턴스의 평균 개수이다. 최하위 세그먼트의 경우 0의 값을 가진다.
SEGMENT NAME
같은 라인의 통계 정보가 적용되는 세그먼트 이름이다.
SEGMENT LEVEL
세그먼트의 계층 레벨 번호이다. 상위에서 하위로 나열된다.
-
RECORD LEVEL STATISTICS 필드 항목
다음은 출력 내용 중 RECORD LEVEL STATISTICS의 필드 항목에 대한 설명이다.
항목 설명 TOTAL SEGMENTS BY SEG TYPE
같은 세그먼트 타입을 가진 인스턴스의 총 개수이다.
AVG COUNT PER DB RECORD
1개의 레코드에 들어있는 같은 세그먼트 타입을 가진 인스턴스의 평균 개수이다.
3.5. 사용예제
다음은 TMAX01DB DBD에서 정의한 데이터베이스를 읽어 DFSURGU1 DD의 TMAX01.DB1 데이터셋으로 Unload하는 예제이다.
//DFSURGU0 JOB MSGLEVEL=1,MSGCLASS=X,CLASS=A,REGION=4096K //****************************************************************** //* HD REORGANIZATION UNLOAD UTILITY (DFSURGU0) * //****************************************************************** //STEP010 EXEC PGM=DFSRRC00,PARM='ULU,DFSURGU0,TMAX01DB' //STEPLIB DD DSN=IMSVS.RESLIB,DISP=SHR //IMS DD DSN=IMS.DBDMOD,DISP=SHR //SYSPRINT DD SYSOUT=* //TMAX01I1 DD DSN=TMAX01.IX1,DISP=SHR //TMAX01D1 DD DSN=TMAX01.DD1,DISP=SHR //TMAX01D2 DD DSN=TMAX01.DD2,DISP=SHR //DFSURGU1 DD DSN=TMAX01.DB1,DISP=(,CATLG,DELETE), // UNIT=3380,LABEL=(,SL)
TMAX01I1 DD는 인덱스 데이터셋을 지정한 것이며 TMAX01D1과 TMAX01D2 DD는 데이터베이스 데이터셋을 지정한 것이다.