개요
이전에 적용했었던 테이블 통계 정보에 대한 복구 방법을 설명합니다.
방법
통계 정보 히스토리 테이블 정보 (기본 리텐션 31일) : SYS._STAT_TBL_HISTORY
•
통계 정보 히스토리 조회 쿼리 (테이블 단위, ANALYZETIME 컬럼으로 통계 수집 된 시점 확인)
SELECT DU.USERNAME
, DO.OBJECT_NAME
, SH.*
FROM DBA_OBJECTS DO
, DBA_USERS DU
, SYS._STAT_TBL_HISTORY SH
WHERE DO.OBJECT_ID = SH.OBJ_ID
AND DO.OWNER = DU.USERNAME
AND DO.OBJECT_TYPE = 'TABLE'
AND DU.USERNAME = '<owner>'
AND DO.OBJECT_NAME = '<table_name>'
ORDER BY TIMESTAMP ;
SQL
복사
테이블의 통계 정보를 지정된 시간(as_of_timestamp)으로 복원하는 방법
EXEC DBMS_STATS.RESTORE_TABLE_STATS('<owner>', '<table_name>', TO_TIMESTAMP('2023/12/11 09:49:04', 'YYYY/MM/DD HH24:MI:SS'), force=>TRUE);
SQL
복사
주의
실행 시, 통계가 수집 되었을 때 통계 수집 된 시점보다 1초 크게 선택해야 적용됩니다.
•
통계 복원 확인: DBA_TABLES, DBA_INDEXES 테이블의 LAST_ANALYZED 일자와 _STAT_TBL_HISTORY의 ANALYZETIME 통계 시점 일자와 일치하는지 확인합니다.