실습용 예제 user,table 생성
#!/bin/bash
#2017/03/29
#testcase_mig_fk.sh
#dong1lkim
TBL_CNT=0 #init TBL_CNT
while (($TBL_CNT <= 500))
do
PKTAB_NAME=TBL_PKTEST_echo $TBL_CNT
FKTAB_NAME=TBL_FKTEST_echo $TBL_CNT
sh cre_fktab.sh
echo $filename
ROW_CNT=0 #init cnt
while (($ROW_CNT <= 500))
do
sh insert_val_fktab.sh
let ROW_CNT+=1
done
let TBL_CNT+=1
echo -e "loop ends"
done
#!/BIN/BASH
#2017/03/29
#cre_fktab.sh
#DONG1LKIM
tbsql -s fktest2/tibero <<EOF
--SET ECHO ON --DEBUGGING
/*
CREATE TABLE $PKTAB_NAME (PK NUMBER
, PKTAB_COLA NUMBER
, PKTAB_COLB NUMBER
, PKTAB_COLC NUMBER
);
CREATE INDEX PK_echo $PKTAB_NAME
ON $PKTAB_NAME (PK) ONLINE NOLOGGING;
ALTER TABLE $PKTAB_NAME ADD PRIMARY KEY(PK) USING INDEX PK_echo $PKTAB_NAME
ENABLE;
*/
CREATE TABLE $PKTAB_NAME (PK NUMBER primary key
, PKTAB_COLA NUMBER
, PKTAB_COLB NUMBER
, PKTAB_COLC NUMBER
);
CREATE TABLE $FKTAB_NAME (FK NUMBER
, PKTAB_COLA NUMBER
, PKTAB_COLB NUMBER
, PKTAB_COLC NUMBER
, CONSTRAINT FK_echo $FKTAB_NAME
FOREIGN KEY (FK) REFERENCES $PKTAB_NAME(PK)
);
/*
CREATE TABLE $FKTAB_NAME (FK NUMBER
, PKTAB_COLA NUMBER
, PKTAB_COLB NUMBER
, PKTAB_COLC NUMBER
);
ALTER TABLE $FKTAB_NAME ADD FOREIGN KEY(FK) REFERENCES $PKTAB_NAME(PK);
*/
EXIT
/
EOF
#!/bin/bash
#2017/03/29
#insert_val_fktab.sh
#dong1lkim
tbsql -s fktest2/tibero <<EOF
INSERT INTO $PKTAB_NAME VALUES($ROW_CNT,$ROW_CNT,$ROW_CNT,$ROW_CNT);
INSERT INTO $FKTAB_NAME VALUES($ROW_CNT,$ROW_CNT,$ROW_CNT,$ROW_CNT);
EOF
기존 데이터베이스 export 백업
#FKTEST 소유 테이블 별도 관리하기 위해 usermode, remap_tablespace=usr:TBS_FKT_DAT 옵션으로 한 벌
tbexport username=sys password=tibero sid=tibero port=8629 user=fktest script=y rows=y index=n constraint=n remap_tablespace=usr:TBS_FKT_DAT file=exp_fkt_dat.dat log=exp_fkt_dat.log
#FKTEST 소유 인덱스 별도 관리하기 위해 usermode, remap_tablespace=usr:TBS_FKT_IDX 옵션으로 한 벌
tbexport username=sys password=tibero sid=tibero port=8629 user=fktest script=y rows=n index=y constraint=y remap_tablespace=usr:TBS_FKT_IDX file=exp_fkt_idx.dat log=exp_fkt_idx.log
#분리하고자 하는 업무 외 테이블/인덱스, role, function 이관을 위해 full 모드 한 벌
tbexport username=sys password=tibero sid=tibero port=8629 full=y
file=exp_full.dat log=exp_full_dat.log
import 이관
#이관 속도 향상 및 인덱스 분리를 위해 테이블 rows 먼저 이관. 사전에 유저,테이블 스페이스가 생성돼 있어야 한다.
tbimport username=sys password=tibero sid=tibero port=8629 user=fktest script=y rows=y index=n constraint=n file=exp_fkt_dat.dat log=imp_fkt_dat.log
#이후 index,constraint 별도로 이관
tbimport username=sys password=tibero sid=tibero port=8629 user=fktest script=y rows=n index=y constraint=y file=exp_fkt_idx.dat log=imp_fkt_idx.log
#누락된 데이터 및 object,source 들을 이관하기 위해 full 모드로 이관.
tbimport username=sys password=tibero sid=tibero port=8629 full=y file=exp_full.dat log=imp_full_dat.log