수행 예제

Table Migrator 유틸리티로 Oracle(Source DB)에서 Tibero(Target DB)로 전환을 수행하는 예제입니다.

circle-info

아래 파라미터들은 설정되어 있더라도 특정 Insert Method에서만 적용됩니다.

  • DPL_LOG_UNIT, CHECK_COLUMN_METADATA는 Insert Method가 DPL인 경우에만 적용

  • INSERT_BATCH, BATCH_THRESHOLD, COMMIT_SIZE는 Insert Method가 CPL인 경우에만 적용

DPL + SELECT_CONDITION 설정 예시

-- INSERT_METHOD=dpl, SELECT_CONDITION=period_yyyymm="202511" 설정 시

$ sh migrator.sh PROPERTY_FILE=dpl.prop SOURCE_SCHEMA=TEST_MGR SOURCE_TABLE=TB_MIG_TEST TARGET_SCHEMA=TEST_MGR TARGET_TABLE=TB_MIG_TEST LOG_FILE_NAME=TEST_MGR.TB_MIG_TEST_DPL.log SELECT_CONDITION="period_yyyymm = '202511'"

-- SELECT_CONDITION에 특정 조건이 데이터 범위인 경우
예를 들어, SELECT_CONDITION=period_yyyymm="202511" 설정 시,
SELECT count(*) FROM TEST_MGR.TB_MIG_TEST WHERE period_yyyymm = '202511' 로 조회되는 결과값이 대상이 됨

********************************************************************************
* Start Log for table migrator.
* Vendor: tibero
* Product: table migrator
* Version: 294616
********************************************************************************
* Trace is started on 21:40:15.760
* Log level: INFO
********************************************************************************

INFO[21:40:15,078][main]TableMigrator.initAndDoMigrate()(1367)
=== Parameters ===
PROPERTY_FILE=dpl.prop
SOURCE_TYPE=ORACLE
SOURCE_DRIVER=oracle.jdbc.OracleDriver
SOURCE_URL=jdbc:oracle:thin:@10.32.19.238:3300:ORCL2
SOURCE_USER=TIBERO_MIG
SOURCE_PASSWORD=********
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=TEST_MGR
SOURCE_SCHEMAORIGIN=TEST_MGR
SOURCE_TABLE=TB_MIG_TEST
SELECT_SUBPARTITION=
EXTRACT_PARALLEL=N
EXTRACT_THREAD_COUNT=1
USE_PARALLEL_HINT=N
PARALLEL_HINT_CNT=1
TARGET_TYPE=DEFAULT
TARGET_DRIVER=com.tmax.tibero.jdbc.MinteraDriver
TARGET_URL=jdbc:tibero:thin:@localhost:8629:TIBERO1
TARGET_USER=sys
TARGET_PASSWORD=********
TARGET_SCHEMA=TEST_MGR
TARGET_TABLE=TB_MIG_TEST
COMMIT_SIZE=1
SELECT_CONDITION=period_yyyymm='202511'
SELECT_FETCH_SIZE=1024
SELECT_AS_BYTE=N
INSERT_METHOD=dpl
INSERT_BATCH=Y
INSERT_PARALLEL=N
INSERT_THREAD_COUNT=4
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y
LOG_DIR=./log
LOG_FILE_NAME=TEST_MGR.TB_MIG_TEST_DPL.log
LOG_LEVEL=INFO
CHECK_COLUMN_METADATA=N
SOURCE_OBJECT_NAME_CASE_TYPE=AUTO

TARGET_OBJECT_NAME_CASE_TYPE=UPPER

INFO[21:40:15,079][TabMig][21:40:15.79]TableMigrator.migrate()(120) Insert parallel on
INFO[21:40:15,579][TabMig][21:40:15.79]TableMigrator.migrate()(121) Thread count : 4
INFO[21:40:15,251][TabMig][21:40:15.79]TibCmdConnection.connect()(54) Connect To The Source- URL :
jdbc:oracle:thin:@10.32.19.238:3300:ORCL2 ID : TIBERO_MIG
INFO[21:40:15,537][TabMig][21:40:15.79]TibCmdConnection.connect()(54) Connect To The Target- URL :
jdbc:tibero:thin:@localhost:8629:TIBERO1 ID : sys
INFO[21:40:15,615][TabMig][21:40:15.79]TibCmdConnection.connect()(54) Connect To The Target- URL :
jdbc:tibero:thin:@localhost:8629:TIBERO1 ID : sys
INFO[21:40:15,620][TabMig][21:40:15.79]TibCmdConnection.connect()(54) Connect To The Target- URL :
jdbc:tibero:thin:@localhost:8629:TIBERO1 ID : sys
INFO[21:40:15,623][TabMig][21:40:15.79]TibCmdConnection.connect()(54) Connect To The Target- URL :
jdbc:tibero:thin:@localhost:8629:TIBERO1 ID : sys

