๋์ฉ๋ ๋ฐ์ดํฐ ์ด๊ด ๋ฐฉ๋ฒ ๋ฐ ๊ณ ๋ ค์ฌํญ, ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ๊ฐ์ ์ ๋ํด ์๋ดํฉ๋๋ค.
์ด๊ธฐ์ข ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ดํ ๋ ๋์ฉ๋ ํ ์ด๋ธ์ด ์๋ค๋ฉด ์ด๊ด ๋ฐฉ๋ฒ์ ํตํด ์ํ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค. ๊ณ ๊ฐ์ฌ์ ํ๊ฒฝ(๋คํธ์ํฌ, Disk I/O, ๋ฐ์ดํฐ ์์ฑ)์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํฉ๋๋ค.
์๋๋ ์ด๊ด ๋ฐฉ๋ฒ๋ค์ ํน์ง์ ๋ํ ์ค๋ช ์ ๋๋ค.
T-UP
GUI ๊ธฐ๋ฐ์ ํด๋ผ์ด์ธํธ (๋คํธ์ํฌ ์ค๋ฒํค๋๊ฐ ์ปค์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ดํ ๊ฒฝ์ฐ ๋ฏธ๊ถ์ฅ)
DPL์ ์ง์
์๋๋ ๊ฐ ๋ฐ์ดํฐ ์ด๊ด ๋ฐฉ๋ฒ๋ค์ด ์ง์ํ๋ ๋ฐฉ์์ ๋ํ ์ค๋ช ์ ๋๋ค.
์๋๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ดํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ๋๋ค.
์ถฉ๋ถํ ๋คํธ์ํฌ ๋์ญ์ ํ๋ณดํฉ๋๋ค.
IO ๋์ญ์ ๊ณ ๋ คํ์ฌ ์ค์ผ์ค ๋๋ DOP๋ฅผ ์ ์ฉํ๋ค. DPL, Parallel DPL์ ์ต๋ํ ํ์ฉํฉ๋๋ค.
DPL, Parallel DPL์ด ๋ถ๊ฐ๋ฅํ ๋์๋ CPL์ ๋ณ๋ ฌ๋ก ์ํํฉ๋๋ค. (Multi Insert)
Index, Constraint, Trigger ๋ฑ์ ๋ฐ์ดํฐ ์ด๊ด์ด ๋๋ ๋ค์ ์์ฑํฉ๋๋ค.
Parallel DPL์ ๊ฒฝ์ฐ Tibero 5 r69848 ์ดํ๋ถํฐ ์ง์ํฉ๋๋ค.
SUBPARTITIONED TABLE์ DPL ๋๋ Parallel DPL์ ๋ฏธ์ง์ํฉ๋๋ค.
IOT๋ DPL ๋๋ Parallel DPL์ ๋ฏธ์ง์ํฉ๋๋ค.
Partitioned INDEX์ ๊ฒฝ์ฐ Normal Index๋ง DPL์ ์ง์ํฉ๋๋ค.
๋ณธ ๋ฌธ์๋ ์ด 2๊ฐ์ ์ฅ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋์ฉ๋ ๋ฐ์ดํฐ ์ด๊ด ๋ฐฉ๋ฒ์ ์์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
๐
๊ฐ ์ํฉ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๐
LONG ์ปฌ๋ผ์ด ํฌํจ๋ 255๊ฐ ์ด์์ Column์ ๊ฐ์ง ํ ์ด๋ธ์ DPL์ ๋ฏธ์ง์ํฉ๋๋ค.
LOB ๊ณ์ด์ ์ปฌ๋ผ์ด ์๋ ๊ฒฝ์ฐ DPL๋ง ์ง์ํฉ๋๋ค.
INDEX๊ฐ ์์ฑ๋์ด ์๋ ๊ฒฝ์ฐ DPL๋ง ์ง์ํฉ๋๋ค.
Table Migrator
ํ ์ด๋ธ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋๋ฐ ์ต์ ํ๋ ํด
SELECT ์ต์ ์ CONDITION, PARTITION์ ์ง์
DPL, P-DPL์ ์ง์
DB Link + DPI
SOURCE DB์ ๋ง๋ Gateway๋ฅผ ์ค์นํ๊ณ DB LINK๋ฅผ ์ค์
APPEND ํํธ๋ฅผ ํตํด DPI๋ฅผ ์ง์
SAM ํ์ผ + tbLoader
๋ณํ๊ฐ ์๋ ํ ์ด๋ธ์ ๋ํด SAM ํ์ผ๋ก ๋ด๋ ค tbLoader๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋
DPL, P-DPL์ ์ง์
External Table + DPI ์ด์ฉ๊ฐ๋ฅ
Parallel Processing
O
O
O
O
Select Condition
X
O
O
X
Direct Path Load
O
O
O
O
Multi Thread
O
O
X
O
Rows Per Commit
X
X
X
O
ํ DB, ๋์ฉ๋ DB ๋ฑ์ Tibero DBMS ์ ํ ์ด๊ด ๋ฐฉ๋ฒ์ ๋ํด ์๋ดํฉ๋๋ค.
DB ์ ํ ์ ๊ณ ๋ ค์ฌํญ์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.
table_migrator.zip ๋ฐ์ด๋๋ฆฌ ์์ถ ํ์ผ์ ํด์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
migrator_cli.jar
Table Migrator ํด๋์ค
toolcom.jar
UNIX ๊ณ์ด์ธ ๊ฒฝ์ฐ migrator.sh, Windows ๊ณ์ด์ธ ๊ฒฝ์ฐ๋ migrator.bat ํ์ผ์ ์์ ํฉ๋๋ค.
classpath ์ค์ ์ Source DB์ JDBC ๋๋ผ์ด๋ฒ๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธํ๊ณ ์์ ๊ฒฝ์ฐ ์ถ๊ฐํฉ๋๋ค.
์๋๋ Table Migrator๋ฅผ ์คํํ๋ 2๊ฐ์ง ์๋ก UNIX ๊ณ์ด์ธ ๊ฒฝ์ฐ migrator.sh, Windows ๊ณ์ด์ธ ๊ฒฝ์ฐ๋migrator.bat ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์ปจํธ๋กค ํ์ผ์ ์ค์ ํ ํ ์คํํฉ๋๋ค.
์ํฉ๋ณ DBMS ์ฑ๋ฅ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
Tibero ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๊ฐ ์ง์ ํ ํฌ๊ธฐ๋งํผ ๋ฐ์ธ๋ฉ๋๊ธฐ ์ ๊น์ง ์๋ฒ๋ก ์ ๋ก๋๋์ง ์์ผ๋ฏ๋ก ๋์ฉ๋ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋ํ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
tbLoader์์ ์ ๊ณตํ๋ ์๋์ ์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๊ดํฉ๋๋ค.
Tibero ์ ํธ๋ฆฌํฐ ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ
internal-jdbc-16.jar
Tibero JDBC ๋๋ผ์ด๋ฒ
migrator.bat
Windows ๊ณ์ด ์คํ ํ์ผ
migrator.sh
POSIX ๊ณ์ด ์คํ ํ์ผ
migrator.properties.eg
Table Migrator ์ปจํธ๋กคํ์ผ
msllogger-14.jar
๋ก๊ทธ ๊ด๋ จ ์ธํฐํ์ด์ค ํด๋์ค
antlr-4.3-complete.jar
๋ฌธ์์ด ํ์ฑ ๊ด๋ จ ์ธํฐํ์ด์ค ํด๋์ค
postgresql-42.2.27.jre6.jar
PostgreSQL JDBC ๋๋ผ์ด๋ฒ
java -classpath migrator_cli.jar:ojdbc6.jar:postgresql-42.2.27.jre6.jar:msllogger-
14.jar:toolcom.jar:internal-jdbc-16.jar:antlr-4.3-complete.jar com.m.migrator.Main "$@โsh 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:internal:thin:@127.0.0.2:8629:t7 \
TARGET_USER=dbtech TARGET_PASSWORD=dbtechsh migrator.sh PROPERTY_FILE=migrator.propertiesDirect Path Load ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ๋ ํ ์ด๋ธ์ ์กด์ฌํ๋ ์ธ๋ฑ์ค์ ์์ฑ ๋ฐฉ๋ฒ์ MULTI INSERT ๋ฐฉ์๊ณผ FAST BUILD ๋ฐฉ์ ์ค์ ํ๋ ์ ํํ ์ ์์ต๋๋ค.
์๋๋ ์ธ๋ฑ์ค ์์ฑ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช ์ ๋๋ค.
์ธ๋ฑ์ค ์์ฑ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ์ปจํธ๋กค ํ์ผ์ ์ธ๋ถ ๋ด์ฉ์ ์๋์ ๊ฐ์ต๋๋ค.
rows
์ฌ์ฉ์๊ฐ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋ํ ๋ Commit์ ์ํํ ๋ ์ฝ๋ ๊ฐ์๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ (๋จ, tbLoader๋ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ ์ง์ ํ ๋ ์ฝ๋์ ๊ฐ์๋ฅผ ์ ํํ ๋ง์ถฐ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ง๋ ์์)
bindsize
๋ฐฐ์ด์ ์ฌ์ฉ๋ ์ต๋ ๋ฐ์ดํธ ์๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : 64KB)
MULTI INSERT INDEXES
์ธ๋ฑ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋ ๋จ์๋ก ์ต์ ํ ํ์ฌ ํ ๋ฒ์ ์์ฑ
FAST BUILD INDEXES
๊ธฐ์กด์ ์ธ๋ฑ์ค๋ฅผ ๋ฌด์ํ๊ณ ๋ฐ์ดํฐ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ก๋ํ์ฌ ๋ค์ ์์ฑ
# MULTI INSERT INDEXES ์ ์ฉ
$cat control.ctl
LOAD DATA
...
MULTI INSERT INDEXES
...
(...)
# FAS BUILD INDEXES ์ ์ฉ
$cat control.ctl
LOAD DATA
...
FAST BUILD INDEXES
...
(...)๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Tibero DBMS๋ก ์ ํํ๋ Table Migrator ์ ํธ๋ฆฌํฐ์ ๋ํด ์๋ดํฉ๋๋ค.
๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Tibero๋ก ์ ํํ๋ Table Migrator ์ ํธ๋ฆฌํฐ์ ๋ํด ์๋ดํฉ๋๋ค.
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 ๋๋ผ์ด๋ฒ
Table Migrator ๋ฐ์ด๋๋ฆฌ๋ฅผ Source DB ๋๋ Target DB(Tibero)์ ์์นํฉ๋๋ค.
์ด๊ด ๋์ Table์ ์์ฑ DDL์ ์ด์ฉํ์ฌ Target DB(Tibero)์ ๋ฏธ๋ฆฌ ์์ฑํฉ๋๋ค.
Table Migrator ์ ํธ๋ฆฌํฐ๋ฅผ ์คํํ ๋ ์๋์ ๊ฐ์ ์ฌํญ์ ์ ์ํฉ๋๋ค.
Source DB์ Table์ ์ด๊ดํ ๊ฒฝ์ฐ Target DB(Tibero)์ Tablespace, User, Table์ ๋ฏธ๋ฆฌ ์์ฑ ํ TableMigrator๋ฅผ ์ํํฉ๋๋ค.
DBMS ์ ์ ๊ณ์ ์ DBA ๊ถํ์ด ํ์ํฉ๋๋ค.
๋ง์ฝ, ๊ณ ๊ฐ์ฌ์ ์ ์ฑ ์ DBA ๊ถํ์ ๋ถ์ฌ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ ์ด๊ด ์์ ์ ์ํ ์ฌ์ฉ์๋ณ ์ต์ํ์ ๊ถํ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
long, longraw ์ปฌ๋ผ์ ์ง์ํ์ง ์์ต๋๋ค.
index๊ฐ ์กด์ฌํ๋ Table์ผ ๊ฒฝ์ฐ DPL ์ต์ ์ ์ฌ์ฉํ์ง ๋ชปํฉ๋๋ค.
๋ณธ ๋ฌธ์๋ ์ด 3๊ฐ์ ์ฅ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Table Migrator ์ ํธ๋ฆฌํฐ ์คํ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๐
ํ๋ผ๋ฏธํฐ ์ง์ ๊ณผ์ ์ ์์์ ํจ๊ป ์ค๋ช ํฉ๋๋ค.
๐
ํ์ฌ DB์์ Tibero DB๋ก ์ ํ์ ๋ํ ์์์ ๋๋ค.
๐
Oracle
ojdbc6.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
MSSQL
sqljdbc4.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
DB2
Oracle (SOURCE DB)
CONNECT, SELECT ANY TABLE, SELECT ANY DICTIONARY, ALTER SESSION
Tibero (TARGET DB)
CONNECT, SELECT ANY TABLE, SELECT ANY DICTIONARY, RESOURCE, ALTER SESSION
db2jcc.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
MYSQL
mysql-connector-java-5.1.4.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
PostgreSQL
postgresql-42.2.27.jre6.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
Sybase ASE
jconn3.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
Informix
ifxjdbc.jar (Source DB ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ ์ฌ์ฉ)
๋์ฉ๋ ๋ฐ์ดํฐ ์ด๊ด ๋ฐฉ๋ฒ์ ์์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
๋ฐ์ดํฐ ์ด๊ด์ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ด์ฉํ์ฌ ์ํํ ์ ์๊ณ ์ด๋ก ์ธํด ์ํ ์๋๋ฅผ ์ต์ ํ ์ํฌ ์ ์์ต๋๋ค.
์๋๋ ์์ ์์ ์ฌ์ฉํ๋ ํ ์ด๋ธ ์ ๋ณด์ ๋๋ค.
CREATE TABLE DBTECH.LINEITEM (
L_ORDERKEY NUMBER,
L_PARTKEY NUMBER,
L_SUPPKEY NUMBER,
L_LINENUMBER NUMBER,
L_QUANTITY NUMBER(15,2),
L_EXTENDEDPRICE NUMBER(15,2),
L_DISCOUNT NUMBER(15,2),
L_TAX NUMBER(15,2),
L_RETURNFLAG CHAR(1),
L_LINESTATUS CHAR(1),
L_SHIPDATE DATE,
L_COMMITDATE DATE,
L_RECEIPTDATE DATE,
L_SHIPINSTRUCT CHAR(25),
L_SHIPMODE CHAR(10),
L_COMMENT VARCHAR(44)
) NOLOGGING;Table Migrator ๋ฐฉ๋ฒ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ดํ๋ ์์์ ๋๋ค.
migrator.properties ํ์ผ์ ์์ฑ๊ฐ์ ์ค์ ํฉ๋๋ค.
$ cat migrator.properties
#######################
# Source DB Connection
#######################
# Source DB type (Optional, generic | default | ORACLE)
# ORACLE option needs SOURCE_LOGIN_AS property
# GENERIC option needs SOURCE_DRIVER property
SOURCE_TYPE=ORACLE
# Source DB JDBC driver class name
# Use with SOURCE_TYPE=GENERIC option
SOURCE_DRIVER=oracle.jdbc.OracleDriver
#SOURCE_DRIVER=com.mysql.jdbc.Driver
# Source DB JDBC connection URL (Optional,
Default=jdbc:oracle:thin:@localhost:1521:orcl)
SOURCE_URL=jdbc:oracle:thin:@localhost:1539:orcl
#SOURCE_URL=jdbc:mysql://127.0.0.1:3306/mysql
# Source DB login ID (Optional, Default=sys)
#SOURCE_USER="user1"
SOURCE_USER=tibero
# Source DB login password (Optional, Default=oracle)
SOURCE_PASSWORD=tmax
# Oracle source DB login option (Optional, Default=sysdba)
# Use with SOURCE_TYPE=ORACLE option
SOURCE_LOGIN_AS=NORMAL
# Source table schema (Optional)
# Default value is the same with SOURCE_USER
#SOURCE_SCHEMA=SCOTT
#SOURCE_SCHEMA="dbo"
#SOURCE_SCHEMA=
# Source table name (Mandatory)
#SOURCE_TABLE=tableName1
#SOURCE_TABLE="tableName2"
#SOURCE_TABLE=bt_scen_tran
SOURCE_TABLE=t1
# Ignore deadlock error that occur during migration for the tables created using the dedup option
# Use when BATCH_THRESHOLD=1
# If not, Data integrity is not guaranteed
SOURCE_TABLE_DEDUPLICATE=N
#######################
# Target DB Connection
#######################
# Target DB type (Optional, DEFAULT)
TARGET_TYPE=DEFAULT
# Target DB JDBC driver class name
#TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver
TARGET_DRIVER=com.m.internal.jdbc.MInternalDriver
# Target DB JDBC connection URL (Optional,
Default=jdbc:internal:thin:@localhost:8629:tibero)
#TARGET_URL=jdbc:tibero:thin:@192.1.5.63:39208:tibero
TARGET_URL=jdbc:internal:thin:@localhost:59166:tibero
# Target DB login ID (Optional, Default=sys)
#TARGET_USER="user1"
TARGET_USER=tibero
# Target DB login password (Optional, Default=tibero)
TARGET_PASSWORD=tmax
# Target table schema (Optional)
# Default value is the same with TARGET_USER
# TARGET_SCHEMA=TIBERO
# Target table name (Optional)
# Default value is the same with SOURCE_TABLE
# TARGET_TABLE=t1
#################
# Data Extractor
#################
# Use parallel Extracting (Optional, Y | N Default=N)
EXTRACT_PARALLEL=N
# Number of data extractor thread (Optional, Default=1)
EXTRACT_THREAD_COUNT=1
# Use TSN(or SCN) option (Optional)
#SELECT_TSN=17322052
# Where conditions (Optional)
# ex. column1 > 10 AND column2 = 'abc'
#SELECT_CONDITION= c1>1
# Fetch size of source table cursor (Optional, Default=1024)
# Some DB is not supported this feature.
#SELECT_FETCH_SIZE=1024
# Source table partition name (Optional)
#SELECT_PARTITION=
# Source table subpartition name (Optional)
#SELECT_SUBPARTITION=subpar1
#SELECT_SUBPARTITION="subpart2"
#SELECT_SUBPARTITION=
# Ignore source/target DB character set (Optional, y | N )
SELECT_AS_BYTE=N
# db_file_multiblock_read_count (Optinal, Option for Oracle), Defalut=-1)
DB_FILE_MULTIBLOCK_READ_COUNT=-1
# Use parallel excution of SQL statements (Optinal, Option for Oracle), Defalut=N)
USE_PARALLEL_HINT=N
# Use with USE_PARALLEL_HINT=Y (Defalut=-1)
PARALLEL_HINT_CNT=-1
##############
# Data Loader
##############
# Use direct path loading (Optional, cpl | DPL)
# CPL means conventional path loading
# DPL means direct path loading I
NSERT_METHOD=dpl
# Use commit size option(Optinal, Default = commit once after loading)
# Use with INSERT_METHOD=CPL option
# set commit_size-1 to commit only once
COMMIT_SIZE=-1
# Use index disable option(Optional, Default = N, Y/N)
INDEX_DISABLE=N
# Use batch insert (Optional, Y | n)
# Use with INSERT_METHOD=CPL option
INSERT_BATCH=Y
# batch threshold size (Optional, Default=32)
BATCH_THRESHOLD=128
# Use parallel loading (Optional, Y | n)
INSERT_PARALLEL=N
# Number of data loader thread (Optional, Default=4)
# Use with INSERT_PARALLEL=Y option
INSERT_THREAD_COUNT=1
# Target table partition name (Optional)
#INSERT_PARTITION=
# Specifies whether to keep the column names of the source table case-sensitive.
(Optional, Y | n )
# If set to Y, the original column name format will be preserved by enclosing it in
double quotes.
# If set to N, the column name format will follow the database naming rules.
INSERT_COLUMN_NAME_CASE_SENSITIVE=N
# Use zero length string data migration as null (Optional, Y | n, Default=Y, Option ignored for Oracle)
# If set to N, the zero length data will be inserted as ' '.
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y
# Trim leading and trailing pad character of CHAR type data. (Optional, Y | n, Default=N)
#TRIM=
##############
# Common
##############
# Use MetaData Checking for DPL. (Optional, Default=Y)
CHECK_COLUMN_METADATA=N
# Log
LOG_LEVEL=INFO
LOG_FILE_NAME=tableMigrator.log
#LOG_DIR=Background Process๋ฅผ ์ด์ฉํ์ฌ ๋ณ๋ ฌ ํ๋ก์ธ์ฑ์ผ๋ก migrator๋ฅผ ์ํํฉ๋๋ค.
์ํ ๊ฒฐ๊ณผ์ ๋ก๊ทธ ํ์ผ์ ํ์ธํฉ๋๋ค.
DB Link๋ก insert ... select ... ๊ตฌ๋ฌธ์ ์ํํ ๋ parallel ํํธ๋ฅผ ์ฌ์ฉํ๋ฉด select๋ serialํ๊ฒ ๋์ํ๊ณ , insert์ผ ๋๋ง parallel๋ก ๋์ํฉ๋๋ค. ๋ฐ๋ผ์ DB Link ์๋ณธ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ์๋ฒ์ ์ฌ์์ด ์ข์ ๊ฒฝ์ฐ parallel ํํธ๋ฅผ ์ฌ์ฉํ์ฌ view๋ฅผ ์์ฑํ๊ณ ํด๋น view๋ฅผ Tibero์์ selectํ๋ ๋ฐฉ์์ผ๋ก ์ด๊ดํ๋ฉด ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
์๋๋ DB Link ๋ฐฉ๋ฒ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ดํ๋ ์์์ ๋๋ค.
์ ์ฒด ๊ฑด์๋ฅผ ๊ท ๋ฑํ๊ฒ ๋๋ ์ ์๋ ์กฐ๊ฑด์ ๊ฒํ ํฉ๋๋ค.
๋ง์กฑํ๋ ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ SQL๋ฌธ์ ๋๋ ํ์ ๋ณ๋ ฌ ์ธ์ (ํฐ๋ฏธ๋ ๋๋ ๋ค๋ฅธ ์ปดํจํฐ)์ผ๋ก ์ํํ๋ฉฐ Temp์ Undo Tablespace ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋ง์ด ํ์ํฉ๋๋ค.
SQL๋ฌธ์ append, parallel ํํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
append Insertํ๋ ๋์ ํ ์ด๋ธ์ ๋ํด์ nologging ์ต์ ์ด ์ ์ฉ๋์์ด์ผ ํฉ๋๋ค.
parallel ํํธ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ํด๋น ์ธ์ ์ parallel dml ์ต์ ์ enableํด์ผ ํฉ๋๋ค.
์๋๋ ์ธ์ ์ด 2๊ฐ์ผ ๊ฒฝ์ฐ DB Link๋ฅผ ์ํํ๋ ์์ ๋๋ค.
์ธ์ 1์ํ L_LINESTATUS๊ฐ '0'์ ๋ํด์ Insertํฉ๋๋ค.
์ธ์ 2์ํ L_LINESTATUS๊ฐ 'F'์ ๋ํด์ Insertํฉ๋๋ค.
COMMIT๋ ๋ฐ์ดํฐ ํ์ธ
Loadํ SAM ํ์ผ์ n๋ฑ๋ถํ๊ณ ์ง์ ๋ก๋ฉ๊ณผ ๋ณ๋ ฌ ํ๋ก์ธ์ฑ์ ๋์์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ๋ฐฉ์์ผ๋ก ๋์คํฌ์์ wait๋ง ๋ฐ์ํ์ง ์๋๋ค๋ฉด ์ต์ ์ ์ํ ์๋๊ฐ ๋ณด์ฅ๋ฉ๋๋ค.
์๋๋ tbLoader ๋ฐฉ๋ฒ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ดํ๋ ์์์ ๋๋ค.
Unload(spool ๋๋ unload ์ ํธ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ unload) ๋ฐ SAM ํ์ผ์ ์ ์กํฉ๋๋ค.
Loadํ SAM ํ์ผ์ n๋ฑ๋ถ ํ์ฌ n๊ฐ์ SAM ํ์ผ์ ์ค๋นํฉ๋๋ค.
๊ฐ SAM ํ์ผ์ ์ฝ๋ n๊ฐ์ ์ปจํธ๋กค ํ์ผ์ ์์ฑํ๊ณ , ์์ฑํ ๋ append ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
์๋๋ 2๊ฐ์ ์ปจํธ๋กค ํ์ผ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Background Process๋ฅผ ์ด์ฉํ์ฌ ๋ณ๋ ฌ ํ๋ก์ธ์ฑ์ผ๋ก tbloader๋ฅผ ์คํํ๊ณ , tbloder ๋ช ๋ น์ด์ 'direct=y dpl_parallel=y' ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
์๋๋ 2๊ฐ์ SAM ํ์ผ ๋ฐ ์ปจํธ๋กค ํ์ผ์ ๊ฐ์ง๊ณ tbLoader๋ฅผ ์ํํ๋ ์์ ๋๋ค.
์ธ์ 1 ์ํ
์ธ์ 2 ์ํ
Table Migrator ์ ํธ๋ฆฌํฐ๋ก Oracle(Source DB)์์ Tibero(Target DB)๋ก DBMS ์ ํ์ ์ํํ๋ ์์ ์ ๋๋ค.
Oracle์ ํ ์คํธ Table, ๋ฐ์ดํฐ, ์ ์ํ ๊ณ์ ์ ์์ฑํฉ๋๋ค.
Oracle์ ํ ์คํธ Table, ๋ฐ์ดํฐ, ์ ์ํ ๊ณ์ ์ ์์ฑํฉ๋๋ค.
$ cat run.sh
# dbtech.lineitem ํ
์ด๋ธ (์กฐ๊ฑด l_linestatus='0'์ ํด๋นํ๋ ๋ฐ์ดํฐ)
nohup migrator.sh SOURCE_TYPE=ORACLE \
SOURCE_URL=jdbc:oracle:thin:@localhost:1521:ORCL \
SOURCE_USER=dbtech SOURCE_PASSWORD=dbtech SOURCE_LOGIN_AS=NORMAL \
SOURCE_SCHEMA=dbtech SOURCE_TABLE=lineitem \
TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero \
TARGET_USER=dbtech TARGET_PASSWORD=dbtech SELECT_CONDITION="l_linestatus='O'" >
migrator_a_set.log &
# dbtech.lineitem ํ
์ด๋ธ (์กฐ๊ฑด l_linestatus='F'์ ํด๋นํ๋ ๋ฐ์ดํฐ)
nohup migrator.sh SOURCE_TYPE=ORACLE \
SOURCE_URL=jdbc:oracle:thin:@localhost:1521:ORCL
\ SOURCE_USER=dbtech SOURCE_PASSWORD=dbtech SOURCE_LOGIN_AS=NORMAL \
SOURCE_SCHEMA=dbtech SOURCE_TABLE=lineitem \
TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero \
TARGET_USER=dbtech TARGET_PASSWORD=dbtech SELECT_CONDITION="l_linestatus='F'" >
migrator_b_set.log &# dbtech.lineitem ํ
์ด๋ธ์ ์กฐ๊ฑด l_linestatus='0' migrator ์ํ ๋ก๊ทธ ํ์ธ
$ cat migrator_a_set.log
=== Parameters ===
PROPERTY_FILE=migrator.properties
SOURCE_TYPE=ORACLE
SOURCE_URL=jdbc:oracle:thin:@localhost:1521:ORCL
SOURCE_USER=dbtech
SOURCE_PASSWORD=************
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=dbtech
SOURCE_TABLE=lineitem
TARGET_TYPE=DEFAULT
TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero
TARGET_USER=dbtech
TARGET_PASSWORD=************
SELECT_CONDITION=l_linestatus='F'
SELECT_FETCH_SIZE=1024
SELECT_AS_BYTE=N
INSERT_METHOD=DPL
INSERT_BATCH=Y
INSERT_PARALLEL=Y
INSERT_THREAD_COUNT=4
==================
[E0]1373322363068 - STARTED
[L0]1373322363189 Loader started
[L1]1373322363192 Loader started
[L2]1373322363196 Loader started
[L3]1373322363198 Loader started
[L1] 1000
[L0] 1000
[L3] 1000
[L2] 1000
... ์ค๋ต ...
[E0]1373322793890 - TOTAL Extracted ROWS: 3004998
[L3]1373322793913 TOTAL Loaded ROWS: 617366
[L0]1373322793921 TOTAL Loaded ROWS: 893541
[L1]1373322793924 TOTAL Loaded ROWS: 898889
[L2]1373322793935 TOTAL Loaded ROWS: 595202
Loading is ended.
Elapsed Time : 431636
ADD BATCH : 0
EXECUTE BATCH : 0
[VERIFICATION] Source Info : dbtech.lineitem: 3004998 Rows, Target Info :
dbtech.lineitem : 3004998 Rows [OK]
# dbtech.lineitem ํ
์ด๋ธ์ ์กฐ๊ฑด l_linestatus='F' migrator ์ํ ๋ก๊ทธ ํ์ธ
$ cat migrator_b_set.log
=== Parameters ===
PROPERTY_FILE=migrator.properties
SOURCE_TYPE=ORACLE
SOURCE_URL=jdbc:oracle:thin:@localhost:1521:ORCL
SOURCE_USER=dbtech
SOURCE_PASSWORD=************
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=dbtech
SOURCE_TABLE=lineitem
TARGET_TYPE=DEFAULT
TARGET_URL=jdbc:tibero:thin:@localhost:8629:tibero
TARGET_USER=dbtech
TARGET_PASSWORD=************
SELECT_CONDITION=l_linestatus='O'
SELECT_FETCH_SIZE=1024
SELECT_AS_BYTE=N
INSERT_METHOD=DPL
INSERT_BATCH=Y
INSERT_PARALLEL=Y
INSERT_THREAD_COUNT=4
==================
[E0]1373322363042 - STARTED
[L0]1373322363168 Loader started
[L1]1373322363172 Loader started
[L2]1373322363176 Loader started
[L3]1373322363215 Loader started
[L1] 1000
[L0] 1000
[L3] 1000
[L2] 1000
...(์ค๋ต)
[E0]1373322795287 - TOTAL Extracted ROWS: 2996217
[L1]1373322795290 TOTAL Loaded ROWS: 767331
[L3]1373322795303 TOTAL Loaded ROWS: 759888
[L2]1373322795312 TOTAL Loaded ROWS: 739667
[L0]1373322795314 TOTAL Loaded ROWS: 729331
Loading is ended.
Elapsed Time : 432951
ADD BATCH : 0
EXECUTE BATCH : 0
[VERIFICATION] Source Info : dbtech.lineitem: 2996217 Rows, Target Info :
dbtech.lineitem : 2996217 Rows [OK]-- nologging ํ
์ด๋ธ ํ์ธ
select logging from user_tables where table_name = 'LINEITEM';
-- DB Link๋ฅผ ํตํด ITAS ์ํ (appned)
insert /*+ append */ into dbtech.lineitem b
select * from lineitem@olink where l_linestatus='O';-- dml ๋ณ๋ ฌ ํ๋ผ๋ฏธํฐ ํ์ฑํ
alter session enable parallel dml;
-- DB Link๋ฅผ ํตํด ITAS ์ํ (parallel)
insert /*+ parallel(b 4) */ into dbtech.lineitem b
select * from lineitem@olink where l_linestatus='O';-- ์ธ์
1๊ณผ ์ธ์
2์์ ์
๋ ฅํ ์ต์ข
๋ฐ์ดํฐ
SQL> select l_linestatus, count(*) from dbtech.lineitem@olink group by l_linestatus;
L_LINESTATUS COUNT(*)
------------ --------
F 2996217
O 3004998
2 rows selectedSQL> 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
select * from lineitem@olink where l_linestatus='O';
3004998 rows inserted.
Total elapsed time 00:07:07.806974
SQL> commit;
Commit completed.
Total elapsed time 00:00:00.000307SQL> 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
select * from lineitem@olink where l_linestatus='F';
2996217 rows inserted.
Total elapsed time 00:07:01.692934
SQL> commit;
Commit completed.
Total elapsed time 00:00:00.000307SQL> select count(*) from dbtech.lineitem;
COUNT(*)
-----------
6001215
1 row selected.# SAM ํ์ผ์ ํน์ ๊ธฐ์ค์ผ๋ก N๊ฐ๋ก ํ์ผ์ ๋๋๋ค.
# ๋๋ ํ์ผ ๋ง๋ค tbLoader Control ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
# aa ์ปจํธ๋กค ํ์ผ
$ cat 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_ORDERKEY,
L_PARTKEY,
L_SUPPKEY,
L_LINENUMBER,
L_QUANTITY,
L_EXTENDEDPRICE,
L_DISCOUNT,
L_TAX,
L_RETURNFLAG,
L_LINESTATUS,
L_SHIPDATE,
L_COMMITDATE,
L_RECEIPTDATE,
L_SHIPINSTRUCT,
L_SHIPMODE,
L_COMMENT)
# ab ์ปจํธ๋กค ํ์ผ
$ cat 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_ORDERKEY,
L_PARTKEY,
L_SUPPKEY,
L_LINENUMBER,
L_QUANTITY,
L_EXTENDEDPRICE,
L_DISCOUNT,
L_TAX,
L_RETURNFLAG,
L_LINESTATUS,
L_SHIPDATE,
L_COMMITDATE,
L_RECEIPTDATE,
L_SHIPINSTRUCT,
L_SHIPMODE,
L_COMMENT)$ cat run.sh
# aa ํ์ผ tbLoader ๋ช
๋ น
nohup tbloader userid=dbtech/dbtech@tibero control=lineitem.ctl.aa
direct=y dpl_parallel=y &
# ab ํ์ผ tbLoader ๋ช
๋ น
nohup tbloader userid=dbtech/dbtech@tibero control=lineitem.ctl.ab
direct=y dpl_parallel=y &-- lineitem.tbl.aa.log:
tbLoader 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Data File : lineitem.tbl.aa
Bad File : lineitem.tbl.aa.bad Discard File : lineitem.tbl.aa.dsc
Table 'LINEITEM' was loaded from the data file.
COLUMN_NAME POSITION DATATYPE
--------------------- ----------- -----------------
L_ORDERKEY 1 CHARACTER
L_PARTKEY 2 CHARACTER
L_SUPPKEY 3 CHARACTER
L_LINENUMBER 4 CHARACTER
L_QUANTITY 5 CHARACTER
L_EXTENDEDPRICE 6 CHARACTER
L_DISCOUNT 7 CHARACTER
L_TAX 8 CHARACTER
L_RETURNFLAG 9 CHARACTER
L_LINESTATUS 10 CHARACTER
L_SHIPDATE 11 DATE
L_COMMITDATE 12 DATE
L_RECEIPTDATE 13 DATE
L_SHIPINSTRUCT 14 CHARACTER
L_SHIPMODE 15 CHARACTER
L_COMMENT 16 CHARACTER
Table LINEITEM :
------------------
0 Rows were skipped.
3000608 Rows were requested to load.
3000608 Rows were loaded successfully.
0 Rows were failed to load because of some errors
0 Rows were discarded.
0 Rows were failed to load because of some errors
Elapsed time was: 00:00:33.670898-- lineitem.tbl.ab.log:
tbLoader 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Data File : lineitem.tbl.ab
Bad File : lineitem.tbl.ab.bad
Discard File : lineitem.tbl.ab.dsc
Table 'LINEITEM' was loaded from the data file.
COLUMN_NAME POSITION DATATYPE
----------------------------- ----------- -----------
L_ORDERKEY 1 CHARACTER
L_PARTKEY 2 CHARACTER
L_SUPPKEY 3 CHARACTER
L_LINENUMBER 4 CHARACTER
L_QUANTITY 5 CHARACTER
L_EXTENDEDPRICE 6 CHARACTER
L_DISCOUNT 7 CHARACTER
L_TAX 8 CHARACTER
L_RETURNFLAG 9 CHARACTER
L_LINESTATUS 10 CHARACTER
L_SHIPDATE 11 DATE
L_COMMITDATE 12 DATE
L_RECEIPTDATE 13 DATE
L_SHIPINSTRUCT 14 CHARACTER
L_SHIPMODE 15 CHARACTER
L_COMMENT 16 CHARACTER
Table LINEITEM :
------------------
0 Rows were skipped.
3000607 Rows were requested to load.
3000607 Rows were loaded successfully.
0 Rows were failed to load because of some errors
0 Rows were discarded.
0 Rows were failed to load because of some errors
Total Elapsed Time: 00:00:33.795058--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;
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.
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 dbtech.board)
SQL> grant select on dbtech.board to dbtech_test;
Grant succeeded.
--DBTECH_TEST ๊ณ์ ์ ๊ถํ ๋ถ์ฌ(select any dictionary)
SQL> grant select any dictionary to dbtech_test;
Grant succeeded.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, select any dictionary to dbtech;
Granted.
SQL> conn dbtech/dbtech
Connected to Tibero.
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 'BOARD' created.
SQL> exit
Disconnected.
$ ls -lrt
-rw-r--r--. 1 tibero dba 1340431 Nov 15 15:29 antlr-4.3-complete.jar
-rw-r--r--. 1 tibero dba 1376 Nov 15 15:29 ANTLR4_License.txt
-rw-r--r--. 1 tibero dba 1604783 Nov 15 15:29 internal-jdbc-16.jar
-rw-r--r--. 1 tibero dba 167 Nov 15 15:29 migrator.bat
-rw-r--r--. 1 tibero dba 8313 Nov 15 15:29 migrator.properties.eg
-rw-r--r--. 1 tibero dba 170 Nov 15 15:29 migrator.sh
-rw-r--r--. 1 tibero dba 167137 Nov 15 15:29 migrator_cli.jar
-rw-r--r--. 1 tibero dba 352917 Nov 15 15:29 msllogger-14.jar
-rw-r--r--. 1 tibero dba 1320 Nov 15 15:29 pgjdbc_License.txt
-rw-r--r--. 1 tibero dba 850563 Nov 15 15:29 postgresql-42.2.27.jre6.jar
-rw-r--r--. 1 tibero dba 4054 Nov 15 15:29 readme.txt
-rw-r--r--. 1 tibero dba 123556 Nov 15 15:29 toolcom.jar
-rwxr-xr-x. 1 tibero dba 4210517 Nov 16 13:54 ojdbc6.jar
$sh migrator.sh SOURCE_TYPE=ORACLE SOURCE_URL=jdbc:oracle:thin:@localhost:1525:oraclesb SOURCE_USER=dbtech_test SOURCE_PASSWORD=dbtech_test SOURCE_LOGIN_AS=NORMAL SOURCE_SCHEMA=dbtech SOURCE_TABLE=board TARGET_URL=jdbc:internal:thin:@localhost:6213:JSH_T7_DB TARGET_USER=dbtech TARGET_PASSWORD=dbtech TARGET_SCHEMA=dbtech TARGET_TABLE=board
SOURCE_USER=dbtech_test SOURCE_PASSWORD=dbtech_test SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=dbtech SOURCE_TABLE=board
TARGET_URL=jdbc:internal:thin:@localhost:6213:JSH_T7_DB TARGET_USER=dbtech
TARGET_PASSWORD=dbtech TARGET_SCHEMA=dbtech TARGET_TABLE=board
INFO[16:51:45,676][main]TableMigrator.initAndDoMigrate()(1429)
********************************************************************************
*
* Start Log for table migrator.
* Vendor: tibero
* Product: table migrator
* Version: 263750
*
* Trace is started on 16:51:45.675
* Log level: INFO
*
********************************************************************************
INFO[16:51:45,679][main]TableMigrator.initAndDoMigrate()(1431)
=== Parameters ===
SOURCE_TYPE=ORACLE
SOURCE_DRIVER=oracle.jdbc.OracleDriver
SOURCE_URL=jdbc:oracle:thin:@localhost:1525:oraclesb
SOURCE_USER=DBTECH_TEST
SOURCE_PASSWORD=************
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=dbtech
SOURCE_SCHEMAORIGN=dbtech
SOURCE_TABLE=board
SELECT_SUBPARTITION=
BATCH_THRESHOLD=128
EXTRACT_PARALLEL=N
EXTRACT_THREAD_COUNT=1
SOURCE_TABLE_DEDUPLICATE=N
USE_PARALLEL_HINT=N
PARALLEL_HINT_CNT=-1
USE_OBJECT_PARALLEL_HINT=N
TARGET_TYPE=DEFAULT
TARGET_DRIVER=com.m.internal.jdbc.MInternalDriver
TARGET_URL=jdbc:internal:thin:@localhost:6213:JSH_T7_DB
TARGET_USER=DBTECH
TARGET_PASSWORD=************
TARGET_SCHEMA=dbtech
TARGET_TABLE=board
COMMIT_SIZE=-1
INDEX_DISABLE=N
SELECT_FETCH_SIZE=1024
SELECT_AS_BYTE=N
DB_FILE_MULTIBLOCK_READ_COUNT=-1
INSERT_METHOD=dpl
INSERT_BATCH=Y
INSERT_PARALLEL=N
INSERT_THREAD_COUNT=1
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y
DPL_LOG_UNIT=500
LOG_FILE_NAME=tableMigrator.log
LOG_LEVEL=INFO
CHECK_COLUMN_METADATA=N
==================
INFO[16:51:45,784][TabMig[16:51:45.680]]TbCmdConnection.connect()(58) Connect To The Source- URL : jdbc:oracle:thin:@localhost:1525:oraclesb ID : DBTECH_TEST
INFO[16:51:45,983][TabMig[16:51:45.680]]TbCmdConnection.connect()(58) Connect To The Target- URL : jdbc:internal:thin:@localhost:6213:JSH_T7_DB ID : DBTECH
INFO[16:51:46,228][TabMig[16:51:45.680]]TableMigrator.migrate()(256) SOURCE_TYPE : ORACLE
INFO[16:51:46,228][TabMig[16:51:45.680]]TableMigrator.migrate()(257) SOURCE_SCHEMA : dbtech
INFO[16:51:46,228][TabMig[16:51:45.680]]TableMigrator.migrate()(275) SOURCE_TABLE : board
INFO[16:51:46,229][TabMig[16:51:45.680]]TableMigrator.migrate()(277) TARGET_TYPE : DEFAULT
INFO[16:51:46,229][TabMig[16:51:45.680]]TableMigrator.migrate()(278) TARGET_SCHEMA : dbtech
INFO[16:51:46,229][TabMig[16:51:45.680]]TableMigrator.migrate()(293) TARGET_TABLE : board
INFO[16:51:46,236][TabMig[16:51:45.680]]OracleTableInfo.getTableInfo()(52) SELECT column_name, data_type, virtual_column, hidden_column FROM DBA_TAB_COLS WHERE OWNER=? AND TABLE_NAME=? order by column_id
INFO[16:51:46,292][TabMig[16:51:45.680]]OracleTableInfo.getTableInfo()(55) setString(1) : DBTECH
INFO[16:51:46,292][TabMig[16:51:45.680]]OracleTableInfo.getTableInfo()(58) setString(2) : BOARD
INFO[16:51:46,308][TabMig[16:51:45.680]]OracleTableInfo.getTableInfo()(125) SELECT iot_type FROM dba_tables WHERE OWNER = ? and TABLE_NAME = ?
INFO[16:51:46,309][TabMig[16:51:45.680]]OracleTableInfo.getTableInfo()(128) setString(1) : DBTECH
INFO[16:51:46,309][TabMig[16:51:45.680]]OracleTableInfo.getTableInfo()(131) setString(2) : BOARD
INFO[16:51:46,311][TabMig[16:51:45.680]]TableMigrator.migrate()(375) start extracting thread...
INFO[16:51:46,315][TabMig[16:51:45.680].E0]OracleDataExtractor.run()(86) run
INFO[16:51:46,315][TabMig[16:51:45.680].E0]DataExtractor.loggingTabAndColInfo()(531) Extract Information
INFO[16:51:46,316][TabMig[16:51:45.680].E0]DataExtractor.loggingTabAndColInfo()(532) table name : DBTECH.BOARD
INFO[16:51:46,316][TabMig[16:51:45.680].E0]DataExtractor.loggingTabAndColInfo()(538) columns [6] - "NO" "EMPNO" "TITLE" "REGDATE" "HIT" "CONTENTS"
INFO[16:51:46,318][TabMig[16:51:45.680].E0]OracleDataExtractor.run()(93) TabMig[16:51:45.680].E0 - sql : SELECT '0', t."NO", t."EMPNO", t."TITLE", t."REGDATE", t."HIT", t."CONTENTS" FROM DBTECH.BOARD t
INFO[16:51:46,327][TabMig[16:51:45.680]]TableMigrator.migrate()(536) start loading thread...
INFO[16:51:46,328][TabMig[16:51:45.680]]DataLoader.setRemainThr()(85) Set Remain Threads [0], to [1]
INFO[16:51:46,332][L0]TbDPLDataLoader.setDirPathStream()(525) DPL Loading Information
INFO[16:51:46,332][L0]TbDPLDataLoader.setDirPathStream()(526) table name : dbtech.board
INFO[16:51:46,332][L0]TbDPLDataLoader.setDirPathStream()(532) columns [6] - "NO" "EMPNO" "TITLE" "REGDATE" "HIT" "CONTENTS"
INFO[16:51:46,337][TabMig[16:51:45.680].E0]OracleDataExtractor.run()(282)
Total Extract Time : 20ms
Time For Putting Row on Queue : 0ms
Time For Executing Query Time : 12ms
Time For Executing Fetch Time : 4ms
Percentage of Query and Fetch => 80.00%
INFO[16:51:46,337][TabMig[16:51:45.680].E0]OracleDataExtractor.run()(283) TOTAL Extracted ROWS: 5 (source schema = DBTECH, source table = BOARD)
INFO[16:51:46,338][TabMig[16:51:45.680]]TableMigrator.migrate()(580) Extractor termFlag : [true], isError : [false]
INFO[16:51:46,338][TabMig[16:51:45.680].E0]DataExtractor.setTermFlag()(543) Set termFlag and isError : [false]
INFO[16:51:46,338][TabMig[16:51:45.680].E0]DataExtractor.setTermFlag()(544) complete
INFO[16:51:46,354][L0.TbDPLDataLoader0]DataLoaderManager.run()(47) run
INFO[16:51:46,361][L0.TbDPLDataLoader0]DataLoaderManager.run()(240) Total Insert Time : 29ms
Time For Taking Row From Queue: 0ms
Time For Executing Batch : 4ms
Time For Executing Commit : 2ms
Percentage of Batch and Commit Time => 20.69%
INFO[16:51:46,361][L0.TbDPLDataLoader0]DataLoaderManager.run()(242) [L0.TbDPLDataLoader0]1700121106361 TOTAL Loaded ROWS: 5 (target schema = dbtech, target table = board)
INFO[16:51:46,374][TabMig[16:51:45.680]]TableMigrator.migrate()(613) Loader remainThr : [0], isError : [false]
INFO[16:51:46,374][L0.TbDPLDataLoader0]DataLoader.finish()(80) Decrement remainThr : [0] and isError : [false]
INFO[16:51:46,375][TabMig[16:51:45.680]]TableMigrator.resetThrs()(1359) terminate extract thread...1
INFO[16:51:46,375][TabMig[16:51:45.680]]TableMigrator.resetThrs()(1373) terminate loader thread...1
INFO[16:51:46,375][TabMig[16:51:45.680]]TableMigrator.migrate()(627) [VERIFICATION] Source Info : dbtech.board : 5 Rows, Target Info : dbtech.board : 5 Rows [OK]
INFO[16:51:46,375][TabMig[16:51:45.680]]TableMigrator.migrate()(686) extract conneciton close
INFO[16:51:46,377][TabMig[16:51:45.680]]TableMigrator.migrate()(695) loader connection close
INFO[16:51:46,377][TabMig[16:51:45.680]]TableMigrator.migrate()(705) Elapsed Time (milliseconds) : 697
INFO[16:51:46,377][TabMig[16:51:45.680]]TableMigrator.migrate()(707) End Migration๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ผ๋ฏธํฐ ์ง์ ๊ณผ์ ์ ์์์ ํจ๊ป ์ค๋ช ํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ํ๋ ์ปจํธ๋กค ํ์ผ์ ๊ธฐ๋ณธ์ผ๋ก migrator.properties ํ์ผ๋ก ์ง์ ๋ฉ๋๋ค.
(migrator.properties ํ์ผ์ ์ค์ )
SOURCE_TYPE=ORACLE
SOURCE_DRIVER=oracle.jdbc.OracleDriver
SOURCE_URL=jdbc:oracle:thin:@localhost:1539:orcl
SOURCE_USER=sys
SOURCE_PASSWORD=oracle
SOURCE_LOGIN_AS=sysdba
SOURCE_SCHEMA=SCOTT
SOURCE_TABLE=t1
SOURCE_TABLE_DEDUPLICATE=N
TARGET_TYPE=DEFAULT
TARGET_DRIVER=com.m.internal.jdbc.MInternalDriver
TARGET_URL=jdbc:internal:thin:@localhost:59166:tibero
TARGET_USER=tibero
TARGET_PASSWORD=tmax
TARGET_SCHEMA=TIBERO
TARGET_TABLE=t1
EXTRACT_PARALLEL=N
EXTRACT_PARALLEL_RANGE_BY_ROWID=N
EXTRACT_THREAD_COUNT=1
SELECT_TSN=17322052
SELECT_CONDITION= c1>1
SELECT_FETCH_SIZE=1024
SELECT_PARTITION=part1
SELECT_SUBPARTITION=subpar1
SELECT_AS_BYTE=N
DB_FILE_MULTIBLOCK_READ_COUNT=-1
OPTIMIZER_HINT=/*+ FULL(t) PARALLEL(t, 4) */
USE_PARALLEL_HINT=N
USE_OBJECT_PARALLEL_HINT=N
PARALLEL_HINT_CNT=-1
INSERT_METHOD=dpl
COMMIT_SIZE=-1
INDEX_DISABLE=N
INSERT_BATCH=Y
BATCH_THRESHOLD=128
DPL_LOG_UNIT=500
INSERT_PARALLEL=N
INSERT_THREAD_COUNT=1
INSERT_PARTITION=
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y
TRIM=
BYTEA_TO_BLOB=N
TEXT_TO_CLOB=N
MONITORING_LOG=N
MONITORING_LOG_UNIT=500
MONITORING_SESS_STAT=CPU used by this session;parse time cpu;parse count(hard)
CHECK_COLUMN_METADATA=N
ROW_QUEUE_TYPE=ARRAY(10240)
VERIFY_TABLE=N
VERIFY_TABLE_NAME=VERIFY_TBL
LOG_LEVEL=INFO
LOG_FILE_NAME=tableMigrator.log
LOG_DIR=๊ฐ ํ๋ผ๋ฏธํฐ์ ์ค๋ช ์ ์๋์ ๊ฐ์ต๋๋ค.
SOURCE_TYPE
Source DB์ ํ์ ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ โ ORACLE(๊ธฐ๋ณธ๊ฐ) : Source DB๊ฐ Oracle์ผ ๋ ์ค์ ํ๋ฉฐ SOURCE_LOGIN_AS ํ๋ผ๋ฏธํฐ์ ์ค์ ์ด ํ์ โ GENERIC : Source DB๊ฐ ์ผ๋ฐ DB์ผ ๋ ์ค์ ํ๋ค. ํน์ ๋ฒค๋๋ณ API๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ์ค JDBC API๋ง์ ์ด์ฉํ์ฌ ๋์ํ๋ฉฐ SOURCE_DRIVER ํ๋ผ๋ฏธํฐ์ ์ค์ ์ด ํ์ โ DEFAULT : Source DB๊ฐ Tibero์ผ ๋ ์ค์
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 โ MYSQL : com.mysql.jdbc.Driver โ PostgreSQL : org.postgresql.Driver โ Sybase ASE : com.sybase.jdbc3.jdbc.SybDriver โ Informix : com.informix.jdbc.IfxDriver
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 โ MYSQL : jdbc:mysql://127.0.0.1:3306/mysql โ PostgreSQL : jdbc:postgresql://127.0.0.1:5432/postgres โ Sybase ASE : jdbc:sybase:Tds:127.0.0.1:7100?ServiceName=sybase โ Informix : jdbc:informix-sqli://127.0.0.1:18220/informix:INFORMIXSERVER=informix
SOURCE_USER
Source DB์ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์ ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌธ์๋ก ์ธ์๋๋ฉฐ ํฐ๋ฐ์ดํ๋ฅผ ํตํด ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ : sys)
SOURCE_PASSWORD
Source DB์ ๋ก๊ทธ์ธ ํ๋ ์ฌ์ฉ์ ํจ์ค์๋๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : oracle)
SOURCE_LOGIN_AS
Oracle์ ์ ์ํ ๋ ๊ถํ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ๋ก SOURCE_TYPE=ORACLE์ธ ๊ฒฝ์ฐ์๋ง ์ค์ โ SYSDBA(๊ธฐ๋ณธ๊ฐ) โ NORMAL
SOURCE_SCHEMA
Source DB์์ ์ด๊ดํ๋ Table์ ์ค์ ์ฌ์ฉ์ ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌธ์๋ก ์ธ์๋๋ฉฐ ํฐ๋ฐ์ดํ๋ฅผ ํตํด ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ : SOURCE_USER์์ ์ค์ ํ ์ฌ์ฉ์ ์ด๋ฆ)
SOURCE_TABLE
Source DB์์ ์ด๊ดํ๋ Table ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌธ์๋ก ์ธ์๋๋ฉฐ ํฐ๋ฐ์ดํ๋ฅผ ํตํด ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅ
(ํ์ ์ ๋ ฅ)
SOURCE_TABLE_DEDUPLICATE
dedup ์ต์ ์ด ์ฌ์ฉ๋ ํ ์ด๋ธ์ ์ด๊ด ๋์ ๋ฐ์ํ๋ deadlock ์๋ฌ๋ฅผ ๋ฌด์ํ๋ ํ๋ผ๋ฏธํฐ
BATCH_THRESHOLD=2 ์ด์์ผ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๋ณด์ฅ๋์ง ์์ผ๋ฏ๋ก BATCH_THRESHOLD=1์ธ ๊ฒฝ์ฐ์๋ง ์ค์ - Y - N
TARGET_TYPE
Target DB์ ํ์ ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ โ DEFAULT : Target DB๊ฐ Tibero์ผ ๋ ์ค์
TARGET_DRIVER
Target DB์ ์ ์ํ ๋ ์ฌ์ฉํ๋ JDBC Driver ํด๋์ค๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : com.m.internal.jdbc.MInternalDriver)
TARGET_URL
EXTRACT_PARALLEL
SOURCE DB์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ Thread์ parallel ๋์ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ SOURCE_TYPE์ด Oracle, default, postgresql์ธ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
row๊ฐ rowid Hashing์ ํตํด ๋๋ ์ง๋ฏ๋ก ์ด๊ด ๋์ rowid ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ง ์๋๋ก ์ฃผ์ - Y - N (๊ธฐ๋ณธ๊ฐ)
EXTRACT_PARALLEL_RANGE_BY_ROWID
rowid์ ๋ฒ์๋ฅผ ์ง์ ํ์ฌ row๋ฅผ ๋๋๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
SOURCE_TYPE=Oracle, EXTRACT_PARALLEL=Y์ธ ๊ฒฝ์ฐ์๋ง ์ค์ ๊ฐ๋ฅora_hash function์ ์ง์ํ์ง์๋ Oracle 9๋ฒ์ ์ดํ์์ ์ฑ๋ฅ์ ์ด์ ์กด์ฌ
IOT ํ ์ด๋ธ์ ํด๋น ์ต์ ์ฌ์ฉ๋ถ๊ฐ - Y - N
EXTRACT_THREAD_COUNT
INSERT_METHOD
๋ฐ์ดํฐ์ INSERT ๋ฐฉ์์ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ
โ DPL(๊ธฐ๋ณธ๊ฐ) : DIRECT PATH LOADING โ CPL : CONVENTIONAL PATH LOADING
COMMIT_SIZE
TARGET_DB์ ๋ฐ์ดํฐ๋ฅผ commitํ๋ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ
INSERT_METHOD=cpl์ธ ๊ฒฝ์ฐ์๋ง ๋์ํ๋ฉฐ COMMIT_SIZE=-1๋ก ์ค์ ํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ธ commit only once๋ก ๋์ (๊ธฐ๋ณธ๊ฐ : commit once after loading)
INDEX_DISABLE
BYTEA_TO_BLOB
bytea ํ์ ์ blob ํ์ ์ผ๋ก ์ ํํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ - Y - N(๊ธฐ๋ณธ๊ฐ)
TEXT_TO_CLOB
text ํ์ ์ clob ํ์ ์ผ๋ก ์ ํํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ - Y - N(๊ธฐ๋ณธ๊ฐ)
MONITORING_LOG
๋ชจ๋ํฐ๋ง ๋ก๊ทธ ์ถ๋ ฅ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
์ด๊ด์ ์ฌ์ฉ๋ ๋์์ ๋ํ ํ๊ท ์๊ฐ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅ - Y - N (๊ธฐ๋ณธ๊ฐ)
MONITORING_LOG_UNIT
๋ชจ๋ํฐ๋ง ๋ก๊ทธ์์ ์๊ฐ์ ํ๊ท ๋ผ ๋ ์ฌ์ฉํ ๋ก์ฐ์ ์๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : 500)
MONITORING_SESS_STAT
Target DB์ JDBC ์ฐ๊ฒฐ URL์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : jdbc:internal:thin:@localhost:8629:tibero)
TARGET_USER
Target DB์ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์ ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌธ์๋ก ์ธ์๋๋ฉฐ ํฐ๋ฐ์ดํ๋ฅผ ํตํด ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ : sys)
TARGET_PASSWORD
Target DB์ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์ ํจ์ค์๋๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : tibero)
TARGET_SCHEMA
Target DB์ ์ด๊ด ๋ฐ๋ Table์ ์ค์ ์ฌ์ฉ์ ์ด๋ฆ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌธ์๋ก ์ธ์๋๊ณ ํฐ๋ฐ์ดํ๋ฅผ ํตํด ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ : TARGET_USER์์ ์ค์ ํ ์ฌ์ฉ์ ์ด๋ฆ)
TARGET_TABLE
Target DB์ ์ด๊ด ๋ฐ๋ Table ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌธ์๋ก ์ธ์๋๊ณ ํฐ๋ฐ์ดํ๋ฅผ ํตํด ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ : SOURCE_TABLE์์ ์ค์ ํ Table ์ด๋ฆ)
๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ Thread์ ์๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
EXTRACT_PARALLEL_RANGE_BY_ROWID ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ ์ด๋ธ์ extent ์์ ๋ฐ๋ผ ์ ์ ํ ๊ฐ์ผ๋ก ์ค์ (๊ธฐ๋ณธ๊ฐ : 1)
SELECT_TSN
ํน์ TSN (Oacle์์๋ SCN) ์์ ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : ๋ฏธ์ฌ์ฉ)
SELECT_CONDITION
Table ๋ฐ์ดํฐ ์ ์ฒด๊ฐ ์๋ ์กฐ๊ฑด์ ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ง ์ถ์ถํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : ๋ฏธ์ฌ์ฉ)
SELECT_FETCH_SIZE
Source DB์์ ์ถ์ถํด์จ ๊ฒฐ๊ณผ set์ fetch ํด์ค๋ ๋จ์ (row ์)๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : 1024)
SELECT_PARTITION
ํํฐ์ Table์์ ์ง์ ํ ํํฐ์ ์์๋ง ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : ๋ฏธ์ฌ์ฉ)
SELECT_SUBPARTITION
ํํฐ์ Table์์ ์ง์ ํ ์๋ธ ํํฐ์ ์์๋ง ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ SELECT_PARTITION ์ต์ ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ SELECT_PARTITION ์ต์ ์ด ์ ์ฉ (๊ธฐ๋ณธ๊ฐ : ๋ฏธ์ฌ์ฉ)
SELECT_AS_BYTE
Table์ char, varchar์ ๊ฐ์ ๋ฌธ์์ด์ ์ ์ฅํ๊ธฐ ์ํ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ๊ณผ ๋ค๋ฅธ ์บ๋ฆญํฐ์ ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ฌธ์์ด์ด ์ ์ฅ๋๋ฉด ๋ฌธ์์ด ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ๋ฌธ์์ด์ ์ ์์ ๋ฐฐ์ด ๋ถ๊ฐ
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ ๋ฌธ์์ด์ด ์๋ ๋ฐ์ด๋๋ฆฌ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๋ฐ์ด๋๋ฆฌ ํํ๋ก Tibero์ ์ฎ๊ธฐ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ - Y - N (๊ธฐ๋ณธ๊ฐ)
DB_FILE_MULTIBLOCK_READ_COUNT
์ด๊ด ์ ํด๋น ์ธ์ ์ ๋ํ DB_FILE_MULTBLOCK_READ_COUNT ๊ฐ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
SOURCE_TYPE=Oracle์ธ ๊ฒฝ์ฐ์๋ง ์ค์ ๊ฐ๋ฅํ๋ฉฐ ๊ฐ์ -1๋ก ์ค์ ์ ๋์ํ์ง ์์ (๊ธฐ๋ณธ๊ฐ : -1)
OPTIMIZER_HINT
SOURCE DB๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ SELECT ํ ๋ ์ฌ์ฉํ ํํธ๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
ํ ์ด๋ธ ์ด๋ฆ์ 't'๋ฅผ ์ฌ์ฉํ๋ฉฐ SOURCE_TYPE=Oracle, SOURCE_TYPE=Default์ธ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ ๋ง์ฝ USE_PARALLEL_HINT ์ต์ ๊ณผ ๋์์ ์ฌ์ฉ๋๋ค๋ฉด, OPTIMIZER_HINT ์ต์ ์ด ์ฐ์ ์ ์ผ๋ก ์ ์ฉ - ์ : OPTIMIZER_HINT=/*+ FULL(t) PARALLEL(t, 4)
USE_PARALLEL_HINT
SOURCE DB์์ ๋ฐ์ดํฐ๋ฅผ SELECT ํ ๋ PARALLEL ํํธ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ SOURCE_TYPE=Oracle, SOURCE_TYPE=Default์ธ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ - Y - N (๊ธฐ๋ณธ๊ฐ)
USE_OBJECT_PARALLEL_HINT
PARALLEL ํํธ ์ฌ์ฉ ์ Table ์ด๋ฆ์ ๋ช ์ํ ์ ์๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
ํด๋น ์ต์ ์ ํ์ฑํํ๊ธฐ ์ํด์๋ USE_PARALLEL_HINT=Y ์ค์ ์ด ํ์, SOURCE_DB๊ฐ Default, Oracle์ธ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ - Y - N (๊ธฐ๋ณธ๊ฐ)
PARALLEL_HINT_CNT
PARALLEL ํํธ ์ฌ์ฉ ์ DOP๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
ํด๋น ์ต์ ์ ํ์ฑํํ๊ธฐ ์ํด์๋ USE_PARALLEL_HINT=Y ์ค์ ์ด ํ์
(๊ธฐ๋ณธ๊ฐ : -1)
TARGET_TABLE์ INDEX๋ฅผ ์๋์ผ๋ก DISABLE ํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ - Y - N (๊ธฐ๋ณธ๊ฐ)
INSERT_BATCH
Table์ ๋ฐ์ดํฐ๋ฅผ Batch Insert ๋ฐฉ์์ผ๋ก load ํ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
INSERT_METHOD=CPL์ธ ๊ฒฝ์ฐ์๋ง ๋์ - Y - N
BATCH_THRESHOLD
TARGET_DB์ Batch๋ฅผ ์คํํ ๋ ๋จ์(row ์)๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
INSERT_METHOD=CPL, INSERT_BATCH=Y ์ธ ๊ฒฝ์ฐ์๋ง ๋์ํ๋ฉฐ -1 ๊ฐ์ ์ ๋ ฅํ๋ฉด ๋ฏธ ๋์ (๊ธฐ๋ณธ๊ฐ : 32)
DPL_LOG_UNIT
๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋ row์ ๋ก๋ฉ ๋จ์๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
INSERT_METHOD=DPL์ธ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ 0์ผ๋ก ์ค์ ํ๋ ๊ฒฝ์ฐ ๋ก๊ทธ๊ฐ ๋ฏธ ์ถ๋ ฅ (๊ธฐ๋ณธ๊ฐ : 500)
INSERT_PARALLEL
๋ฐ์ดํฐ๋ฅผ loadํ๋ Thread์ parallel ๋์ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ - Y(๊ธฐ๋ณธ๊ฐ) - N
INSERT_THREAD_COUNT
๋ฐ์ดํฐ loader thread ๊ฐ์๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ INSERT_PARALLEL=Y์ธ ๊ฒฝ์ฐ์๋ง ๋์ (๊ธฐ๋ณธ๊ฐ : 4)
INSERT_PARTITION
์ง์ ํ ํํฐ์ ์ ์ด๊ดํ ๊ฒฝ์ฐ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : ๋ฏธ์ฌ์ฉ)
INSERT_ZERO_LENGTH_STRING_AS_NULL
๊ธธ์ด๊ฐ 0์ธ String ํ์ ๋ฐ์ดํฐ๊ฐ ์ด๊ด ์ NULL๋ก ๋ค์ด๊ฐ๋๋ก ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ INSERT_ZERO_LENGTH_STRING_AS_NULL=N์ผ๋ก ์ค์ ์ ๊ธธ์ด๊ฐ 0์ธ ๋ฐ์ดํฐ๋ ๊ณต๋ฐฑ('')์ผ๋ก ๋ค์ด๊ฐ๋ฉฐ SOURCE_TYPE=Oracle์ธ ๊ฒฝ์ฐ ์ค์ ์ด ๋ฌด์ - Y(๊ธฐ๋ณธ๊ฐ) - N
TRIM
CHAR ํ์ ๋ฐ์ดํฐ์ ์ ํ, ํํ์ ์๋ pad ๋ฌธ์ ์ ๊ฑฐ - Y - N(๊ธฐ๋ณธ๊ฐ)
๋ชจ๋ํฐ๋งํ stat์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ
์ฌ๋ฌ๊ฐ์ stat์ ์ค์ ํ ๊ฒฝ์ฐ ;๋ก ๊ตฌ๋ถํด์ฃผ๋ฉฐ ํด๋น ์ต์ ์ SOURCE_TYPE=ORACLE์ธ ๊ฒฝ์ฐ์๋ง ์ค์ ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ : ๋ฏธ์ฌ์ฉ) - ์ : MONITORING_SESS_STAT=CPU used by this session;parse time cpu;parse count (hard)
CHECK_COLUMN_METADATA
INSERT_METHOD=dpl์ธ ๊ฒฝ์ฐ ์ด๊ดํ๊ธฐ ์ ์ SOURCE DB table๊ณผ TARGET DB table์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ ์ต์ - Y(๊ธฐ๋ณธ๊ฐ) - N
ROW_QUEUE_TYPE
์ถ์ถํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ queue ํ์ ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ EXTRACT_PARALLEL=Y, INSERT_PARALLEL=Y ์ธ ๊ฒฝ์ฐ SYNCHRO ํ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ข์ผ๋ฉฐ ARRAY ํ์ ์ ์ฌ์ด์ฆ ํน์ ๊ฐ๋ฅ - ARRAY (๊ธฐ๋ณธ๊ฐ : 10240) - SYNCHRO
VERIFY_TABLE
์ด๊ด ๊ฒ์ฆ ํ ์ด๋ธ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ - Y - N (๊ธฐ๋ณธ๊ฐ)
VERIFY_TABLE_NAME
๊ฒ์ฆ ํ ์ด๋ธ ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : VERIFY_TBL)
LOG_LEVEL
๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : INFO)
LOG_FILE_NAME
๋ก๊ทธ ํ์ผ ์ด๋ฆ์ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : tableMigrator.log)
LOG_DIR
๋ก๊ทธ ํ์ผ์ด ์์ฑ๋๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ (๊ธฐ๋ณธ๊ฐ : Migrator ์คํ ๊ฒฝ๋ก)