개요
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.
SQL
복사
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);
SQL
복사
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 환경일 경우 한쪽 노드를 종료한 후 데이터 이관을 진행합니다.
유저별로 데이터를 이관할 경우에는 각 노드에 다른 유저로 데이터 이관을 진행합니다.