INFO[21:40:15,626][TabMig][21:40:15.79]TableMigrator.migrate()(265) SOURCE_TYPE : ORACLE
INFO[21:40:15,626][TabMig][21:40:15.79]TableMigrator.migrate()(266) SOURCE_SCHEMA : "TEST_MGR"
INFO[21:40:15,627][TabMig][21:40:15.79]TableMigrator.migrate()(287) SOURCE_TABLE : "TB_MIG_TEST"
INFO[21:40:15,627][TabMig][21:40:15.79]TableMigrator.migrate()(291) TARGET_TYPE : DEFAULT
INFO[21:40:15,627][TabMig][21:40:15.79]TableMigrator.migrate()(292) TARGET_SCHEMA : "TEST_MGR"
INFO[21:40:15,627][TabMig][21:40:15.79]TableMigrator.migrate()(309) TARGET_TABLE : "TB_MIG_TEST"

INFO[21:40:15,629][TabMig][21:40:15.79]OracleTableInfo.getTableInfo()(51) SELECT column_name, data_type, virtual_column
hidden_column FROM DBA_TAB_COLS WHERE owner=? and table_name=?
INFO[21:40:15,697][TabMig][21:40:15.79]OracleTableInfo.getTableInfo()(54) setString(1) : TEST_MGR
INFO[21:40:15,697][TabMig][21:40:15.79]OracleTableInfo.getTableInfo()(57) setString(2) : TB_MIG_TEST
INFO[21:40:15,744][TabMig][21:40:15.79]OracleTableInfo.getTableInfo()(130) SELECT table_name FROM dba_tables WHERE OWNER=? and TABLE_NAME=?
INFO[21:40:15,744][TabMig][21:40:15.79]OracleTableInfo.getTableInfo()(133) setString(1) : TEST_MGR
INFO[21:40:15,744][TabMig][21:40:15.79]OracleTableInfo.getTableInfo()(136) setString(2) : TB_MIG_TEST

INFO[21:40:15,757][TabMig][21:40:15.79]SqlUtility.getWithSqlForDbaTabColsSql()(45) SELECT view_name FROM DBA_VIEWS WHERE VIEW_NAME=?
INFO[21:40:15,757][TabMig][21:40:15.79]SqlUtility.getWithSqlForDbaTabColsSql()(48) setString(1) : 
INFO[21:40:15,764][TabMig][21:40:15.79]SqlUtility.getWithSqlForDbaTabColsSql()(60) SELECT column_name FROM DBA_TAB_COLUMNS WHERE TABLE_NAME = ?
INFO[21:40:15,764][TabMig][21:40:15.79]SqlUtility.getWithSqlForDbaTabColsSql()(63) setString(1) : DBA_TBL_COLS
INFO[21:40:15,765][TabMig][21:40:15.79]DefaultTableInfo.getTableInfo()(49) with COLS as (

    SELECT owner,
           column_id,
           table_name,
           column_name,
           data_type,
           char_length,
           data_length,
           char_used,
           virtual_column,
           hidden_column
    FROM DBA_TAB_COLS
)

SELECT column_id,
       column_name,
       data_type,
       char_length,
       data_length,
       char_used,
       virtual_column,
       hidden_column
FROM COLS
WHERE OWNER = ?
  AND TABLE_NAME = ?
ORDER BY column_id

