기능

OpenFrame/Batch 기능은 크게 TJES, 유틸리티, 툴로 나뉜다. 본 장에서는 각 기능에 대해서 자세하게 설명한다.

1. TJES

TJES(Tmax Job Entry Subsystem)는 IBM Mainframe의 JES에 대응하는 OpenFrame 시스템의 Batch JOB 관리 시스템이다.

TJES 시스템은 단순히 1개의 시스템으로 구성된 것이 아니라 Tmax, Base 시스템, Tmax Access Control Facility(이하 TACF) 이라는 일련의 기반 시스템 위에 올려진 서브 시스템으로 각 시스템과 유기적으로 상호 작용한다.

figure 3 1
Batch 시스템 구성도

OpenFrame/Base 시스템은 TJES 시스템이 JCL에 기술된 작업을 구동하고 실행하는데 필수적인 데이터 셋의 I/O에 대한 기능과 카탈로그 관리와 같은 데이터 조작(레코드 Read/Write) 기능을 제공한다. TJES 시스템은 JOB 수행에 필요한 입력 및 JOB 실행의 결과를 저장하는 SPOOL 데이터 셋이라는 독자적인 스토리지를 사용하고 있다.

OpenFrame Base 시스템에 대한 자세한 내용은 OpenFrame Base "Base 안내서"를 참고한다.

TJES의 기능을 Lock, 보안, Tmax와의 연동 관점에서 살펴보면 다음과 같다.

  • Lock

    TJES 시스템은 스케줄링 정책에 따라 복수의 JOB을 병렬로 실행시키는데 각 JOB들은 데이터 셋을 I/O할 때 해당 데이터 셋의 독점적인 사용을 보장하기 위해 해당 데이터 셋의 Lock을 요청한다. Lock은 데이터베이스의 DBMS_LOCK 패키지를 통해 해당 데이터 셋에 Lock을 실행한다. 하지만 이미 다른 JOB에 의해 Lock이 실행된 데이터 셋인 경우에는 선행 JOB이 Lock을 해제할 때까지 대기한다. 즉, TJES 시스템은 동시에 동일한 데이터의 접근을 방지하므로 데이터베이스의 DBMS_LOCK 패키지로부터 데이터의 무결성을 보장받는다.

  • 보안

    Batch JOB은 많은 양의 리소스들을 사용하는데 전체 시스템에서 자원은 중요한 요소이므로 임의 사용자로부터 리소스를 보호하는 것은 매우 중요하다. 따라서 TJES 시스템이 Batch JOB을 실행할 경우 리소스에 접근하는 시점에 해당 리소스가 특정 사용자에게 접근할 권한이 있는지를 TACF에게 의뢰한다. TACF는 해당 리소스에 대한 접근권한 여부를 판단하여 TJES에게 접근 가능 여부를 알려준다. 따라서 부적절한 권한을 가진 사용자가 시스템의 리소스에 접근하는 것을 막아 리소스를 보호한다.

  • Tmax와의 연동

    다른 벤더의 시스템과 비교해 볼 때 TJES 시스템은 자사의 Tmax를 기반으로 하기 때문에 안정적으로 멀티 노드를 구성하여 분산처리를 할 수 있고, 일관성있는 Fail-over를 할 수 있다.

    • 분산처리

      TJES의 모든 프로그램들은 Tmax 서버 형태로 구성되어 있고, JOB을 실행하는 과정은 Tmax 서버의 서비스를 호출하는 형태로 구현되어있다. Batch 작업의 증가로 인해 부하가 발생하는 경우에는 Tmax를 통해 부하를 분산시키거나 물리적인 서버를 증설하여 부하를 분산시킴으로써 간단히 문제를 해결할 수 있다.

    • Fail-over

      시스템 운영 중에 예기치 못한 장애가 발생하더라도 사용자는 장애를 인식하지 않고 계속해서 시스템을 사용할 수 있어야 하는데 TJES 시스템은 이러한 장애 상황에서도 자동으로 대처한다. 어떤 노드의 Tmax 서버가 비정상적으로 종료되었을 경우에 Tmax는 이를 자동으로 감지하고 해당 서버를 자동으로 재기동한다.

      또한 한 노드의 전체가 복구 불가능한 상태가 되었을 때 해당 노드로의 요청은 자동으로 다른 노드로 포워딩되며, 사용자는 장애가 발생한 노드에 영향을 받지 않고 Batch JOB을 안정적으로 계속 수행할 수 있다.

2. 유틸리티

유틸리티는 JCL의 PGM에 기술되어, 해당 JOB을 submit했을 때 실제 실행되는 프로그램 요소이다.

