DBDBDEEP
tbImport 본문
tbImport
개요
이 유틸리티를 통해 외부 파일에 저장된 스키마 객체를 Tibero 데이터베이스에 다시 저장하므로, tbExport 유틸리티와 함께 데이터베이스의 백업과 다른 머신 간의 데이터베이스 전송 등을 할 때 유용하다.
tbImport의 수행은 tbExport로 추출한 파일을 다른 (혹은 동일한) 데이테베이스에 저장하는 기능을 수행한다.
tbImport 의 수행은 데이터가 변경되거나 오브젝트가 신규 구성되기 때문에 tbexport 보다 신중히 작업 시간대를 선택한다.
tbImport 특징 및 사용 시 고려사항
1. tbExport 시에는 추출 대상 테이블의 크기가 클 경우 인덱스, 제약조건, 통계정보는 제외하고 추출할 것을 권고하였다.
tbImport 작업또한 해당조건을 제외하고 저장할 수 있는 옵션을 제공해서 import 후 수동 생성하는 것이 성능면에서 유리.
*!!그러나 값이 작으면 한번에 작업하는 것이 편리함 !!*
2. 이관 대상 데이터베이스에 동일한 테이블이 이미 존재하게 되면 해당 테이블의 제약조건에 따라 이관된다.
이로인해 수행속도 지연 / 몇몇데이터가 제약조건에 의해 누락될 수 있음.
따라서 'tbExport 시 추출한 오브젝트들이 모두 생성 Script를 포함' 하므로 동일한 오브젝트 모두 DROP 후 이관하는 것이 성능/검증면에서 유리
만약 존재하는 동일 오브젝트 들의 DROP이 불가능 하다면?
2.1 - 제약조건,인덱스는 이관 전 DROP 후 이관 이후 생성 혹은 활성화 한다.
2.2 - 리두로그 발생을 최소화하기 위해 이관 전 nologging 처리하고 이관 후 logging 처리한다.
3. tbImport 이후 기존에 백업해둔 object 정보와 이관 대상 데이터베이스의 dba_objects 정보를 비교하여 이관 정상 여부를 검증해야 한다
(대부분의 invaild 오브젝트 문제는 연관된 object가 신규생성(혹은 재생성)되는 과정에서 invaild가 된 것이므로 단순히 compile해주는 것만으로 해결이 가능하다).
- invaild object의 compile 쿼리 생성
-- (package body는 나머지 type들과 compile 쿼리가 상이하여 구분하여 생성)
* OWNER = SYS 인 이유는 TEST는 값이 없다 *
* STATUS = VALID 인 이유는 현재 값은 모두 VALID이기 때문이다. *
COMPDDL
--------------------------------------------------------------------------------
ALTERPACKAGE SYS.DB2_STANDARD COMPILE BODY;
ALTERPACKAGE SYS.DBMS_APM COMPILE BODY;
ALTERPACKAGE SYS.DBMS_AQ COMPILE BODY;
ALTERPACKAGE SYS.DBMS_AQADM COMPILE BODY;
ALTERPACKAGE SYS.DBMS_AQ_UTL COMPILE BODY;
ALTERPACKAGE SYS.DBMS_ASSERT COMPILE BODY;
ALTERPACKAGE SYS.DBMS_AUDIT_EVENT COMPILE BODY;
ALTERPACKAGE SYS.DBMS_DB2_TRANSLATOR COMPILE BODY;
ALTERPACKAGE SYS.DBMS_ERRLOG COMPILE BODY;
ALTERPACKAGE SYS.DBMS_JOB_WITH_NAME COMPILE BODY;
ALTERPACKAGE SYS.DBMS_METADATA COMPILE BODY;
ALTERPACKAGE SYS.DBMS_MSSQL_TRANSLATOR COMPILE BODY;
ALTERPACKAGE SYS.DBMS_MVIEW COMPILE BODY;
ALTERPACKAGE SYS.DBMS_MVIEW_REFRESH_UTIL COMPILE BODY;
ALTERPACKAGE SYS.DBMS_MVIEW_UTIL COMPILE BODY;
ALTERPACKAGE SYS.DBMS_REDEFINITION_STATS COMPILE BODY;
ALTERPACKAGE SYS.DBMS_RESOURCE_MANAGER COMPILE BODY;
ALTERPACKAGE SYS.DBMS_RESOURCE_MANAGER_PRIVS COMPILE BODY;
ALTERPACKAGE SYS.DBMS_SCHEDULER COMPILE BODY;
ALTERPACKAGE SYS.DBMS_SCHEDULER_CHAIN_INTERNAL COMPILE BODY;
ALTERPACKAGE SYS.DBMS_SERVER_ALERT COMPILE BODY;
ALTERPACKAGE SYS.DBMS_SESSION COMPILE BODY;
이하생략
이렇게 Invalid object compile 쿼리를 얻을 수 있음.
4. 통계 정보를 제외하고 tbImport했다면 수동 생성 해야 한다.
-- tbImport 대상 테이블들의 통계 정보 수집 쿼리 생성
'EXECDBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'''||OWNER||''',TABNAME=>'''||TABLE_
--------------------------------------------------------------------------------
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'TEST',
TABNAME=>'T1',ESTIMATE_PERCENT=>100,
METHOD_OPT=>'FOR ALL COLUMNS SIZE 200');
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'TEST',
TABNAME=>'T2',ESTIMATE_PERCENT=>100,
METHOD_OPT=>'FOR ALL COLUMNS SIZE 200');
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'TEST',
TABNAME=>'T3',ESTIMATE_PERCENT=>100,
METHOD_OPT=>'FOR ALL COLUMNS SIZE 200');
3 rows selected.
모드
Import 모드는 3가지가 존재하게 된다. DBA만 이 사용할 수 있고, 권한을 얻을 수 없는 경우 select any dictionary 권한을 부여하여 사용하는 것을 권장한다.
tbImport Option
tbimport 6.0 xxxxxx Copyright 2015 TmaxData Co., Ltd. All Rights Reserved.
Patch files (none)
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
DPL Use Direct Path Load: Y/N, default: N
ENCRYPTION_PASSWORD encryption password to decrypt dump file
EXP_SERVER_VER Specify the exported server version, default: 8
FILE Import dump file name, default: default.dat
FROMUSER FromUser toUser Mode: user name list(must be used with TOUSER parameter)
FULL Full Mode: Y/N, default: N
GRANT Import Grant: Y/N, default: Y
GEOM_ASBYTES Import the data to the geometry columns as bytes, default: N
IGNORE Ignore create error due to object existence: Y/N, default: N
INDEX Import Index: Y/N, default: Y
IO_BUF_SIZE Specify the buffer size of file I/O, default: 16M(16777216)
IP IP address, default: localhost
LOG Import script log file name
LOGDIR Import log directory
NATIONAL_CHARSET Specify the exported national character set, default is the exported character set
NO_PACK_DIR Import unpacked dump files from specified directory. If this option is specified, FILE parameter will be ignored.
PASSWORD User password
ROLE Import Role: Y/N, default: Y
PORT PORT number, default: 8629
PSM Import PSM: Y/N, default: Y
P_DPL Use Parallel DPL: Y/N, default: N
ROWS Import Table Rows: Y/N, default: Y
SAVE_CREDENTIAL Save your username and password to specified file
SCRIPT LOG THE DDL SCRIPT: Y/N, default: N
SEQUENCE Import Sequence: Y/N, default: Y
SID Database name
STATISTICS Import Statistics: Y/N, default: N
SYNONYM Import Synonym: Y/N, default: Y
TABLE Table Mode: table name list
TEMP_DIR Directory for the temporary raw dump files.
THREAD_CNT Thread Count, default: 4
TOUSER FromUser toUser Mode: user name list(must be used with FROMUSER parameter)
TRIGGER Import Trigger: Y/N, default: Y
USER User Mode: user name list
USERNAME Database user name
Import 수행하기
1. 유저모드로 추출했던 파일 (exptest.dat) 1개 테이블만 tbImport 하기.
SQL> drop table test.t1;
Table 'TEST.T1' dropped.
*******************************************************************
tibero error : 15163
tibero error : 24035
ㄴ> cent_prs_ts
tbImport 중 났던 error.
DROP TABLESPACE cent_prs_ts INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE prscu_ts INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE PRS_TIBERO_ts INCLUDING CONTENTS AND DATAFILES;
이렇게 테이블스페이스를 DROP 해주었더니 정상으로 되었다.
*******************************************************************
[tibero@tibero java]$ tbimport username=sys password=tibero sid=tibero port=8629 file=/home/tibero/tbexport/exptest.dat log=/home/tibero/tbexport/imptest.log table=test.t1
tbimport 6.0
Copyright 2015 TmaxData Co., Ltd. All Rights Reserved.
Unpacking the file...
Import character set: UTF-8
the TABLE: test.t1: Tue Oct 25 16:59:06 KST 2022
Import national character set: UTF-16
importing schema: "TEST"
importing table "T1"
[0] TEST.T1 1/1 rows imported.
importing index "_TEST_CON44600167"
importing constraint "_TEST_CON44600167"
Import completed successfully: Tue Oct 25 16:59:06 KST 2022
SQL> select * from test.t1;
C1 C2
---------- ----------
1 A
2. REMAP_TABLESPACE로 추출했던 파일의 유저를 변경하여 tbimport 하기
출처 : http://www.gurubee.net/lecture/4168
'Tibero' 카테고리의 다른 글
테이블 스페이스 관리 (0) | 2023.01.18 |
---|---|
Tibero Patch (0) | 2022.12.27 |
Tibero tbExport (0) | 2022.10.25 |
티베로 Error 내용 확인 (0) | 2022.10.25 |
Tibero Controlfile 백업을 이용한 데이터파일 이동 (0) | 2022.10.12 |