INFO[21:40:15,766][TabMig][21:40:15.79]DefaultTableInfo.getTableInfo()(52) setString(1) : TEST_MGR
INFO[21:40:15,766][TabMig][21:40:15.79]DefaultTableInfo.getTableInfo()(55) setString(2) : TB_MIG_TEST
INFO[21:40:15,772][TabMig][21:40:15.79]TableMigrator.migrate()(433) start extracting thread...
INFO[21:40:15,785][TabMig][21:40:15.79]EOJOracleDataExtractor.run()(88) run()
INFO[21:40:15,785][TabMig][21:40:15.79]EOJOracleDataExtractor.run()(554) Extract Information
INFO[21:40:15,785][TabMig][21:40:15.79]EOJDataExtractor.loggingTabAndColInfo()(575) table name : "TEST_MGR"."TB_MIG_TEST"
INFO[21:40:15,786][TabMig][21:40:15.79]TableMigrator.migrate()(495) start loading thread...
INFO[21:40:15,786][TabMig][21:40:15.79]EOJDataExtractor.loggingTabAndColInfo()(580) columns [13] :
"MGT_TYPE_CD"
"PERIOD_YYYYMM"
"PERIOD_WEEK"
"TEMP_FLAG"
"VND_CD"
"VNDR_SHRT_NAME"
"VNDR_NAME"
"RGN_CD"
"CNTRY_CD"
"OVSENT_ORD"
"VNDR_ACCT_GR_CD"
"USE_FLAG"
"SRC_SYS_CD"
"ORIG_ATTRIBUTE1_VALUE"
"ORIG_ATTRIBUTE2_VALUE"
"ORIG_ATTRIBUTE3_VALUE"
"ORIG_ATTRIBUTE4_VALUE"
"ORIG_ATTRIBUTE5_VALUE"
"ORIG_ATTRIBUTE6_VALUE"
"ORIG_ATTRIBUTE7_VALUE"
"ORIG_ATTRIBUTE8_VALUE"
"ORIG_ATTRIBUTE9_VALUE"
"ORIG_ATTRIBUTE10_VALUE"
FROM "TEST_MGR"."TB_MIG_TEST" WHERE period_yyyymm='202511'

INFO[21:40:15,790][L3][DPLDataLoader.setDirPathStream()(506)] DPL Loading Information
INFO[21:40:15,790][L3][DPLDataLoader.setDirPathStream()(506)] DPL Loading Information
INFO[21:40:15,790][L3][DPLDataLoader.setDirPathStream()(506)] table name : "TEST_MGR"."TB_MIG_TEST"
INFO[21:40:15,791][L1][DPLDataLoader.setDirPathStream()(506)] DPL Loading Information
INFO[21:40:15,791][L1][DPLDataLoader.setDirPathStream()(506)] table name : "TEST_MGR"."TB_MIG_TEST"
INFO[21:40:15,791][L0][TbDPLDataLoader.setDirPathStream()(507)] table name : "TEST_MGR"."TB_MIG_TEST"
(중략)
INFO[21:40:15,832][L2.TbDPLDataLoader2]DataLoaderManager.run()(51) run
INFO[21:40:15,833][L1.TbDPLDataLoader1]DataLoaderManager.run()(51) run
INFO[21:40:15,842][L3.TbDPLDataLoader3]DataLoaderManager.run()(51) run
INFO[21:40:15,867][L0.TbDPLDataLoader0]DataLoaderManager.run()(51) run

INFO[21:40:16,134][L3.TbDPLDataLoader3]TbDPLDataLoader.load()(407) 500
INFO[21:40:16,138][L0.TbDPLDataLoader0]TbDPLDataLoader.load()(407) 500
INFO[21:40:16,140][L2.TbDPLDataLoader2]TbDPLDataLoader.load()(407) 500
INFO[21:40:16,149][L1.TbDPLDataLoader1]TbDPLDataLoader.load()(407) 1000
INFO[21:40:16,211][L0.TbDPLDataLoader0]TbDPLDataLoader.load()(407) 1000
INFO[21:40:16,217][L2.TbDPLDataLoader2]TbDPLDataLoader.load()(407) 1000
INFO[21:40:16,226][L1.TbDPLDataLoader1]TbDPLDataLoader.load()(407) 1500
INFO[21:40:16,283][L3.TbDPLDataLoader3]TbDPLDataLoader.load()(407) 1500
INFO[21:40:16,286][L0.TbDPLDataLoader0]TbDPLDataLoader.load()(407) 1500

... (DPL_LOG_UNIT=Default인 경우 500씩 load / INSERT_THREAD_COUNT=4로 총 4개 Loader)

