Tibero 대용량이관가이드 Copyright 2013 TIBER Co., Ltd. All Rights Reserved.
Copyright Notice Copyright 2013 TIBER Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 272-6 우 ) 463-824 Restricted Rights Legend All TIBER Software (Tibero ) and documents are protected by copyright laws and international convention. TIBER software and documents are made available under the terms of the TIBER License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TIBER Co., Ltd. 이소프트웨어 (Tibero ) 사용설명서의내용과프로그램은저작권법과국제조약에의해서보호받고있습니다. 사용설명서의내용과여기에설명된프로그램은 TIBER Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용설명서의전부또는일부분을 TIBER의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks Tibero is a registered trademark of TIBER Co., Ltd. ther products, titles or services may be registered trademarks of their respective companies. Tibero 는 TIBER Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. 안내서정보안내서제목 : Tibero 대용량이관가이드발행일 : 2013-06-20 소프트웨어버전 : Tibero 5 안내서버전 : 2.1.1
내용목차 안내서에대하여... v 제1장 개요... 1 1.1. 기본개념... 1 1.2. 주요용어... 2 제2장 대용량데이터이관예제... 3 2.1. 개요... 3 2.2. Table Migrator 예제... 3 2.3. DB Link 예제... 9 2.4. tbloader 예제... 11 Tibero iii
안내서에대하여 안내서의대상 본안내서는대용량데이터를이관하려는모든데이터베이스사용자를대상으로기술한다. 안내서의전제조건 본안내서는대용량데이터이관과정을설명한안내서이다. 따라서본안내서를원활히이해하기위해서는다음과같은사항을미리알고있어야한다. 데이터베이스의이해 운영체제및시스템환경의이해 UNIX 계열 (LINUX 포함 ) 의기본지식 데이터이관에대한기본지식 안내서의제한조건 본안내서는 Tibero 를실무에적용하거나운용하는데필요한모든사항을포함하지않는다. 안내서에대하여 v
안내서규약 표기 <AaBbCc123> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고 의미프로그램소스코드의파일명, 디렉터리 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한설명메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항 [ 그림 1.1] [ 표 1.1] AaBbCc123 그림이름 표이름 명령어, 명령어수행후화면에출력된결과물, 예제코드 { } [ ] 필수인수값 옵션인수값 vi Tibero 대용량이관가이드
제 1 장개요 본장에서는대용량데이터이관방법및고려사항에대해서설명한다. 1.1. 기본개념 이기종데이터베이스를이관할때대용량테이블이있다면이관방법을통해수행시간을단축할수있다. 고객사의환경 ( 네트워크, Disk I/, 데이터속성 ) 을고려하여적절한방법을선택한다. 다음은이관방법들의특징에대한설명이다. 이관방법 tbmigrator 특징 GUI 기반의클라이언트이다. ( 네트워크오버헤드가커서대용량데이터를이관 할경우권장하지않는다 ) DPL 을지원한다. Table Migrator 테이블단위로데이터를옮기는데최적화된툴이다. SELECT 옵션의 CNDITIN, PARTITIN 을지원한다. DPL, P-DPL 을지원한다. DB Link + DPI SURCE DB 에맞는 Gateway 를설치하고 DB LINK 를설정한다. APPEND 힌트를통해 DPI 를지원한다. SAM 파일 + tbloader 변화가없는테이블에대해 SAM 파일로내려 tbloader 를이용하여데이터를 로드한다. DPL, P-DPL 을지원한다. External Table + DPI 를이용할수있다. 다음은각데이터이관방법들이지원하는방식에대한설명이다. 방식 tbmigrator Table Migrator DB Link tbloader Parallel Processing Select Condition X X Direct Path Load 제 1 장개요 1
방식 tbmigrator Table Migrator DB Link tbloader Multi Thread X Rows Per Commit X X X 대용량데이터를이관할때고려해야할사항은아래와같다. 충분한네트워크대역을확보한다. I 대역을고려하여스케줄또는 DP를적용한다. DPL, Parallel DPL을최대한활용한다. DPL, Parallel DPL이불가능할때에는 CPL을병렬로수행한다. (Multi Insert) Index, Constraint, Trigger 등은데이터이관이끝난다음생성한다. 1.2. 주요용어 CPL(Conventional Path Loading) 컬럼데이터를읽어컬럼배열에담고일괄처리방식으로데이터를로드하는방법이다. DPL(Direct Path Loading) 특정컬럼의데이터타입에맞게데이터를컬럼배열형태로만든다음블록형식기를거쳐로드하는방법으로다음과같은제약사항이있다. Parallel DPL의경우 Tibero 5 r69848 이후부터지원한다. SUBPARTITINED TABLE은 DPL 또는 Parallel DPL을미지원한다. IT는 DPL 또는 Parallel DPL을미지원한다. Partitioned INDEX의경우 Normal Index만 DPL을지원한다. LNG 컬럼이포함된 255개이상의 Column을가진테이블은 DPL을미지원한다. LB 계열의컬럼이있는경우 DPL만지원한다. INDEX가생성되어있는경우 DPL만지원한다. DP(Degree of Parallelism) 병렬도라고하며, 단일병렬작업에서사용되는병렬실행서버의수이다. 2 Tibero 대용량이관가이드
제 2 장대용량데이터이관예제 본장에서는대용량데이터이관방법의예제를설명한다. 2.1. 개요 데이터이관은다양한방법을이용하여수행할수있고이로인해수행속도를최적화시킬수있다. 단, 테이블에대한데이터이관만가능하므로 bject에대한이관은수동으로수행해야한다. 다음은예제에서사용하는테이블정보이다. CREATE TABLE DBTECH.LINEITEM ( L_RDERKEY NUMBER, L_PARTKEY NUMBER, L_SUPPKEY NUMBER, L_LINENUMBER NUMBER, L_QUANTITY NUMBER(15,2), L_EXTENDEDPRICE NUMBER(15,2), L_DISCUNT NUMBER(15,2), L_TAX NUMBER(15,2), L_RETURNFLAG CHAR(1), L_LINESTATUS CHAR(1), L_SHIPDATE DATE, L_CMMITDATE DATE, L_RECEIPTDATE DATE, L_SHIPINSTRUCT CHAR(25), L_SHIPMDE CHAR(10), L_CMMENT VARCHAR(44) ) NLGGING; 2.2. Table Migrator 예제 다음은 Table Migrator 방법으로대용량데이터를이관하는순서이다. 1. migrator.properties 파일에속성값을설정한다. migrator.properties: ####################### # Source DB Connection ####################### 제 2 장대용량데이터이관예제 3
# Source DB type (ptional, generic default RACLE) # RACLE option needs SURCE_LGIN_AS property # GENERIC option needs SURCE_DRIVER property #SURCE_TYPE=RACLE # Source DB JDBC driver class name # Use with SURCE_TYPE=GENERIC option #SURCE_DRIVER=oracle.jdbc.racleDriver # Source DB JDBC connection URL # (ptional, Default=jdbc:oracle:thin:@localhost:1521:orcl) SURCE_URL=jdbc:oracle:thin:@localhost:1521:orcl # Source DB login ID (ptional, Default=sys) #SURCE_USER=sys # Source DB login password (ptional, Default=oracle) #SURCE_PASSWRD=oracle # racle source DB login option (ptional, Default=sysdba) # Use with SURCE_TYPE=RACLE option #SURCE_LGIN_AS=sysdba # Source table schema (ptional) # Default value is the same with SURCE_USER #SURCE_SCHEMA= # Source table name (Mandatory) SURCE_TABLE=source_table_name ####################### # Target DB Connection ####################### # Target DB type (ptional, generic DEFAULT) # GENERIC option needs TARGET_DRIVER property #SURCE_TYPE=DEFAULT # Target DB JDBC driver class name # Use with TARGET_TYPE=GENERIC option #TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver # Target DB JDBC connection URL # (ptional, Default=jdbc:tibero:thin:@localhost:8629:tibero) TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero 4 Tibero 대용량이관가이드
# Target DB login ID (ptional, Default=sys) #TARGET_USER=sys # Target DB login password (ptional, Default=tibero) #TARGET_PASSWRD=tibero # Target table schema (ptional) # Default value is the same with TARGET_USER #TARGET_SCHEMA= # Target table name (ptional) # Default value is the same with SURCE_TABLE #TARGET_TABLE=target_table_name ################# # Data Extractor ################# # Use TSN(or SCN) option (ptional) #SELECT_TSN= # Where conditions (ptional) # ex. column1 > 10 AND column2 = 'abc' #SELECT_CNDITIN= # Fetch size of source table cursor (ptional, Default=1024) # Some DB is not supported this feature. #SELECT_FETCH_SIZE=1024 # Source table partition name (ptional) #SELECT_PARTITIN= # Ignore source/target DB character set (ptional, y N ) #SELECT_AS_BYTE=N ############## # Data Loader ############## # Use direct path loading (ptional, cpl DPL) # CPL means conventional path loading # DPL means direct path loading #INSERT_METHD=DPL # Use batch insert (ptional, Y n) # Use with INSERT_METHD=CPL option #INSERT_BATCH= 제 2 장대용량데이터이관예제 5
# Use parallel loading (ptional, Y n) #INSERT_PARALLEL=Y # Number of data loader thread (ptional, Default=4) # Use with INSERT_PARALLEL=Y option #INSERT_THREAD_CUNT=4 # Target table partition name (ptional) #INSERT_PARTITIN= 참고 1. 전체건수를균등하게나눌수있는조건을검토한다. (SELECT_CNDITIN 부분에설정 ) 2. 만족하는조건이있는경우 SQL문을나눈후에병렬세션 ( 터미널또는다른컴퓨터 ) 으로수행하며 Temp와 Undo Tablespace 사용량의모니터링이필요하다. 2. Background Process 를이용하여병렬프로세싱으로 migrator 를수행한다. run.sh: nohup migrator.sh SURCE_TYPE=RACLE SURCE_URL=jdbc:oracle:thin:@localhost:1521:RCL SURCE_USER=dbtech SURCE_PASSWRD=dbtech SURCE_LGIN_AS=NRMAL SURCE_SCHEMA=dbtech SURCE_TABLE=lineitem TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero TARGET_USER=dbtech TARGET_PASSWRD=dbtech SELECT_CNDITIN="l_linestatus=''" & nohup migrator.sh SURCE_TYPE=RACLE SURCE_URL=jdbc:oracle:thin:@localhost:1521:RCL SURCE_USER=dbtech SURCE_PASSWRD=dbtech SURCE_LGIN_AS=NRMAL SURCE_SCHEMA=dbtech SURCE_TABLE=lineitem TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero TARGET_USER=dbtech TARGET_PASSWRD=dbtech SELECT_CNDITIN="l_linestatus='F'" & 3. 수행결과와로그파일을확인한다. nohup.out: === Parameters === PRPERTY_FILE=migrator.properties SURCE_TYPE=RACLE SURCE_URL=jdbc:oracle:thin:@localhost:1521:RCL SURCE_USER=dbtech SURCE_PASSWRD=************ SURCE_LGIN_AS=NRMAL SURCE_SCHEMA=dbtech SURCE_TABLE=lineitem 6 Tibero 대용량이관가이드
TARGET_TYPE=DEFAULT TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero TARGET_USER=dbtech TARGET_PASSWRD=************ SELECT_CNDITIN=l_linestatus='F' SELECT_FETCH_SIZE=1024 SELECT_AS_BYTE=N INSERT_METHD=DPL INSERT_BATCH=Y INSERT_PARALLEL=Y INSERT_THREAD_CUNT=4 ================== === Parameters === PRPERTY_FILE=migrator.properties SURCE_TYPE=RACLE SURCE_URL=jdbc:oracle:thin:@localhost:1521:RCL SURCE_USER=dbtech SURCE_PASSWRD=************ SURCE_LGIN_AS=NRMAL SURCE_SCHEMA=dbtech SURCE_TABLE=lineitem TARGET_TYPE=DEFAULT TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero TARGET_USER=dbtech TARGET_PASSWRD=************ SELECT_CNDITIN=l_linestatus='' SELECT_FETCH_SIZE=1024 SELECT_AS_BYTE=N INSERT_METHD=DPL INSERT_BATCH=Y INSERT_PARALLEL=Y INSERT_THREAD_CUNT=4 ================== [E0]1373322363042 - STARTED [E0]1373322363068 - STARTED [L0]1373322363168 Loader started [L1]1373322363172 Loader started [L2]1373322363176 Loader started [L0]1373322363189 Loader started [L1]1373322363192 Loader started [L2]1373322363196 Loader started [L3]1373322363198 Loader started [L3]1373322363215 Loader started [L1] 1000 [L0] 1000 제 2 장대용량데이터이관예제 7
[L3] 1000 [L1] 1000 [L2] 1000 [L0] 1000 [L3] 1000 [L2] 1000...( 중략 ) [L0] 893000 [L3] 617000 [L1] 763000 [L2] 735000 [L0] 725000 [L2] 595000 [E0]1373322793890 - TTAL Extracted RWS: 3004998 [L3]1373322793913 TTAL Loaded RWS: 617366 [L3] 756000 [L0]1373322793921 TTAL Loaded RWS: 893541 [L1]1373322793924 TTAL Loaded RWS: 898889 [L2]1373322793935 TTAL Loaded RWS: 595202 [L2] 736000 [L1] 764000 [L0] 726000 Loading is ended. Elapsed Time : 431636 ADD BATCH : 0 EXECUTE BATCH : 0 [L3] 757000 [L2] 737000 [L1] 765000 [L0] 727000 [L3] 758000 [L2] 738000 [L1] 766000 [L0] 728000 [L3] 759000 [L2] 739000 [L1] 767000 [L0] 729000 [E0]1373322795287 - TTAL Extracted RWS: 2996217 [L1]1373322795290 TTAL Loaded RWS: 767331 [L3]1373322795303 TTAL Loaded RWS: 759888 [L2]1373322795312 TTAL Loaded RWS: 739667 [L0]1373322795314 TTAL Loaded RWS: 729331 Loading is ended. Elapsed Time : 432951 8 Tibero 대용량이관가이드
ADD BATCH : 0 EXECUTE BATCH : 0 2.3. DB Link 예제 DB Link로 insert... select... 구문을수행할때 parallel 힌트를사용하면 select는 serial하게동작하고, insert 일때만 parallel로동작한다. 따라서 DB Link 원본데이터가존재하는서버의사양이좋을경우 parallel 힌트를사용하여 view를생성하고해당 view를 Tibero에서 select하는방식으로이관히면성능향상을기대할수있다. 다음은 DB Link 방법으로대용량데이터를이관하는순서이다. 만약, 세션이 2개일경우동시에수행해야한다. 1. 전체건수를균등하게나눌수있는조건을검토한다. 만족하는조건이있는경우 SQL문을나눈후에병렬세션 ( 터미널또는다른컴퓨터 ) 으로수행하며 Temp 와 Undo Tablespace 사용량의모니터링이필요하다. 2. SQL 문에 append, parallel 힌트를사용한다. append Insert 하는대상테이블에대해서 nologging 옵션이적용되어있어야한다. select logging from user_tables where table_name = 'LINEITEM'; insert /*+ append */ into dbtech.lineitem b select * from lineitem@olink where l_linestatus=''; parallel 힌트를적용하기위해해당세션에 parallel dml 옵션을 enable 해야한다. alter session enable parallel dml; insert /*+ parallel(b 4) */ into dbtech.lineitem b select * from lineitem@olink where l_linestatus=''; 참고 Select 하는부분에병렬수행을적용하기위해서는 DB Link 의테이블에대해서 parallel 을적용한 View 를만들어조회해야한다. 다음은세션이 2 개일경우 DB Lin 를수행하는예이다. 제 2 장대용량데이터이관예제 9
SQL> select l_linestatus, count(*) from dbtech.lineitem group by l_linestatus; L_LINESTATUS CUNT(*) ------------ ---------- F 2996217 3004998 2 rows selected. 세션 1 수행 L_LINESTATUS 가 '0' 에대해서 Insert 한다. SQL> set timing on SQL> alter session enable parallel dml; Session altered. Total elapsed time 00:00:00.005235 SQL> insert /*+ append parallel(b 4) */ into dbtech.lineitem b 2 select * from lineitem@olink where l_linestatus=''; 3004998 rows inserted. Total elapsed time 00:07:07.806974 SQL> commit; Commit completed. Total elapsed time 00:00:00.000307 세션 2 수행 L_LINESTATUS 가 'F' 에대해서 Insert 한다. SQL> set timing on SQL> alter session enable parallel dml; Session altered. Total elapsed time 00:00:00.005235 SQL> insert /*+ append parallel(b 4) */ into dbtech.lineitem b 2 select * from lineitem@olink where l_linestatus='f'; 2996217 rows inserted. 10 Tibero 대용량이관가이드
Total elapsed time 00:07:01.692934 SQL> commit; Commit completed. Total elapsed time 00:00:00.000307 SQL> select count(*) from dbtech.lineitem; CUNT(*) ---------- 6001215 1 row selected. 2.4. tbloader 예제 Load할 SAM 파일을 n등분하고직접로딩과병렬프로세싱을동시에사용한다. 데이터를 Loading하는방식으로디스크에서 wait만발생하지않는다면최적의수행속도가보장된다. tbloader 방법을사용할경우다음의사항에주의한다. Source 데이터의 unload 시간을고려한다. Source 서버에서 Tartget 서버로파일전송시간을고려한다. 다음은 tbloader 방법으로대용량데이터를이관하는순서이다. 1. Unload(spool 또는 unload 유틸을이용하여데이터 unload) 및 SAM 파일을전송한다. 2. Load 할 SAM 파일을 n 등분하여 n 개의 SAM 파일을준비한다. 3. 각 SAM 파일을읽는 n 개의컨트롤파일을작성하고, 작성할때 append 옵션을사용한다. 다음은 2 개의컨트롤파일을작성하는방법이다. lineitem.ctl.aa: load data infile 'lineitem.tbl.aa' logfile 'lineitem.tbl.aa.log' badfile 'lineitem.tbl.aa.bad' append into table lineitem fields terminated by ' ' (L_RDERKEY, 제 2 장대용량데이터이관예제 11
L_PARTKEY, L_SUPPKEY, L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE, L_DISCUNT, L_TAX, L_RETURNFLAG, L_LINESTATUS, L_SHIPDATE, L_CMMITDATE, L_RECEIPTDATE, L_SHIPINSTRUCT, L_SHIPMDE, L_CMMENT) lineitem.ctl.ab: load data infile 'lineitem.tbl.ab' logfile 'lineitem.tbl.ab.log' badfile 'lineitem.tbl.ab.bad' append into table lineitem fields terminated by ' ' (L_RDERKEY, L_PARTKEY, L_SUPPKEY, L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE, L_DISCUNT, L_TAX, L_RETURNFLAG, L_LINESTATUS, L_SHIPDATE, L_CMMITDATE, L_RECEIPTDATE, L_SHIPINSTRUCT, L_SHIPMDE, L_CMMENT) 4. Background Process 를이용하여병렬프로세싱으로 tbloader 를실행하고, tbloder 명령어에 'direct=y dpl_parallel=y' 옵션을사용한다. run.sh: nohup tbloader userid=dbtech/dbtech@tibero control=lineitem.ctl.aa direct=y dpl_parallel=y & 12 Tibero 대용량이관가이드
nohup tbloader userid=dbtech/dbtech@tibero control=lineitem.ctl.ab direct=y dpl_parallel=y & 참고 dpl_parallel 옵션은하나의테이블에대해병렬프로세싱으로 tbloader 를수행할때사용하며 Tibero5 r70450 이후버전에서사용이가능하다. 다음은 2 개의 SAM 파일및컨트롤파일을가지고 tbloader 를수행하는예이다. 세션 1 수행 -- lineitem.tbl.aa.log: tbloader 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. Data File : lineitem.tbl.aa Bad File : lineitem.tbl.aa.bad Table 'LINEITEM' was loaded from the data file. CLUMN_NAME PSITIN DATATYPE ------------------------------ ---------- ---------------- L_RDERKEY 1 CHARACTER L_PARTKEY 2 CHARACTER L_SUPPKEY 3 CHARACTER L_LINENUMBER 4 CHARACTER L_QUANTITY 5 CHARACTER L_EXTENDEDPRICE 6 CHARACTER L_DISCUNT 7 CHARACTER L_TAX 8 CHARACTER L_RETURNFLAG 9 CHARACTER L_LINESTATUS 10 CHARACTER L_SHIPDATE 11 DATE L_CMMITDATE 12 DATE L_RECEIPTDATE 13 DATE L_SHIPINSTRUCT 14 CHARACTER L_SHIPMDE 15 CHARACTER L_CMMENT 16 CHARACTER Table 'LINEITEM' ---------------- 3000608 Rows were requested to load. 3000608 Rows were loaded successfully. 제 2 장대용량데이터이관예제 13
0 Rows were failed to load because of some errors Elapsed time was: 00:00:33.670898 세션 2 수행 -- lineitem.tbl.ab.log: tbloader 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. Data File : lineitem.tbl.ab Bad File : lineitem.tbl.ab.bad Table 'LINEITEM' was loaded from the data file. CLUMN_NAME PSITIN DATATYPE ------------------------------ ---------- ---------------- L_RDERKEY 1 CHARACTER L_PARTKEY 2 CHARACTER L_SUPPKEY 3 CHARACTER L_LINENUMBER 4 CHARACTER L_QUANTITY 5 CHARACTER L_EXTENDEDPRICE 6 CHARACTER L_DISCUNT 7 CHARACTER L_TAX 8 CHARACTER L_RETURNFLAG 9 CHARACTER L_LINESTATUS 10 CHARACTER L_SHIPDATE 11 DATE L_CMMITDATE 12 DATE L_RECEIPTDATE 13 DATE L_SHIPINSTRUCT 14 CHARACTER L_SHIPMDE 15 CHARACTER L_CMMENT 16 CHARACTER Table 'LINEITEM' ---------------- 3000607 Rows were requested to load. 3000607 Rows were loaded successfully. 0 Rows were failed to load because of some errors Elapsed time was: 00:00:33.795058 14 Tibero 대용량이관가이드
성능개선방법 다음은각상황에따른성능개선방법에대한설명이다. Conventional Path Load 방식으로이관할경우 tbloader에서제공하는아래의옵션을사용하여이관한다. 옵션 rows bindsize 설명사용자가대용량데이터를업로드할때 Commit을수행할레코드개수를지정하는파라미터이다. 단, tbloader는성능을고려하여지정한레코드의개수를정확히맞추어서서버로데이터를보내지는않는다. 배열에사용될최대바이트수를지정하는파라미터이다. ( 기본값 : 64KB) Tibero 클라이언트는데이터가지정한크기만큼바인딩되기전까지서버로 업로드되지않으므로대용량의데이터를업로드할때효율적으로사용할 수있다. 인덱스가생성된테이블에데이터를 Upload할경우 Direct Path Load 방식으로데이터를로드할때테이블에존재하는인덱스의생성방법을 MULTI INSERT 방식과 FAST BUILD 방식중에하나선택할수있다. 다음은인덱스생성방법에대한설명이다. 파마리터 MULTI INSERT INDEXES FAST BUILD INDEXES 설명인덱스를여러개의레코드단위로최적화하여한번에생성하는방식이다. 기존의인덱스를무시하고데이터파일의데이터를모두로드하여다시생성하는방식이다. 참고 tbloader 유틸리티를사용하기전에대상테이블에기존데이터가많으면 MULTI INSERT 방식으로 인덱스를생성하는것이유리하고그외는 FAST BUILD 방식이유리하다. 인덱스생성방법을지정하는컨트롤파일의세부내용은다음과같다. control.ctl: LAD DATA... MULTI INSERT INDEXES... (...) 제 2 장대용량데이터이관예제 15