문서유형ㅣ기술정보
분야ㅣ마이그레이션
적용제품버전ㅣ Tibero6/Tibero7
문서번호ㅣ TMITI032
개요
본 문서는 Tibero의 tbexport 유틸리티에서 query 옵션을 사용하여 특정 조건에 맞는 데이터만 선택적으로 export하는 방법을 설명하는 예제입니다.
방법
1. tbexport query 옵션
Export될 데이터에 필터 조건을 지정합니다.
조건문으로 작성해야 될 부분이 문자일 경우
ex) \"where c1=\'테스트\'\"
조건문이 문자가 아닐 경우
ex) \"where c2=1\"
bash에서 오류가 발생할 경우
ex) "\"where c2=1\""- 모드에 상관없이 동작하지만, 원하지 않는 테이블에도 적용될 수 있으므로 주의합니다.
- Where 조건 앞과 뒤를 "\로 감싸주어야 합니다. 단, 조건절의 내용을 String 처리를 해야 한다면 "\"로 감싸주어야 합니다. (실행 전 조건절의 문자열을 반드시 확인 필요)
- bash에서 사용 후 오류 발생할 시 ""로 한번 더 감싸야 합니다.
- 지정된 조건에 의해 SQL 문장에서 문법(Syntax) 에러가 발생할 경우 조건을 적용하지 않고 다시 시도합니다.
(문법 오류 발생 시 조건이 적용되지 않은 채 export 될 수 있으므로, export 전·후 데이터 건수 검증 필요)
2. 시나리오
tbexport/tbimport 사용하여 대용량 로그성 일반 테이블의 월별 데이터를 새로운 파티션 테이블에 마이그레이션
2-1. 로그성 일반 테이블 생성
################################
일반 테이블 KKB.DUMP_TEST(Source)
################################
CREATE TABLE "KKB"."DUMP_TEST" (
"ID1" NUMBER,
"ID2" NUMBER,
"NAME" VARCHAR2(10),
"DATE1" VARCHAR2(8),
"DATE2" VARCHAR2(8),
"DATE3" DATE,
"PHONE" VARCHAR2(13),
"PRICE" NUMBER,
"QTY" NUMBER,
"TEST1" NUMBER,
"TEST2" VARCHAR2(5),
"TEST3" VARCHAR2(4))
PCTFREE 10 INITRANS 2 NOCOMPRESS NOLOGGING
STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR";
2-2. 파티션 테이블 생성(RANGE)
#######################################
파티션 테이블 KKB.DUMP_TEST_PART(Target)
#######################################
CREATE TABLE "KKB"."DUMP_TEST_PART" (
"ID1" NUMBER,
"ID2" NUMBER,
"NAME" VARCHAR2(10),
"DATE1" VARCHAR2(8),
"DATE2" VARCHAR2(8),
"DATE3" DATE,
"PHONE" VARCHAR2(13),
"PRICE" NUMBER,
"QTY" NUMBER,
"TEST1" NUMBER,
"TEST2" VARCHAR2(5),
"TEST3" VARCHAR2(4))
PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
TABLESPACE "USR"
PARTITION BY RANGE("DATE3")
(
PARTITION "PART_202501" VALUES LESS THAN (TO_DATE('2025-02-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202502" VALUES LESS THAN (TO_DATE('2025-03-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202503" VALUES LESS THAN (TO_DATE('2025-04-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202504" VALUES LESS THAN (TO_DATE('2025-05-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202505" VALUES LESS THAN (TO_DATE('2025-06-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202506" VALUES LESS THAN (TO_DATE('2025-07-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202507" VALUES LESS THAN (TO_DATE('2025-08-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202508" VALUES LESS THAN (TO_DATE('2025-09-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202509" VALUES LESS THAN (TO_DATE('2025-10-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202510" VALUES LESS THAN (TO_DATE('2025-11-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202511" VALUES LESS THAN (TO_DATE('2025-12-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_202512" VALUES LESS THAN (TO_DATE('2026-01-01', 'YYYY-MM-DD')) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
, PARTITION "PART_MAX" VALUES LESS THAN (MAXVALUE) PCTFREE 10 INITRANS 2 NOCOMPRESS LOGGING
STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4294967295 BUFFER_POOL DEFAULT)
TABLESPACE "USR"
);
2-3. 1개월 전 데이터 tbexport 수행
# REMAP_TABLE 옵션으로 Target 파티션 테이블명으로 백업
$ tbexport username='sys' password='tibero' port='8629' sid='tibero' file='/home/tibero/dump/dump_test1.dmp' log='/home/tibero/dump/dump_test.log' table=KKB.DUMP_TEST constraint=n index=n grant=n query="\"WHERE DATE3 BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'),-1) + (0/24) AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),-1)) + (23/24) + (59/60/24) + (59/60/60/24)\"" REMAP_TABLE=DUMP_TEST:DUMP_TEST_PART
2-4. 파티션 테이블(Target)에 tbimport 수행
# 테이블이 이미 존재하므로 ignore=y 옵션 사용
$ tbimport username='sys' password='tibero' port='8629' sid='tibero' file='/home/tibero/dump/dump_test1.dmp' log='/home/tibero/dump/dump_test_imp.log' table=KKB.DUMP_TEST_PART ignore=y
2-5. Source 일반 테이블 전월 데이터 건수 확인
SQL> SELECT COUNT(*) FROM DUMP_TEST
WHERE DATE3 BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'),-1) + (0/24) AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),-1)) + (23/24) + (59/60/24) + (59/60/60/24);
COUNT(*)
----------
423
1 row selected.
2-6. Target 파티션 테이블 전월 데이터 건수 확인
# 2025-11 데이터 확인
SQL> select count(*) from dump_test_part partition(part_202510);
COUNT(*)
----------
0
1 row selected.
SQL> select count(*) from dump_test_part partition(part_202511);
COUNT(*)
----------
423
1 row selected.