Tibero 전환유틸리티가이드 Copyright 2013 TmaxData Co., Ltd. All Rights Reserved.
Copyright Notice Copyright 2013 TmaxData Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구황새울로 329 번길 5 티맥스빌딩우 ) 463-824 Restricted Rights Legend All TmaxData Software (Tibero ) and documents are protected by copyright laws and international convention. TmaxData software and documents are made available under the terms of the TmaxData 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 TmaxData Co., Ltd. 이소프트웨어 (Tibero ) 사용설명서의내용과프로그램은저작권법과국제조약에의해서보호받고있습니다. 사용설명서의내용과여기에설명된프로그램은 TmaxData Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용설명서의전부또는일부분을 TmaxData 의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks Tibero is a registered trademark of TmaxData Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Tibero 는 TmaxData Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. 안내서정보안내서제목 : Tibero 전환유틸리티가이드발행일 : 2013-06-20 소프트웨어버전 : Tibero 5 안내서버전 : 2.1.1
내용목차 안내서에대하여... v 제1장 Table Migrator... 1 1.1. 개요... 1 1.2. 수행방법... 2 1.3. 파라미터지정... 3 1.4. 수행예제... 7 Tibero iii
안내서에대하여 안내서의대상 본안내서는기존데이터베이스를 Tibero 로전환하는유틸리티에관한가이드문서이다. 안내서의전제조건 본안내서는전환유틸리티를설명한안내서이다. 따라서본안내서를원활히이해하기위해서는다음과같은사항을미리알고있어야한다. 데이터베이스의이해 운영체제및시스템환경의이해 UNIX 계열 (Linux 포함 ) 의기본지식 안내서의제한조건 본안내서는 Tibero 를실무에적용하거나운용하는데필요한모든사항을포함하지않는다. 안내서에대하여 v
안내서규약 표기 <AaBbCc123> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고 의미프로그램소스코드의파일명, 디렉터리 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한설명메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항 [ 그림 1.1] [ 표 1.1] AaBbCc123 그림이름 표이름 명령어, 명령어수행후화면에출력된결과물, 예제코드 { } [ ] 필수인수값 옵션인수값 vi Tibero 전환유틸리티가이드
제 1 장 Table Migrator 1.1. 개요 Table Migrator 는 Tibero 에서제공하는전환유틸리티로다른 DBMS 에서구성한 Table 데이터를 Tibero 로옮기는기능을수행한다. 참고 해당바이너리는 IMS 에요청하여다운로드받는다. 특징 Table Migrator 유틸리티의특징은다음과같다. Command 기반이며, 내부적으로 JAVA 의 JDBC 드라이버를이용하여 DBMS에접속한다. 별도컴퓨터 ( 클라이언트 ) 가필요하지않으며 Source 또는 Target 서버에서수행가능하다. 전체, 사용자별이관은불가능하며 Table 단위로데이터이관만가능하다. ( 스키마객체및 Table에정의된각종제약조건은전환되지않음 ) 옵션을사용하여다양한방법으로전환이가능하다. (SELECT 옵션, DPL, P-DPL 지원 ) 실행전준비사항 다음은 Table Migrator 유틸리티실행전준비사항이다. JRE 1.6 이상을설치한다. Table Migrator 설치전아래의파일이준비되었는지확인한다. table_migrator.zip : Table Migrator 바이너리 Source DB의 JDBC 드라이버 DBMS Oracle MSSQL DB2 JDBC 드라이버 ojdbc14.jar 또는 ojdbc5.jar 또는 ojdbc6.jar sqljdbc.jar 또는 sqljdbc4.jar db2jcc.jar 제 1 장 Table Migrator 1
Table Migrator 바이너리를 Source DB 또는 Target DB(Tibero) 에위치한다. 이관대상 Table 을생성 DDL 을이용하여 Target DB(Tibero) 에미리생성한다. 유의사항 Table Migrator 유틸리티를실행할때다음과같은사항에유의한다. Source DB의 Table을이관할경우 Target DB(Tibero) 에 Tablespace, User, Table을미리생성후 Table Migrator를수행한다. DBMS 접속계정에 DBA 권한이필요하다. 만약, 고객사의정책상 DBA 권한을부여받지못할경우이관작업을위한사용자별최소한의권한은아래와같다. 계정 Oracle Tibero 권한 CONNECT, SELECT ANY TABLE, SELECT ANY DICTIONARY, ALTER SESSION CONNECT, SELECT ANY TABLE, RESOURCE, ALTER SESSION long, longraw 컬럼과 subpartition 을지원하지않는다. index 가존재하는 Table 일경우 DPL 옵션을사용하지못한다. 1.2. 수행방법 1. 압축파일해제 table_migrator.zip 바이너리압축파일을해제하면다음과같은파일이생성된다. 파일 migrator_cli.jar tbtoolcom.jar tibero5-jdbc.jar migrator.bat migrator.sh migrator.properties mlogger.jar log4j-1.2.16.jar 설명 Table Migrator 클래스이다. Tibero 유틸리티공통라이브러리이다. Tibero JDBC 드라이버이다. Windows 계열실행파일이다. POSIX 계열실행파일이다. Table Migrator 컨트롤파일이다. 로그관련인터페이스클래스이다. JAVA 기반로깅유틸리티이다. 참고 실행에필요한클래스라이브러리 tbtoolcom.jar, tibero5-jdbc.jar 는 Target DB(Tibero) 의버전에맞는 라이브러리로교체하여실행한다. ( 라이브러리기본위치 : $TB_HOME/client/lib/jar) 2 Tibero 전환유틸리티가이드
2. migrator.sh( 또는.bat) 수정 UNIX 계열인경우 migrator.sh, Windows 계열인경우 migrator.bat 파일을수정한다. classpath 설정에 Source DB 의 JDBC 드라이버가설정되어있는지확인하고없을경우추가한다. java -classpath migrator_cli.jar:log4j-1.2.16.jar:ojdbc6.jar\ :ojdbc14.jar:mlogger.jar:toolcom.jar:tibero5-jdbc.jar \ com.m.migrator.tablemigrator "$@" 3. Table Migrator 실행다음은 Table Migrator를실행하는 2가지예로 UNIX 계열인경우 migrator.sh, Windows 계열인경우 migrator.bat 명령어를입력한다. 명령프롬프트에서파라미터지정실행 migrator.sh SOURCE_TYPE=ORACLE \ SOURCE_URL=jdbc:oracle:thin:@127.0.0.1:1521:orcl \ SOURCE_USER=system SOURCE_PASSWORD=manager SOURCE_LOGIN_AS=NORMAL \ SOURCE_SCHEMA=scott SOURCE_TABLE=emp \ TARGET_URL=jdbc:tibero:thin:@127.0.0.2:8629:t5 \ TARGET_USER=dbtech TARGET_PASSWORD=dbtech 컨트롤파일지정실행 파라미터의값을컨트롤파일에설정한후실행한다. 만약, 파라미터의값이동시에컨트롤파일과 명령프롬프트에설정된경우우선순위는명령프롬프트에서지정한파라미터값이우선한다. migrator.sh PROPERTY_FILE=migrator.properties 1.3. 파라미터지정 파라미터를지정하는컨트롤파일은기본으로 migrator.properties 파일로지정된다. 다음은 migrator.properties 파일에설정된파라미터의예이다. SOURCE_TYPE=ORACLE SOURCE_DRIVER=oracle.jdbc.OracleDriver SOURCE_URL=jdbc:oracle:thin:@localhost:1521:orcl SOURCE_USER=sys SOURCE_PASSWORD=oracle SOURCE_LOGIN_AS=sysdba SOURCE_SCHEMA= SOURCE_TABLE=source_table_name SOURCE_TYPE=DEFAULT TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero 제 1 장 Table Migrator 3
TARGET_USER=sys TARGET_PASSWORD=tibero TARGET_SCHEMA= TARGET_TABLE=target_table_name SELECT_TSN= SELECT_CONDITION= SELECT_FETCH_SIZE=1024 SELECT_PARTITION= SELECT_AS_BYTE=N INSERT_METHOD=DPL INSERT_BATCH=Y INSERT_PARALLEL=Y INSERT_THREAD_COUNT=4 INSERT_PARTITION= 각파라미터의설명은다음과같다. Source 접속정보관련 파라미터 SOURCE_TYPE 설명 Source DB 의타입을설정하는파라미터이다. ORACLE( 기본값 ) : Source DB가 Oracle일때설정하며 SOURCE_LOGIN_AS 파라미터의설정이필요하다. GENERIC : Source DB가일반 DB일때설정한다. 특정벤더별 API를사용하지않고표준 JDBC API만을이용하여동작하며 SOURCE_DRIVER 파라미터의설정이필요하다. SOURCE_DRIVER Source DB 에접속할때사용하는 JDBC Driver 클래스를설정하는파라 미터로 SOURCE_TYPE=GENERIC 일경우설정이필요하다. Oracle( 기본값 ) : oracle.jdbc.oracledriver MSSQL : com.microsoft.sqlserver.jdbc.sqlserverdriver DB2 : com.ibm.db2.jcc.db2driver SOURCE_URL Source DB 의 JDBC 연결 URL 을설정하는파라미터이다. Oracle( 기본값 ) : jdbc:oracle:thin:@localhost:1521:orcl MSSQL : jdbc:sqlserver://127.0.0.1:1433;databasename=master DB2 : jdbc:db2://127.0.0.1:50000/logdb SOURCE_USER Source DB 에로그인하는사용자이름을설정하는파라미터이다. ( 기본값 : sys) 4 Tibero 전환유틸리티가이드
파라미터 SOURCE_PASSWORD 설명 Source DB 에로그인하는사용자패스워드를설정하는파라미터이다. ( 기본값 : oracle) SOURCE_LOGIN_AS Oracle 에접속할때권한을설정하는파라미터로 SOURCE_TYPE 이 ORACLE 일때설정한다. SYSDBA( 기본값 ) NORMAL REMOTE 에서 SYSDBA 에접속할경우일부패스워드파일을만들며, REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 설정이필요하다. SOURCE_SCHEMA Source DB 의이관하는 Table 의실제사용자이름이다. ( 기본값 : SOURCE_USER 에서설정한사용자이름 ) SOURCE_TABLE Source DB 의이관하는 Table 이름이다. ( 필수입력 ) Target 접속정보관련 파라미터 TARGET_TYPE 설명 Target DB 의타입을설정하는파라미터이다. DEFAULT( 기본값 ) : Target DB가 Tibero일때설정한다. GENERIC : Target DB가일반 DB일때설정한다. 특정벤더별 API를사용하지않고표준 JDBC API만을이용하여동작하며 TARGET_DRIV ER 파라미터설정이필요하다. TARGET_DRIVER Target DB 에접속할때사용하는 JDBC Driver 클래스를설정하는파라미 터로 TARGET_TYPE=GENERIC 일경우설정이필요하다. ( 기본값 : com.tmax.tibero.jdbc.tbdriver) TARGET_URL Target DB 의 JDBC 연결 URL 을설정하는파라미터이다. ( 기본값 : jdbc:tibero:thin:@localhost:8629:tibero) TARGET_USER Target DB 에로그인하는사용자이름을설정하는파라미터이다. ( 기본값 : sys) TARGET_PASSWORD Target DB 에로그인하는사용자패스워드를설정하는파라미터이다. ( 기본값 : tibero) 제 1 장 Table Migrator 5
파라미터 TARGET_SCHEMA 설명 Target DB 에이관받는 Table 의실제사용자이름이다. ( 기본값 : TARGET_USER 에서설정한사용자이름 ) TARGET_TABLE Target DB 에이관받는 Table 이름으로 Table 이름을변경해서이관받을 때설정한다. ( 기본값 : SOURCE_TABLE 에서설정한 Table 이름 ) 데이터 Extractor 관련 파라미터 SELECT_TSN SELECT_CONDITION 설명 Flashback 기능에서특정 TSN(Oacle에서는 SCN) 에해당하는시점의데이터를조회하는파라미터이다. ( 기본값 : 미사용 ) Table 데이터전체가아닌조건절에해당하는데이터만이관할경우설정하는파라미터이다. ( 기본값 : 없음 ) 예 : column1 > 10 AND column2 = 'abc' SELECT_FETCH_SIZE SELECT_PARTITION SELECT_AS_BYTE Source DB에서데이터 Fetch Size 기능을지원할때설정하는파라미터이다. ( 기본값 : 1024) 파티션 Table에서지정한파티션에서만조회하도록설정하는파라미터이다. ( 기본값 : 없음 ) Table의 char, varchar와같은문자열을저장하기위한열에데이터베이스설정과다른캐릭터셋을사용하여실제문자열이저장되면문자열형태로데이터를가져올때문자열이깨질수있다. 이를방지하기위하여문자열이아닌바이너리형태로데이터를가져오고, 바이너리형태로 Tibero에옮길때설정하는파라미터이다. Y N( 기본값 ) 데이터 Loader 관련 파라미터 INSERT_METHOD 설명 데이터의 INSERT 방식을지정하는파라미터이다. DPL( 기본값 ) : DIRECT PATH LOADING CPL : CONVENTIONAL PATH LOADING 6 Tibero 전환유틸리티가이드
파라미터 INSERT_BATCH 설명 INSERT_METHOD=CPL 일때설정하는파라미터로 Table 의데이터를 Batch Insert 방식으로이관한다. Y( 기본값 ) N INSERT_PARALLEL 데이터를병렬로 INSERT 할것인지를설정하는파라미터이다. Y( 기본값 ) N INSERT_THREAD_COUNT INSERT_PARTITION 데이터를병렬로 INSERT 할경우스레드의개수를설정하는파라미터로 INSERT_PARALLEL=Y 일때설정한다. ( 기본값 : 4) 지정한파티션에이관할경우설정하는파라미터이다. ( 기본값 : 없음 ) INSERT_METHOD=DPL, INSERT_PARALLEL=Y 일때동작하며지정한 파티션에맞는조건의데이터만을조회하도록 SELECT_CONDITION 파 라미터의설정이필요하다. 1.4. 수행예제 다음은 Table Migrator 유틸리티로 Oracle(Source DB) 에서 Tibero(Target DB) 로전환을수행하는예제이다. 1. 테스트환경구성 Oracle에테스트 Table, 데이터, 접속할계정을생성한다. --DBTECH 계정에 Tablespace, User, Table, Table Data 생성 SQL> create tablespace DBTECH_TBS 2 datafile 'dbtech_tbs01.dtf' size 50M 3 AUTOEXTEND ON NEXT 20M MAXSIZE 5G 4 EXTENT MANAGEMENT LOCAL AUTOALLOCATE; Tablespace created. SQL> create user dbtech identified by dbtech 2 default tablespace DBTECH_TBS; User created. SQL> grant connect, resource to dbtech; 제 1 장 Table Migrator 7
Grant succeeded. CONNECT dbtech/dbtech; SQL> create table board (no number, 2 empno number(4), 3 title varchar(20), 4 contents clob, 5 regdate date default sysdate, 6 hit number default 0) 7 PCTFREE 10 8 INITRANS 2; Table created. SQL> INSERT INTO BOARD VALUES (1, 7369, 'introduction', 'Hello, my name is SMITH.', sysdate, 0); 1 row created. SQL> INSERT INTO BOARD VALUES (2, 7499, 'introduction', 'Hello, my name is ALLEN.', sysdate, 0); 1 row created. SQL> INSERT INTO BOARD VALUES (3, 7521, 'introduction', 'Hello, my name is WARD.', sysdate, 0); 1 row created. SQL> INSERT INTO BOARD VALUES (4, 7566, 'introduction', 'Hello, my name is JONES.', sysdate, 0); 1 row created. SQL> INSERT INTO BOARD VALUES (5, 7654, 'introduction', 'Hello, my name is MARTIN.', sysdate, 0); 1 row created. SQL> commit; Commit complete. --Migration 할때접속할계정 (DBTECH_TEST) 생성 SQL> CONNECT /as sysdba Connected. 8 Tibero 전환유틸리티가이드
SQL> create user dbtech_test identified by dbtech_test 2 default tablespace DBTECH_TBS; User created. --DBTECH_TEST 계정에권한부여 (connect) SQL> grant connect to dbtech_test; Grant succeeded. --DBTECH_TEST 계정에 Table 조회권한부여 (select on dbtecht.board) SQL> grant select on dbtecht.board to dbtech_test; Grant succeeded. --DBTECH_TEST 계정에권한부여 (select any dictionary) SQL> grant select any dictionary to dbtech_test; Grant succeeded. 2. 전환수행 Tibero 에 Tablespace, User, Table 을생성한후 Table Migrator 를수행한다. SQL> create tablespace DBTECH_TBS 2 datafile 'dbtech_tbs01.dtf' size 50M 3 AUTOEXTEND ON NEXT 20M MAXSIZE 5G 4 EXTENT MANAGEMENT LOCAL AUTOALLOCATE; Tablespace 'DBTECH_TBS' created. SQL> create user dbtech identified by dbtech 2 default tablespace DBTECH_TBS; User 'DBTECH' created. SQL> grant connect, resource to dbtech; Granted. SQL> conn dbtech/dbtech Connected to Tibero. SQL> create table board (no number, 2 empno number(4), 3 title varchar(20), 제 1 장 Table Migrator 9
4 contents clob, 5 regdate date default sysdate, 6 hit number default 0) 7 PCTFREE 10 8 INITRANS 2; Table 'BOARD' created. SQL> exit Disconnected. $ ls -rlt total 2744 -rwxr-xr-x 1 tibero dba 81829 Jun 11 16:02 toolcom.jar -rwxr-xr-x 1 tibero dba 1005411 Jun 11 16:02 tibero5-jdbc.jar -rwxr-xr-x 1 tibero dba 1157 Jun 11 16:02 readme.txt -rwxr-xr-x 1 tibero dba 2053 Jun 11 16:02 mlogger.jar -rwxr-xr-x 1 tibero dba 135 Jun 11 16:02 migrator.sh -rwxr-xr-x 1 tibero dba 2684 Jun 11 16:02 migrator.properties -rwxr-xr-x 1 tibero dba 23051 Jun 11 16:02 migrator_cli.jar -rwxr-xr-x 1 tibero dba 136 Jun 11 16:02 migrator.bat -rwxr-xr-x 1 tibero dba 481534 Jun 11 16:02 log4j-1.2.16.jar -rwxr-xr-x 1 tibero dba 1174976 Jul 2 13:28 ojdbc14.jar $ migrator.sh SOURCE_TYPE=ORACLE SOURCE_URL=jdbc:oracle:thin:@localhost:1521:ORCL SOURCE_USER=dbtech_test SOURCE_PASSWORD=dbtech_test SOURCE_LOGIN_AS=NORMAL SOURCE_SCHEMA=dbtech SOURCE_TABLE=board TARGET_URL=jdbc:tibero:thin:@localhost:9629:tibero TARGET_USER=dbtech TARGET_PASSWORD=dbtech === Parameters === PROPERTY_FILE=migrator.properties SOURCE_TYPE=ORACLE SOURCE_URL=jdbc:oracle:thin:@localhost:1521:ORCL SOURCE_USER=dbtech_test SOURCE_PASSWORD=************ SOURCE_LOGIN_AS=NORMAL SOURCE_SCHEMA=dbtech SOURCE_TABLE=board TARGET_TYPE=DEFAULT TARGET_URL=jdbc:tibero:thin:@localhost:9629:tibero TARGET_USER=dbtech TARGET_PASSWORD=************ SELECT_FETCH_SIZE=1024 SELECT_AS_BYTE=N INSERT_METHOD=DPL INSERT_BATCH=Y INSERT_PARALLEL=Y 10 Tibero 전환유틸리티가이드
INSERT_THREAD_COUNT=4 ================== [E0]1372820433963 - STARTED [E0]1372820433992 - TOTAL Extracted ROWS: 5 [L0]1372820434047 Loader started [L1]1372820434050 Loader started [L2]1372820434053 Loader started [L3]1372820434054 Loader started [L0]1372820434108 TOTAL Loaded ROWS: 1 [L2]1372820434108 TOTAL Loaded ROWS: 1 [L3]1372820434109 TOTAL Loaded ROWS: 1 [L1]1372820434111 TOTAL Loaded ROWS: 2 Loading is ended. Elapsed Time : 584 ADD BATCH : 0 EXECUTE BATCH : 0 $ tbsql dbtech/dbtech tbsql 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. Connected to Tibero. SQL> select * from board; NO EMPNO TITLE CONTENTS REGDATE HIT ----- ------- -------------- ---------------------------- ------------ ----- 4 7566 introduction Hello, my name is JONES. 2013/07/03 0 3 7521 introduction Hello, my name is WARD. 2013/07/03 0 1 7369 introduction Hello, my name is SMITH. 2013/07/03 0 2 7499 introduction Hello, my name is ALLEN. 2013/07/03 0 5 7654 introduction Hello, my name is MARTIN. 2013/07/03 0 5 rows selected. 제 1 장 Table Migrator 11