by 체로키블루 [SQLServer] 마이그레이션 오픈쿼리 [2018.07.05 15:24:41]
안녕하세요?
MSSQL에 약 9,000,000건의 데이터가 한 테이블에 있습니다. (파티션 없음)
이 정보를 간단하게 오픈쿼리를 사용해서 오라클 테이블로 insert 하는데 시간이 엄청 걸리더라구요.
혹시 데이터 이관작업 시 조금 효율적으로 할 수 있는 방법이 없을까요?
쿼리만 작성하고, 튜닝만 해봤지 이런 작업은 처음이라서 경험많은 선배님들께 조언을 듣고 싶습니다.
(SQL Developer 툴에 보면 마이그레이션 기능이 있어 확인 중 인데, 효율적인지는 모르겠네요..ㅠ)
항상 답변해 주셔서 감사합니다.
저도 빨리 답변달 수 있는 실력을 키워 구루비 활성화에 기여하도록 하겠습니다^^
SQL Server 테이블에 인덱스/파티션이 없어 오픈쿼리 실행 시 매번 테이블 스캔이 될지 몰라,
인덱스도 만들어 보고, 별도 테이블을 생성하여 일부 데이터만 넣고 진행해도 느리더라구요^^;
현재 상황은 아래와 같습니다.
--------아래--------
1. SQL Server DB WORK 테이블에 총 3,363,438건 / 일별 약 2,000건씩 데이터가 누적.
2. 이 데이터를 Oracle DB로 동일하게 테이블 생성 후 데이터를 이관필요.
3. 이를 위해 SQL Server에서 Linkdb를 Oracle과 연결.
4. 스크립트를 활용해 Oracle에 Work 테이블을 생성.
5. 이후 오픈쿼리를 사용하여 데이터 이동. 허나, 10분 이상 실행되어 취소.
**쿼리:
INSERT INTO OPENQUERY(DB_LINK_NAME, 'SELECT * FROM WORK')
SELECT * FROM WORK
6. 임시 테이블 생성 후 633,700건만 전송하기 위해 오픈쿼리 재 실행. 8분 이상 실행되어 취소
**쿼리:
INSERT INTO OPENQUERY(DB_LINK_NAME, 'SELECT * FROM WORK')
SELECT * FROM WORK_TEMP --약 633,700건의 데이터를 별도 이동시켜 진행