제한시간 초과 및 잠금 문제: DB2® 데이터베이스 로드 유틸리티
DB2® 데이터베이스 로드 유틸리티를 IBM® Campaign과 같이 사용할 경우 발생할 수 있는 제한시간 초과 및 잠금 문제를 해결하려면 다음 제안사항을 사용하십시오.
증상
여러 플로우차트가 동시에 실행 중이고 플로우차트가 동일한 테이블에 기록됩니다. 플로우차트 실행이 다음 오류와 함께 실패합니다.
*
IBM® Campaign UI: "로더 명령이 오류 상태 4와 함께 종료됨" 및
*
예를 들어, 여러 플로우차트를 사용하여 메일 목록 프로세스를 사용하는 UA_ContactHistory 테이블에 레코드를 삽입하고 있습니다.
원인
로드 유틸리티는 계층 구조 레벨에서 데이터 로드를 지원하지 않습니다. 동일한 테이블에 데이터를 로드하는 여러 플로우차트를 동시에 실행할 경우 개별 로드 프로세스가 테이블을 잠급니다. 이전 로드가 완료될 때까지 각 로드 프로세스가 대기해야 합니다. 프로세스를 완료하는 데 시간이 오래 걸릴 경우 큐의 다음 로드 프로세스가 제한시간 초과되고 위에 나열된 오류가 생성됩니다.
로드 작업 중에 테이블 잠금: 대부분의 경우 로드 유틸리티는 테이블 레벨 잠금을 사용하여 테이블 액세스를 제한합니다. 로드 작업의 스테이지 및 읽기 액세스를 허용하도록 지정되었는지 여부에 따라 잠금 레벨이 달라집니다.
ALLOW NO ACCESS 모드의 로드 작업에서는 로드 기간 동안 테이블에서 독점 잠금(Z-잠금)을 사용합니다. ALLOW READ ACCESS 모드의 로드 작업이 시작되기 전에 로드 유틸리티는 로드 작업 전에 시작된 모든 애플리케이션이 대상 테이블에서 해당 잠금을 해제할 때까지 기다립니다. 로드 작업이 시작될 때 로드 유틸리티는 테이블에 대한 업데이트 잠금(U-잠금)을 획득합니다. 데이터가 커미트될 때까지 이 잠금을 보유합니다. 로드 유틸리티가 테이블에 대한 U-잠금을 획득한 경우 호환 가능한 잠금이 있더라도 로드 작업 시작 전에 테이블에 대한 잠금을 보유하고 있는 모든 애플리케이션이 잠금을 해제할 때까지 기다립니다. U-잠금을 Z-잠금으로 일시적으로 업그레이드하여 이를 수행합니다. 이 경우 요청한 잠금이 로드 작업의 U-잠금과 호환 가능한 동안에는 대상 테이블의 새로운 테이블 잠금 요청과 충돌하지 않습니다. 데이터를 커미트할 경우 로드 유틸리티는 잠금을 Z-잠금으로 업그레이드하므로, 로드 유틸리티가 충돌하는 잠금이 있는 애플리케이션이 완료될 때까지 기다리는 동안 커미트에 일부 지연이 있을 수 있습니다.
*
문제점 해결
임시 해결책: IBM® Campaign에서 Loadercommand 구성 특성에 지정된 쉘 스크립트(또는 Windows의 경우 실행 파일)를 사용하여 데이터베이스 로드 유틸리티를 호출합니다. 이 문제점을 해결하기 위해 쉘 스크립트 또는 실행 파일에 큐 로직을 추가할 수 있습니다. 이 로직에서는 하나의 로더가 테이블에서 로드 작업을 실행 및 수행 중인지 확인합니다. 이런 경우 이전 로드가 완료될 때까지 다른 로더가 로드를 시작하는 것을 허용하지 않습니다.