반응형

검사점

 

지금까지의 여러 SSIS 기능들에 대한 강좌에서 자주 우수한 기능, “획기적인 기능이라는 표현을 써서 조금 식상할 것도 같지만, 이번 강좌에서 다루는 검사점(Checkpoint) 기능 또한 매우 유용하고 우수한 기능이라 생각됩니다.

 

검사점 기능에 대해 알아보기 전에 잠시 SQL 2000 DTS 패키지를 운영할 때의 경험을 언급하겠습니다.

 

필자가 관리했었던 패키지는 매일 수십 개의 작업이 수행되는 어느 정도 규모가 큰 환경이었습니다. 패키지 또한 단순한 Bulk Insert의 형태가 아닌 복잡한 방식으로 데이터 처리를 수행하는 것들도 많이 존재했습니다. 매일 아침에 출근하여 가장 먼저 하는 작업은 새벽에 수행되는 패키지들이 정상적으로 수행되었는지, 문제가 없는지 등을 확인하는 것이었는데, 관리하는 패키지의 수가 많기 때문에 자주 처리 에러가 발생되었습니다. 어떤 경우에는 운영 DB에서 문제가 발생되어서 처리가 안되거나 데이터 유형이 다른 값이 발생되어 처리가 실패되는 경우도 있었으며, 디스크 공간 부족으로 인한 저장 실패 등 매우 다양한 형태의 에러가 발생되었습니다. 이러한 에러가 발생될 때, 원인을 해결한 후 다시 패키지를 수행하게 되는데, 이 때 다음과 같은 방식으로 처리하였습니다.

 

1.        패키지에서 에러가 난 부분을 정확히 안다면, 패키지를 연 후, 패키지의 앞 부분을 삭제 또는 비활성화 한 후, 수행되지 않은 부분부터 다시 실행 시킵니다.

2.        해당 패키지가 반복해서 계속 수행되는 것이라면, 이미 패키지의 앞 부분이 여러 번 수행되었을 수 있습니다. 에러가 난 작업의 앞 부분에 대해 중복 적재 여부를 확인한 후, 중복 데이터를 삭제하고 다시 처리합니다.

3.        일 배치 작업과 같이 수행 시간이 짧은 경우는 다시 돌릴 수 있지만, 월 배치 또는 년 배치 작업과 같이 수행 시간이 매우 길거나 개별 작업들의 수행 시간이 긴 경우라도 반복 수행하는데 많은 어려움이 있습니다.

4.        패키지가 복잡한 경우, 정확하게 에러가 난 위치를 파악하기 힘듭니다.

 

이와 같은 상황은 필자뿐만 아니라 배치 프로세스를 관리하는 담당자는 자주 접할 수 있는 경우입니다.

 

SQL 2005 SSIS검사점(Checkpoint) 기능을 이용한다면 위와 같은 사항을 아주 쉽게 해결할 수 있습니다.

 

1.        패키지에 검사점을 설정해 놓으면, 작업 수행 중 에러가 발생되었을 때 에러가 발생한 작업에 대한 정보와 정상적으로 처리된 작업의 정보가 별도의 파일에 기록됩니다.

2.        검사점 파일이 존재하는 경우에는 패키지가 다시 수행되더라도 이미 수행한 작업들에 대해서는 다시 수행하지 않으며, 에러가 발생한 작업부터 수행을 시작합니다.

3.        패키지의 모든 작업들이 에러 없이 정상적으로 수행되는 경우에는 검사점 파일이 생성되지 않습니다. 따라서, 관리자는 작업이 실패가 발생되었는지를 확인하기 위한 방법으로 검사점 파일의 생성 여부만 확인하면 됩니다.

 

검사점제어 흐름 영역에서 패키지에 대해 설정합니다. 다시 시작하는 최소의 작업 단위는 개별 작업(작업 호스트) 단위입니다. 트랜잭션이 설정된 컨테이너인 경우, 해당 컨테이너가 최소 작업 개체가 될 수 있습니다.

 

검사점은 패키지의 제어 흐름 영역의 속성에서 설정할 수 있습니다.

 

 

Ÿ           CheckpointFileName검사점 파일을 지정합니다.

Ÿ           CheckpointUsage검사점 사용 여부를 설정합니다.

ú           Never – 검사점을 사용하지 않습니다. 기본값이며, 검사점을 사용하기 위해서는 이 값 대신 Always 또는 IfExists로 변경해야 합니다.

ú           Always – 검사점 파일을 항상 사용합니다. 에러가 발생하지 않더라도 검사점 파일이 있어야 합니다.

ú           IfExists – 검사점 파일이 있는 경우, 해당 파일을 사용합니다.

Ÿ           SaveCheckpoints오류 발생시 검사점 파일에 오류 정보를 저장할 지를 설정합니다. 검사점 기능을 사용하기 위해서는 이 옵션을 True로 설정해야 합니다.

 

이 외에도 검사점 기능을 구현하기 위해서는 제어 흐름에 있는 각 작업의 FailPackageOnFailure 속성이 True로 설정되어야 합니다.

 

 

패키지 내에 작업이 많은 경우, 각 작업들을 모두 선택한 후에 속성 창에서 해당 속성값을 변경하면 일괄적으로 변경됩니다.

 

 

[참고] 검사점을 사용하기 위한 속성

 

검사점 기능을 사용하기 위해서는 기본적으로

1.       CheckpointFileName에 검사점 파일을 지정

2.       CheckpointUsage의 값을 IfExists로 설정

3.       SaveCheckpoints의 값을 True로 설정

4.       각 작업의 FailPackageOnFailure의 값을 True로 설정

하면 됩니다.

이 때, CheckpointUsageAlways는 테스트 환경 외에서는 적용하지 않도록 합니다. 왜냐하면, SaveCheckpoints의 속성값이 True인 상태에서 패키지가 에러 없이 수행되면 자동으로 검사점 파일은 삭제가 됩니다. 하지만, 이 경우 검사점 파일이 존재하지 않는 상태에서 CheckpointUsageAlways로 설정되어 있다면 패키지는 검사점 파일이 존재하지 않기 때문에 수행을 하지 않게 됩니다. 따라서 위에서와 같이 IfExists로 설정하셔서 사용하시기 바랍니다.

 

 
반응형

'연구개발 > DTS & SSIS' 카테고리의 다른 글

기본 강좌 43 - 선행 제약 조건  (0) 2009.06.20
따라하기 - 검사점 사용하기  (0) 2009.06.20
기본 강좌 41 - 구성  (0) 2009.06.20
기본 강좌 40 - 식  (0) 2009.06.20
기본 강좌 39 - 변수  (0) 2009.06.20

+ Recent posts