기술 정보
home
채널 소개
home

DBMS_STATS.EXPORT/IMPORT 를 이용한 통계 정보 이관

문서 유형
기술 정보
분야
관리/환경설정
키워드
TPR
스크립트
추출
테이블
통계정보
적용 제품 버전
6FS07PS
7FS02
7FS02PS

개요

특정 유저(스키마)의 테이블 통계 정보를 내보내기(EXPORT) 하여 타 유저 또는 다른 환경에 가져오(IMPORT) 하는 절차를 설명합니다.
이는 테스트 환경 간 통계 이관, 운영기 → 개발기 통계 공유 등에 활용할 수 있습니다.

통계 정보 이관 절차 요약

1.
통계 정보 수집 (통계정보 수집 필요시)
2.
통계 정보 확인
3.
통계 정보 저장용 테이블 생성
4.
통계정보 추출
5.
통계정보를 가진 테이블을 tbexport로 덤프
6.
덤프 파일을 tbimport로 데이터 Insert
7.
통계 정보 확인

방법

통계 정보 수집 (통계정보 수집 필요 시)
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
복사
통계 정보 확인 
통계 정보가 정상적으로 수집되어 있는지 확인합니다.
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
복사
통계 정보 저장용 테이블 생성
SQL> DBMS_STATS.CREATE_STAT_TABLE ('User_Name','Table_Name','TS_Name') 파라미터 설정 SQL> 결과 값으로 출력된 쿼리 수행 -쿼리 예시 ------------------------------------------- SQL> EXEC DBMS_STATS.CREATE_STAT_TABLE ('TIBERO','STATS_SAVE','USR'); -------------------------------------------
SQL
복사
통계정보 추출 
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'); -------------------------------------------
SQL
복사
통계정보를 가진 테이블을 tbexport로 덤프
$ tbexport username=tibero password=tmax sid=tibero1 port=8857 table=STATS_SAVE file=stats_save.dat log=stats_save.log
SQL
복사
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
SQL
복사
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); -------------------------------------------
SQL
복사
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); -------------------------------------------
SQL
복사
CASE 4) 통계 정보를 저장한 테이블은 동일하나 Import 할 유저명이 다를 경우
TIBERO에서 추출한 통계정보를 TIBERO1 유저에 Import합니다.
순서 1. 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; -------------------------------------------
SQL
복사
2. 통계 정보 데이터에 USER명 변경합니다. C5의 데이터를 통계 정보를 넣을 테이블 유저를 입력합니다.
SQL> update tibero1.stats_save set c5='TIBERO1';
SQL
복사
3. 통계 정보를 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
복사
통계 정보 확인
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
복사