문서유형ㅣ기술정보
분야ㅣ마이그레이션
적용제품버전ㅣ6F
문서번호ㅣTMITI016
개요
DB Link를 통해 데이터를 이관하는 방법 및 방법에 따른 데이터 이관 속도에 대해 설명합니다.
참고본 문서는 아래 조건에서 수행한 안내자료 입니다.
가상 머신 : Vitrual Box
OS : Centos7
Tibero : Tibero6
Source, Target : Tibero6 (동일서버내 존재)
방법
데이터 이관
1. DBlink 통한 데이터 이관 (Source→Target)
Soucre에서 Target으로 DB Link를 통해 데이터를 이관할 수 있습니다.
--Source SQL> alter session enable parallel dml; Session altered. SQL> insert /*+ append parallel(4) */ into tbl_link_test@ttot select /*+ parallel(4) */ * from tbl_link_test; SQL> select * from v$pe_session; --타 세션에서 조회 SID SERIAL# PEP_ID QCSID QCSERIAL# DEGREE REQ_DEGREE ---------- ---------- ---------- ---------- ---------- ---------- ---------- 97 1601 0 77 531 4 4 98 1600 0 77 531 4 4 99 1598 0 77 531 4 4 100 1599 0 77 531 4 4 4 rows selected. --Target SQL> alter table TBL_LINK_TEST parallel 4; Table 'TBL_LINK_TEST' altered. SQL> select * from v$pe_session; 0 row selected.
Source의 DB Link를 이용할 경우 Target 테이블에 Insert시 parallel 옵션을 사용할 수 없습니다.
다만, 사전에 Target의 테이블에 대해 parallel 설정을 변경 후 이관하여도 병렬처리 되지 않으므로 해당 데이터 이관 방법은 권장하지 않습니다.
2. DBlink 통한 데이터 이관 (Target→Source)
Target에서 DB Link를 통해 Source의 데이터를 이관할 수 있습니다.
이 방법은 Target, Source 모두 병렬처리가 가능합니다.
--Target SQL> alter session enable parallel dml; Session altered. SQL> insert /*+ append parallel(4) */ into tbl_link_test select /*+ parallel(4) */ * from tbl_link_test@ttot; SQL> select * from v$pe_Session; --타 세션에서 조회 SID SERIAL# PEP_ID QCSID QCSERIAL# DEGREE REQ_DEGREE ---------- ---------- ---------- ---------- ---------- ---------- ---------- 97 3879 0 77 3852 4 4 98 3881 0 77 3852 4 4 99 3882 0 77 3852 4 4 100 3884 0 77 3852 4 4 101 3883 0 77 3852 4 4 102 3885 0 77 3852 4 4 103 3880 0 77 3852 4 4 104 3886 0 77 3852 4 4 8 rows selected. --Source SQL> select * from v$pe_session; SID SERIAL# PEP_ID QCSID QCSERIAL# DEGREE REQ_DEGREE ---------- ---------- ---------- ---------- ---------- ---------- ---------- 97 4054 0 79 3928 4 4 98 4053 0 79 3928 4 4 99 4052 0 79 3928 4 4 100 4051 0 79 3928 4 4 4 rows selected. SQL
설정에 따른 이관 속도 비교
테스트 데이터는 10,000,000건으로 약 376MB이며 생성 스크립트는 아래를 참고합니다.
create table tbl_link_test(a number, b varchar2(10), c date); insert into tbl_link_test select level, 'tbl_link_test', sysdate from dual connect by level <= 10000000; commit; create index idx_link_test1 on tbl_link_test(a); create index idx_link_test2 on tbl_link_test(b); create index idx_link_test3 on tbl_link_test(c); alter table tbl_link_test add constraint con_a unique (a);
1. DBlink 통한 데이터 이관 (Source→Target)
- 모든 설정 기본 상태 : Total elapsed time 00:24:30.560933
- 모든 설정 변경 상태 : Total elapsed time 00:14:53.344741
2. DBlink 통한 데이터 이관 (Target→Source)
- 모든 설정 기본 상태 : Total elapsed time 00:02:35.416980
- 모든 설정 변경 상태 : Total elapsed time 00:00:45.513947
참고
nologging으로 이관된 데이터들은 복구가 불가능하므로 이관이 완료된 후에는 반드 시 풀백업을 받을것을 권장합니다.
DB Link를 통해 데이터 이관시에는 특정 파티션만 조회할 수는 없습니다. 따라서 작업자가 별도로 범위 조건절을 지정하여 조회해야 합니다.
TAC 환경일 경우 한쪽 노드를 종료한 후 데이터 이관을 진행합니다. 유저별로 데이터를 이관할 경우에는 각 노드에 다른 유저로 데이터 이관을 진행합니다.