INFO[21:40:31,573][L2.TbDPLDataLoader2]TbDPLDataLoader.load()(407) 89500
INFO[21:40:31,589][TabMig][21:40:15.79]EOJOracleDataExtractor.run()(344)
Total Extract Time: 15803ms
Time For Putting Row on Queue: 5913ms
Time For Executing Query Time: 141ms
Time For Executing Fetch Time: 9729ms
Percentage of Query and Fetch => 62.46%

INFO[21:40:31,589][TabMig][21:40:15.79]EOJOracleDataExtractor.run()(345)
TOTAL Extracted ROWS: 331244 (source schema = "TEST_MGR", source table = "TB_MIG_TEST")

INFO[21:40:31,589][TabMig][21:40:15.79]EOJDataExtractor.setTermFlag()(585)
Set termFlag and isError : [false]

INFO[21:40:31,589][TabMig][21:40:15.79]EOJDataExtractor.setTermFlag()(586)
complete

INFO[21:40:31,589][TabMig][21:40:15.79]TableMigrator.migrate()(532)
Extractor termFlag : [true], isError : [false]

INFO[21:40:32,579][L0.TbDPLDataLoader]DataLoaderManager.run()(266)
Total Insert Time : 167909ms
Time For Taking Row From Queue: 4959ms
Time For Executing Batch: 10824ms
Time For Executing Commit: 924ms
Percentage of Batch and Commit Time => 69.97%

INFO[21:40:32,579][L0.TbDPLDataLoader]DataLoaderManager.run()(268)
TOTAL Loaded ROWS: 84702 (target schema = "TEST_MGR", target table = "TB_MIG_TEST")

INFO[21:41:29,338][L0.TbDPLDataLoader]DataLoaderManager.run()(266)
Total Insert Time : 73591ms
Time For Taking Row From Queue: 62723ms
Time For Executing Batch: 10764ms
Time For Executing Commit: 45ms
Percentage of Batch and Commit Time => 14.69%

INFO[21:41:29,381][L3.TbDPLDataLoader3]DataLoaderManager.run()(268)
TOTAL Loaded ROWS: 84202 (target schema = "TEST_MGR", target table = "TB_MIG_TEST")

INFO[21:42:53,497][L2.TbDPLDataLoader2]DataLoaderManager.run()(268)
TOTAL Loaded ROWS: 89596 (target schema = "TEST_MGR", target table = "TB_MIG_TEST")

INFO[21:43:57,996][L1.TbDPLDataLoader1]DataLoaderManager.run()(266)
Total Insert Time : 222929ms
Time For Taking Row From Queue: 211187ms
Time For Executing Batch: 10969ms
Time For Executing Commit: 728ms
Percentage of Batch and Commit Time => 5.25%

INFO[21:43:58,720][L1.TbDPLDataLoader1]DataLoaderManager.run()(268)
TOTAL Loaded ROWS: 74738 (target schema = "TEST_MGR", target table = "TB_MIG_TEST")

INFO[21:45:08,102][TabMig][21:40:15.79]TableMigrator.resetThrS()(568)
Loader remainThr : [0], isError : [false]

INFO[21:45:08,102][TabMig][21:40:15.79]TableMigrator.resetThrS()(1248)
terminate extract thread...1
INFO[21:45:08,102][TabMig][21:40:15.79]TableMigrator.resetThrS()(1263)
terminate loader thread...1
INFO[21:45:08,102][TabMig][21:40:15.79]TableMigrator.resetThrS()(1263)
terminate loader thread...2
INFO[21:45:08,102][TabMig][21:40:15.79]TableMigrator.resetThrS()(1263)
terminate loader thread...3
INFO[21:45:08,103][TabMig][21:40:15.79]TableMigrator.migrate()(583)
VERIFICATION Source Info : TEST_MGR.TB_MIG_TEST : 331244 Rows, Target Info : TEST_MGR.TB_MIG_TEST : 331244 Rows [OK]

INFO[21:45:08,103][TabMig][21:40:15.79]TableMigrator.migrate()(642)
extract connection close
INFO[21:45:08,104][TabMig][21:40:15.79]TableMigrator.migrate()(652)
loader connection close
INFO[21:45:08,104][TabMig][21:40:15.79]TableMigrator.migrate()(656)
Elapsed Time (milliseconds) : 293025
INFO[21:45:08,104][TabMig][21:40:15.79]TableMigrator.migrate()(663)
End Migration

CPL + SELECT_CONDITION 미설정 시 예시

Last updated