문서유형ㅣ기술정보
분야ㅣ 관리/환경설정
적용제품버전ㅣ6FS07PS, 7FS02, 7FS02PS
문서번호ㅣTADTI014
개요
특정 유저(스키마)의 테이블 통계 정보를 내보내기(EXPORT) 하여 타 유저 또는 다른 환경에 가져오(IMPORT) 하는 절차를 설명합니다.
이는 테스트 환경 간 통계 이관, 운영기 → 개발기 통계 공유 등에 활용할 수 있습니다.
통계 정보 이관 절차 요약
- 통계 정보 수집 (통계정보 수집 필요시)
- 통계 정보 확인
- 통계 정보 저장용 테이블 생성
- 통계정보 추출
- 통계정보를 가진 테이블을 tbexport로 덤프
- 덤프 파일을 tbimport로 데이터 Insert
- 통계 정보 확인
방법
통계 정보 수집 (통계정보 수집 필요 시)
WHERE절에 통계 정보 수집이 필요한 유저를 입력합니다.
SQL> set linesize 150 SQL> SELECT 'EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME =>'''||OWNER||''', TABNAME => '''||TABLE_NAME||''');' FROM DBA_TABLES WHERE OWNER='TIBERO'; SQL> 결과 값으로 출력 된 쿼리 수행 -쿼리 예시 ------------------------------------------- SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME =>'TIBERO', TABNAME => 'A'); -------------------------------------------
통계 정보 확인
통계 정보가 정상적으로 수집되어 있는지 확인합니다.
SQL> SELECT 'SELECT OWNER, TABLE_NAME, LAST_ANALYZED FROM DBA_TABLES WHERE TABLE_NAME='''||TABLE_NAME||''' ORDER BY OWNER;' FROM DBA_TABLES WHERE OWNER='TIBERO' ; SQL> 결과 값으로 출력 된 쿼리 수행 -쿼리 예시 ------------------------------------------- SQL> SELECT OWNER, TABLE_NAME, LAST_ANALYZED FROM DBA_TABLES WHERE TABLE_NAME='A' ORDER BY OWNER; -------------------------------------------
통계 정보 저장용 테이블 생성
SQL> DBMS_STATS.CREATE_STAT_TABLE ('User_Name','Table_Name','TS_Name') 파라미터 설정
SQL> 결과 값으로 출력된 쿼리 수행
-쿼리 예시
-------------------------------------------
SQL> EXEC DBMS_STATS.CREATE_STAT_TABLE ('TIBERO','STATS_SAVE','USR');
-------------------------------------------
통계정보 추출
stattab 값에 통계정보가 저장된 테이블을 입력합니다.
SQL> SELECT 'EXEC DBMS_STATS.EXPORT_TABLE_STATS(OWNNAME =>'''||OWNER||''', TABNAME => '''||TABLE_NAME||''', stattab =>''STATS_SAVE'');' FROM DBA_TABLES WHERE OWNER='TIBERO'; SQL> 결과 값으로 출력된 쿼리 수행 -쿼리 예시 ------------------------------------------- ex) EXEC DBMS_STATS.EXPORT_TABLE_STATS(OWNNAME =>'TIBERO', TABNAME => 'A', stattab =>'STATS_SAVE'); -------------------------------------------
통계정보를 가진 테이블을 tbexport로 덤프
$ tbexport username=tibero password=tmax sid=tibero1 port=8857 table=STATS_SAVE file=stats_save.dat log=stats_save.log
tbimport로 통계 정보 Import
CASE 1) 다른 유저로 Import 예시 (TIBERO → TIBERO1)
$ tbimport username=tibero1 password=tmax sid=tibero1 port=8857 fromuser=tibero touser=tibero1 file=stats_save.dat log=stats_save_imp.log
CASE 2) 동일 유저 (Export & Import 대상 동일)
TIBERO에서 추출한 통계정보를 TIBERO 유저에 Import 합니다.
SQL> SELECT 'EXEC DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME =>'''||OWNER||''', TABNAME => '''||TABLE_NAME||''', STATTAB =>''STATS_SAVE'',NO_INVALIDATE => FALSE);' FROM DBA_TABLES WHERE OWNER='TIBERO'; SQL> 결과 값으로 출력된 쿼리 수행 -. 쿼리 예시 ------------------------------------------- ex) EXEC DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME =>'TIBERO', TABNAME => 'A', STATTAB =>'STATS_SAVE',NO_INVALIDATE => FALSE); -------------------------------------------
CASE 3) 통계 정보 소유자 ≠ Import 대상 유저
TIBERO1에서 추출한 통계정보를 TIBERO 유저에 Import합니다.
SQL> SELECT 'EXEC DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME =>'''||OWNER||''', TABNAME => '''||TABLE_NAME||''', STATTAB =>''STATS_SAVE'', STATOWN=>''TIBERO1'', NO_INVALIDATE => FALSE);' FROM DBA_TABLES WHERE OWNER='TIBERO'; SQL> 결과 값으로 출력된 쿼리 수행 -. 쿼리 예시 ------------------------------------------- ex) EXEC DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME =>'TIBERO', TABNAME => 'A', STATTAB =>'STATS_SAVE', STATOWN=>'TIBERO1', NO_INVALIDATE => FALSE); -------------------------------------------
CASE 4) 통계 정보를 저장한 테이블은 동일하나 Import 할 유저명이 다를 경우
TIBERO에서 추출한 통계정보를 TIBERO1 유저에 Import합니다.
tibero1에 통계 정보를 넣기 위하여 동일한 테이블 생성 or tbexport 시 tibero 유저에 대한 모든 테이블 덤프 후 Import합니다.
SQL> SELECT 'CREATE TABLE '||TABLE_NAME||' AS SELECT * FROM TIBERO.'||TABLE_NAME||';' FROM DBA_TABLES WHERE OWNER='TIBERO'; SQL> 결과 값으로 출력된 쿼리 수행 -. 쿼리 예시 ------------------------------------------- ex) CREATE TABLE A AS SELECT * FROM TIBERO.A; -------------------------------------------
- 통계 정보 데이터에 USER명 변경합니다. C5의 데이터를 통계 정보를 넣을 테이블 유저를 입력합니다.
SQL> update tibero1.stats_save set c5='TIBERO1';
- 통계 정보를 Import합니다.
SQL> SELECT 'EXEC DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME =>'''||OWNER||''', TABNAME => '''||TABLE_NAME||''', STATTAB =>''STATS_SAVE'',NO_INVALIDATE => FALSE);' FROM DBA_TABLES WHERE OWNER='TIBERO1'; SQL> 결과 값으로 출력된 쿼리 수행
통계 정보 확인
SQL> SELECT 'SELECT OWNER, TABLE_NAME, LAST_ANALYZED FROM DBA_TABLES WHERE TABLE_NAME='''||TABLE_NAME||''' ORDER BY OWNER;' FROM DBA_TABLES WHERE OWNER='TIBERO' ; SQL> 결과 값으로 출력 된 쿼리 수행