tbImport 유틸리티는 tbExport로 추출한 파일을 다른(혹은 동일한) 티베로 데이터베이스에 저장하는 기능을 수행한다.
tbImport의 수행은 tbExport와 달리 데이터가 변경되거나 오브젝트가 신규 구성(혹은 재구성)되므로 다음을 고려하여 tbExport보다 신중하게 작업 시간대를 선택하여야 한다.
1. tbImport 대상 오브젝트 및 관련 오브젝트들과 연관된 업무(조회, 변경 등)가 없어야 한다.
2. tbImport 작업 이후 데이터 및 오브젝트들의 이상 여부 검증 및 조치 시간이 충분해야 한다
3. tbImport 작업 또한 자원을 많이 사용하는 무거운 업무이므로 데이터베이스 부하가 적은 시간대여야 한다.
1. tbExport 시에 추출 대상 테이블의 크기가 클 경우 인덱스, 제약 조건, 통계 정보는 제외하고 추출할 것을 권고하였다. tbImport 작업 역시 해당 조건들을 제외하고 저장할 수 있는 옵션을 제공하므로 해당 조건들은 제외하고 import 후에수동 생성하는 것이 성능 및 데이터 검증면에서 매우 유리하다(물론 크기가 작은 경우는 단계별로 나누지 말고 한 번에 작업하는 것이 편리하다).
2. 이관 대상 데이터베이스에 동일한 테이블이 이미 존재할 경우에는 해당 테이블의 제약 조건에 따라 데이터가 이관되며 이로 인해 tbImport 수행 속도가 지연되고 몇몇 데이터가 제약 조건에 해당되어 누락될 수 있다. tbExport 시에 추출한 오브젝트들은 모두 생성 script를 포함하므로 이관 대상 데이터베이스의 동일한 오브젝트들은 모두 DROP하고 이관하는 것이 성능/검증면에서 모두 유리하다
3. 이미 존재하는 동일 오브젝트들의 DROP이 불가능하다면 최소한 다음 사항들을 고려하여 작업하는 것을 권고한다.
3-1. 제약 조건, 인덱스는 이관 전 DROP(혹은 비활성화)하고 이관 이후 생성(혹은 활성화한다).
3-2. 리두로그 발생을 최소화하기 위해 이관 전 nologging 처리하고 이관 후 logging 처리한다.
4. tbImport 이후 기존에 백업해둔 object 정보와 이관 대상 데이터베이스의 dba_objects 정보를 비교하여 이관 정상 여부를 검증해야 한다(대부분의 invaild 오브젝트 문제는 연관된 object가 신규생성(혹은 재생성)되는 과정에서 invaild가 된 것이므로 단순히 compile해주는 것만으로 해결이 가능하다).
5. 통계 정보를 제외하고 tbImport했다면 수동 생성해야 한다.
-- invaild object의 compile 쿼리 생성 -- (package body는 나머지 type들과 compile 쿼리가 상이하여 구분하여 생성) SELECT 'ALTER ' ||'PACKAGE'||' '||OWNER||'.'||OBJECT_NAME||' COMPILE BODY;' AS COMPDDL FROM DBA_OBJECTS WHERE OWNER = 'TESTOWNER' AND STATUS = 'INVALID' AND OBJECT_TYPE = 'PACKAGE BODY' ORDER BY OBJECT_TYPE, OBJECT_NAME; SELECT 'ALTER ' ||OBJECT_TYPE||' '||OWNER||'.'||OBJECT_NAME||' COMPILE;' AS COMPDDL FROM DBA_OBJECTS WHERE OWNER = 'TESTOWNER' AND STATUS = 'INVALID' AND OBJECT_TYPE 'PACKAGE BODY' ORDER BY OBJECT_TYPE, OBJECT_NAME; -- tbImport 대상 테이블들의 통계 정보 수집 쿼리 생성 SELECT 'EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'''||OWNER||''', TABNAME=>'''||TABLE_NAME||''',ESTIMATE_PERCENT=>100, METHOD_OPT=>''FOR ALL COLUMNS SIZE 200'');' FROM DBA_TABLES WHERE OWNER ='TESTOWNER' ORDER BY OWNER,TABLE_NAME;
tbImport 모드 또한 총 세 가지(전체 데이터베이스 모드, 사용자 모드, 테이블 모드)가 존재하며 tbExport 모드와 관계없이 동작된다.
각 모드는 tbImport 수행 시 매개변수 값을 지정하는 것으로 선택이 가능하다. 매개변수는 tbImport 모드 외에도 다음과 같은 종류들이 존재하며 tbimport 명령어로도 조회가 가능하다.
tibero:/tibero # tbimport tbexport tbexport 6.0 (FS04) 120037 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Patch files (FS04_CS_1601_b FS04_98340l FS04_103133a FS04_107483h FS04_110122a FS04_110306a FS04_111154b FS04_111345a FS04_111475a FS04_111665b FS04_111692a FS04_111922a FS04_111938c FS04_111941b FS04_111942a FS04_111944a FS04_112043c FS04_112166a FS04_112371a FS04_112481a FS04_112511a FS04_112530e FS04_112689e FS04_113174j FS04_113191b FS04_113587a FS04_113651a FS04_113708a FS04_113737a FS04_114105a FS04_114246a) Usage: tbimport [PARAMETER1=VALUE] [PARAMETER2=VALUE] ... Parameters: BIND_BUF_SIZE Specify the buffer size of DPL stream, default: 1M(1048576) CFGFILE Config file name COMMIT Commit after the insertion, default: N CONSTRAINT Import Constraint: Y/N, default: Y DBLINK Import DB Link: Y/N, default: Y --- (이하 생략)
매개변수 | 기본값 | 설명 |
---|---|---|
CFGFILE | Import 환경 파일 이름 | |
USERNAME | Import를 수행하는 사용자 계정 | |
PASSWORD | Import를 수행하는 사용자 암호 | |
IP | localhost | Import 대상 티베로 서버 IP |
PORT | 8629 | Import 대상 티베로 서버 Port |
SID | Import 대상 티베로 서버 SID | |
FILE | default.dat | Import 수행 시 생성되는 파일 이름 |
LOGDIR | Import의 로그가 기록될 파일을 저장할 디렉터리 이름을 입력한다. | |
LOG | tbExpImp_[년]_[월]_[일]_[시분초].log | Import 수행 시 생성되는 파일 이름 |
FULL | N | Import 모드, 전체 데이터베이스 대상 |
USER | Import 모드, 특정 사용자에 대상 (복수지정 가능) | |
TABLE | Import 모드, 특정 테이블에 대상 (복수지정 가능) | |
FROMUSER | FROM TO USER 모드에서 tbImport를 통해 변경이 될 원래의 소유자를 지정 | |
TOUSER | FROM TO USER 모드에서 tbImport를 통해 신규로 오브젝트들을 소유할 소유자를 지정 | |
COMMIT | N | insert작업 후에 commit을 수행(insert 작업의 단위는 다음과 같다.) -CPL로 import할 때 기본적으로 bindinsertbuffersize인 1MB를 넘었을 때 commit을 수행한다. 만약 LONG, LONG RAW 컬럼이 있다면 ROW 단위로 commit을 수행한다. -DPL로 import할 때 BIND_BUF_SIZE로 지정된 크기를 넘었을때 commit을 수행한다 |
INDEX | Y | 인덱스 Import 여부 |
GRANT | Y | 권한 Import 여부 |
CONSTRAINT | Y | 제약 조건 Import 여부 |
ROLE | Y | 롤 Import 여부 |
ROWS | Y | 통계 정보 Import 여부 |
TEMP_DIR | Import를 수행할 때 임시 덤프 파일들이 생성될 디렉터리 지정 | |
NATIONAL_CHARSET | Export 문자 셋 | Export한 언어 셋을 설정 |
SAVE_CREDENTIAL | 암호화한 USERNAME과 PASSWORD를 사용할 때 설정 사용 방법) -SAVE_CREDENTIAL 옵션을 사용하여 EXPIMP_WALLET 암호화 파일을 생성 -SAVE_CREDENTIAL=[EXPIMP_WALLET_FILE_NAME] -인식 우선순위 : commandline>cfgfile>EXPIMP_WALLET 파일 예시) SAVE_CREDENTIAL=/tmp/.expimp USERNAME=usernamePASSWORD=password exportSAVE_CREDENTIAL=/tmp/.expimp(환경변수 설정) |
SQL> drop table tiberotest.table01; Table 'TIBEROTEST.TABLE01' dropped. tibero:/tibero/exptest # tbimport USERNAME=sys PASSWORD=xxxxx SID=xxxxx PORT=11111 FILE=/tibero/exptest/exptest02.dat LOG=/tibero/exptest/imptest02.log TABLE=TIBEROTEST.TABLE01 INDEX=N # tbImport 역시 CFG 파일 사용이 가능하다. tbimport 6.0 (FS04) 120037 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Unpacking the file... Import character set: MSWIN949 the TABLE: TIBEROTEST.TABLE01: Thu Nov 17 15:17:36 KST 2016 Import national character set: UTF-16 importing schema: "TIBEROTEST" importing table "TABLE01" [3]TIBEROTEST.TABLE01 4/4 rows imported. Import completed successfully: Thu Nov 17 15:17:36 KST 2016 tibero:/tibero/exptest # tbsql tiberotest/xxxxx SQL> select index_name from user_indexes; INDEX_NAME ------------------------------- TABLE02IX TABLE03IX <--TABLE01IX는 제외되었음이 확인된다.
tibero:/tibero/exptest # tbimport USERNAME=sys PASSWORD=xxxxx SID=xxxxx PORT=11111 FILE=/tibero/exptest/exptest07.dat LOG=/tibero/exptest/imptest07.log FROMUSER=tiberotest TOUSER=tibero (import 후 확인) tibero:/tibero/exptest # tbsql sys/password SQL> select owner, table_name, tablespace_name from dba_tables where table_name in('TABLE01', 'TABLE02') order by 2; OWNER TABLE_NAME TABLESPACE_NAME ----------- ----------- -------------- TIBERO TABLE01 USERS TIBEROTEST TABLE01 COMDATA --user와 tablespace가 변경되었음이 확인된다. TIBERO TABLE02 USERS TIBEROTEST TABLE02 COMDATA tbimport 6.0 (FS04) 120037 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Unpacking the file... Import character set: MSWIN949 FROM_USER TIBEROTEST TO_USER TIBERO: Thu Nov 17 15:23:49 KST 2016 Import national character set: UTF-16 importing from schema: "TIBEROTEST" to schema "TIBERO" importing table "TABLE01" [3] TIBERO.TABLE01 4/4 rows imported. importing index "TABLE01IX" importing table "TABLE02" [0] TIBERO.TABLE02 4/4 rows imported. importing index "TABLE02IX" Import completed successfully: Thu Nov 17 15:23:51 KST 2016
- 강좌 URL : http://www.gurubee.net/lecture/4168
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.