유틸리티는 기능에 따라 다음과 같이 분류할 수 있다.

  1. 각 유틸리티에 대한 자세한 설명은 OpenFrame Batch "유틸리티 참조 안내서"를 참고한다.

  2. DFSORT 유틸리티에 대한 자세한 설명은 OpenFrame Batch "SORT 유틸리티 참조 안내서"를 참고한다.

2.1. 데이터 셋 조작 관련 유틸리티

데이터 셋 조작 관련 유틸리티는 이미 Mainframe에서도 제공된 유틸리티로서 데이터 셋의 삭제, 이름 변경, 카탈로그, 언카탈로그, 이동, 복사, 병합, 수정과 같은 일반적인 작업에 대해 편리한 기능을 제공한다. 데이터 셋 관련 유틸리티는 시스템 유틸리티, 데이터 셋 유틸리티, VSAM 유틸리티로 나눌 수 있다.

  • 시스템 유틸리티

    OpenFrame이 제공하는 시스템 유틸리티는 다음과 같다.

    유틸리티 설명

    IEHLIST

    PDS의 데이터 셋 정보와 멤버 리스트 또는 볼륨 정보와 볼륨에 포함된 데이터 셋 리스트를 제공하는 유틸리티 프로그램이다.

    IEHPROGM

    Non-VSAM 데이터 셋을 관리하는 유틸리티 프로그램이다.

  • 데이터 셋 유틸리티

    OpenFrame이 제공하는 데이터 셋 유틸리티는 다음과 같다.

    유틸리티 설명

    ADRDSSU

    IBM Mainframe MVS 환경에서 제공하는 DFSMSdss의 기능들을 JCL에서 호출하려는 경우 사용하는 유틸리티 프로그램이다.

    DFHJUP

    SMF 데이터 셋에 존재하는 CICS 로그 데이터를 조회 및 처리하는 유틸리티 프로그램이다.

    IEBCOMPR

    2개의 SDS나 PDS를 비교조건을 통해 비교 후 그 결과를 출력하는 유틸리티 프로그램이다.

    IEBCOPY

    1개 이상의 PDS에 대해서 멤버들을 전체 또는 일부만 복사하거나 병합하는 유틸리티 프로그램이다.

    IEBDG

    테스트 데이터 셋을 생성하는 유틸리티 프로그램이다.

    IEBEDIT

    JOB 스트림 데이터 셋을 작성하거나 편집하는 유틸리티 프로그램이다.

    IEBGENER

    순차 데이터 셋 또는 PDS의 멤버를 복사하는 유틸리티 프로그램이다.

    IEBPTPCH

    순차 데이터 셋이나 PDS의 전체 또는 일부를 실제 출력할 형식으로 데이터를 생성하는 유틸리티 프로그램이다.

    IEBUPDTE

    리소스(애플리케이션 소스, JCL 소스 등)를 신규 생성, 갱신, 복사하는 유틸리티 프로그램이다.

    IFASMFDP

    SMF 데이터 셋을 일반 데이터 셋으로 DUMP하거나 내용을 초기화하는 유틸리티 프로그램이다.

  • VSAM 유틸리티

    OpenFrame이 제공하는 VSAM 유틸리티는 다음과 같다.

    유틸리티 설명

    IDCAMS

    VSAM과 Non-VSAM 데이터 셋 및 카탈로그 정보를 생성하고 관리하는 유틸리티 프로그램이다.

2.2. 데이터베이스 유틸리티

OpenFrame이 제공하는 데이터베이스 유틸리티는 다음과 같다.

유틸리티 설명

DSNMTV01

응용 프로그램에서 ESQL이나 ODBC와 같은 데이터베이스에 대한 액세스를 사용할때 이에 대한 연결을 수행하는 유틸리티 프로그램이다.

DSNTEP2

DB2 데이터베이스에 SQL을 발행하는 유틸리티 프로그램이다.

DSNTIAD

데이터베이스의 정보에 대한 질의 및 갱신을 하는 데이터 조작언어(DML)를 실행하는 유틸리티 프로그램이다.

DSNTIAUL

IKJEFT01 유틸리티를 통해 DB2 데이터베이스의 테이블 데이터를 OpenFrame 데이터 셋으로 언로드하는 유틸리티 프로그램이다.

DSNUTILB

데이터베이스에 커맨드를 발행하는 유틸리티 프로그램이다.

INZUTILB

DB2 데이터베이스를 테이블 데이터를 OpenFrame 데이터 셋으로 언로드하는 유틸리티 프로그램이다.

2.3. DFSORT 유틸리티

DFSORT 유틸리티는 대용량의 데이터를 고속으로 정렬, 병합, 복사하는 기능을 제공하는 유틸리티이다. DFSORT 유틸리티는 자체적으로 데이터를 정렬, 병합, 복사 등의 기능을 처리하는 것이 아니라 이러한 기능은 TmaxSoft 사의 ProSort라는 외부 고성능 SORT 프로그램이 처리한다.

