Default Value가 지정된 테이블에 Attunity Provider로 데이터 입력할 경우
Microsoft Premier Field Engineer
한대성
Attunity Provider는 SQL Server 2008 Enterprise Edition을 사용할 경우에 무료로 제공되는 3rd party Provider이다. 기존의 OLE DB 또는 .NET 대상에 비해 Bulk Insert 처리를 할 수 있다는 큰 장점이 있다. 실제 고객 사례에서 기존의 OLE DB 대상을 사용했을 때에 비해 Attunity Provider를 사용했을 때가 수십 배 빠른 속도를 보인 적도 있다. (OLE DB 대상 – 22분 소요, Attunity 대상 – 27초 소요)
하지만, Oracle 대상 테이블에 Default 열이 지정되어 있는 경우에는 고려해야 할 사항이 있다.
테스트 환경
다음과 같이 Oracle에 Default Value가 지정된 테이블을 준비한다.
BIDS에서 데이터 흐름 작업을 추가한 후, 다음과 같이 간단한 예제 데이터 원본을 생성한다.
TEST 1 – Oracle Attunity 대상을 사용하고 Fast Load 옵션을 사용한 경우
실행 결과
è Default 값이 설정된 Not Null 열에 데이터를 입력하려고 할 경우, 아래와 같은 에러가 발생함
[Oracle 대상 [91]] Error: 로드 후 또는 종료 단계에서 빠른 로드 오류가 발생했습니다. Class: Logical Status: 0 Code: 0 Note: At: ORAOPRdrpthEngine.c:1128 Text: Conversion error on column '"DEFAULTCOL"'. ORA-01400: NULL을 (DEFAULTCOL) 안에 삽입할 수 없습니다 |
TEST 2 – Oracle Attunity 대상을 사용하고 Fast Load 옵션을 사용하지 않는 경우
è 동일한 에러 발생 – Attunity Provider를 사용하는 경우, Fast Load 사용 여부와 상관없이 Not Null 열에 대한 검사 작업을 먼저 수행하기 때문에 이와 같은 에러가 발생함
TEST 3 – OraOledb.Oracle을 이용한 OLE DB 대상을 사용한 경우
è 정상 처리됨. Attunity Provider와는 달리, 행 단위 처리 방식으로 수행됨
해결 방법
1. 파생열 변환을 이용한 Default 열 추가
- 이 방법의 경우, Default Column에 대해 열을 지정해줘야 하는 단점은 있지만 Attunity Provider를 이용한 Bulk Insert 작업을 수행할 수 있다는 장점이 있다.
a. 파생열 변환(Derived Column)을 추가한 후, 데이터 원본과 연결한다.
b. 파생열 변환 속성을 연 다음, 아래와 같이 Default로 입력할 값을 설정한다. 이 때, 데이터 타입을 맞추는 것이 필요하다. (Type Casts 문을 이용)
c. 다음과 같이, Default Column에 대해서도 매핑을 설정한다.
2. 임시 테이블 사용
- MSSQL에서 Oracle의 임시 테이블에 Bulk Insert로 처리한 후, Oracle DB 내에서 본 테이블로 이관하는 방식. 임시 테이블 공간을 차지하지만, 처리 성능이 좋은 방법이다.
a. Oracle에 Default Value가 지정되지 않은 임시 테이블을 생성
b. MSSQL에서 Attunity Provider를 이용해서 Bulk Insert 처리
c. SSIS에서 SQL 실행 작업을 이용해서 Oracle의 임시 테이블에서 본 테이블로 Insert하는 SQL 쿼리를 실행
3. Attunity Provider 대신 OLE DB Provider(MSDAORA or OraOLEDB)를 사용해서 처리
- 추가적인 테이블 생성이나 변경 없이 기존 테이블을 그대로 사용할 수 있다는 장점은 있지만, 데이터 양이 많을 경우 처리 속도가 늦을 수 있다.
권장 방식은 1번 또는 2번임
-끝-'연구개발 > DTS & SSIS' 카테고리의 다른 글
Re) SSIS 패키지 조회 캐쉬 오류..ㅠㅠ (0) | 2011.11.10 |
---|---|
SSIS를 이용하여 데이터 가져오기 (0) | 2011.09.08 |
데이터 원본에 저장 프로시저 사용하기 (0) | 2011.08.27 |
마스터 패키지로 여러 패키지들의 연결 정보 관리하기 (0) | 2011.08.27 |
TEXT 형이 포함된 Excel 데이터 가져오기 문제 - Registry 수정 (0) | 2011.08.27 |