외부의 고성능 SORT 프로그램은 UNIX에서 수행되는 프로그램이기 때문에 Mainframe에서 사용했던 형식의 스크립트를 인식할 수 없으며, 또한 Mainframe에서 사용했던 Non-VSAM, VSAM 같은 데이터를 처리할 수 없다.

따라서 OpenFrame에서 제공하는 SORT 유틸리티는 외부의 고성능 SORT 프로그램과 연동하여, 기존에 Mainframe에서 사용했던 SORT 스크립트를 외부 SORT 프로그램이 처리할 수 있는 형식으로 변경하여 전달한다. 또는 Non-VSAM, VSAM 등의 데이터를 읽어서 외부 SORT 프로그램에 전달하여 외부 SORT 프로그램이 데이터의 정렬, 병합, 복사 기능을 수행한 후에 다시 Non-VSAM, VSAM 데이터 셋으로 저장하는 기능을 제공한다.

2.4. 기타 유틸리티

기타 유틸리티는 앞에서 언급한 유틸리티의 분류에 속하지 않는 유틸리티들이다.

OpenFrame이 제공하는 기타 유틸리티는 다음과 같다.

유틸리티 설명

ADAPT

업무처리 등에 쓰이는 데이터 셋을 간단한 명령어를 사용함으로써 자유롭게 조작하는 유틸리티 프로그램이다.

DSDIFF

데이터 셋의 레코드별 차이점을 보여주는 유틸리티 프로그램이다.

EZTPA00

JCL에서 SYSIN으로 입력된 CA-Easytrieve Plus 스크립트를 실행시켜주는 유틸리티 프로그램이다.

FTP

Batch JOB에서 데이터 셋을 리모트 호스트(Remote Host)에 전송하거나 리모트 호스트로부터 데이터를 전송받아 데이터 셋으로 저장하는 유틸리티 프로그램이다.

ICETOOL

SORT 유틸리티 프로그램을 이용하여 1개의 JOB STEP에서 복수의 데이터 셋을 다양한 방법으로 출력하는 유틸리티 프로그램이다.

IEFBR14

JCL에 기술된 내용이 정상적으로 실행되는지 확인하는 테스트용 유틸리티 프로그램이다.

IKJEFT01

데이터베이스를 사용하는 Batch 애플리케이션을 JCL로 실행하려고 할 때 애플리케이션이 실행되기 전에 데이터베이스 시스템으로 접속해주는 유틸리티 프로그램이다.

데이터베이스를 사용하는 업무용 COBOL 애플리케이션의 소스에 데이터베이스 시스템 접속에 필요한 시스템 이름, 사용자 이름, 비밀번호 등과 같은 정보를 코딩하지 않고, 데이터베이스 시스템 접속에 필요한 모든 정보는 KEQEFT01 유틸리티 프로그램의 입력 스크립트에 지정한다.

ISRSUPC

2개의 데이터 셋에 대한 비교 또는 하나의 데이터 셋 내의 특정 문자열을 검색하는 유틸리티 프로그램이다.

PGMRTS00

Shared Object로 컴파일된 Batch 애플리케이션을 JCL로 실행시키려고 할 때 Batch 엔진 모듈인 JCL Runner에 의해 간접적으로 실행되는 실행 환경 제어 유틸리티 프로그램이다.

3. 툴

Batch 시스템에서 툴은 실제 Batch JOB을 실행하는 데에 직접적으로는 사용되지 않는다. 하지만 TJES에서 사용되는 시스템 데이터 셋을 생성, 초기화하거나, 외부 스케줄러로부터 Batch JOB을 submit받는 등 OpenFrame 시스템을 운영하는데 필요한 기능들을 제공하고 있다.

Batch 시스템에서 제공하는 툴은 다음과 같다.

  • TJES 시스템을 초기화하는 툴

    설명

    tjesinit

    TJES가 사용하는 시스템 테이블 뿐만 아니라 SPOOL 데이터 셋을 초기화한다.

  • 운영에 편의를 제공하는 툴

    설명

    dlclean

    임시 데이터 셋에 옮겨 놓은 이전 라이브러리들을 자동으로 삭제한다.

    dlupdate

    이전 버전의 사용자 라이브러리를 새 버전의 사용자 라이브러리로 변경해 주는 툴로 현재 사용 중인 사용자 라이브러리를 종료하지 않고도 라이브러리를 변경할 수 있는 기능을 제공한다.

    textrun

    Control-M 또는 A-AUTO와 같은 외부 스케줄러로부터 Batch JOB을 submit받고, submit된 Batch JOB을 모니터링하며, 실행이 종료되었을 때 실행 결과를 외부 스케줄러에게 통보한다.

각 툴에 대한 자세한 설명은 OpenFrame Batch "툴 참조 안내서"를 참고한다.