IT / / 2022. 11. 25. 16:01

[DB] 테이블 통계 Restore/SQL FLUSH/PLAN 확인

728x90

 

 

 

1. 특정 테이블 통계 Restore 방법

- DB 저장된 통계 확인 (DB 기본 설정으로 31 보관)
select table_name, to_char(stats_update_time,'YYYY/MM/DD HH24:MI:SS') from dba_tab_stats_history
where table_name in ('COEVD_PROMO_SKU') order by 1,2;


TABLE_NAME                    TO_CHAR(STATS_UPDAT
------------------------------ -------------------
COEVD_PROMO_SKU               2020/04/14 22:00:56
COEVD_PROMO_SKU               2020/04/15 22:00:57
.. 생략 ..
COEVD_PROMO_SKU               2020/05/13 22:01:06
COEVD_PROMO_SKU               2020/05/14 22:09:40


※ 위의 테이블은 거의 매일 통계 수집이 되고 있음 확인


- 통계 복구
begin
dbms_stats.restore_table_stats('EVDCOS','COEVD_PROMO_SKU',
to_timestamp('2020/05/14 22:00:00','YYYY/MM/DD HH24:MI:SS'));
end;
/


※ 위의 시간은 “지정시간” 이전의 마지막 통계로 복구 됨
'2020/05/14 22:00:00' 지정했으므로, 2020/05/13 22:01:06 복구


- 통계 정보 조회
select owner, table_name, to_char(last_analyzed,'YYYY/MM/DD HH24:MI:SS') from dba_tables
where last_analyzed like '2020/05%' and table_name='COEVD_PROMO_SKU'
order by 3;


OWNER                         TABLE_NAME                   TO_CHAR(LAST_ANALYZ
------------------------------ ------------------------------ -------------------
EVDCOS                        COEVD_PROMO_SKU              2020/05/13 22:01:06

2. 특정 SQL FLUSH

- 통계만 복구한다고 바로 플랜이 바뀌는건 아님.

- 관련 SQLhard parsing 되야 되므로, 메모리(shared_pool)에서 flush

- 특정 SQL_ID 알고 있을 경우 아래와 같이 수행
select address, hash_value from v$sqlarea where sql_id='ajn7b47sgyc27';


ADDRESS         HASH_VALUE
---------------- ----------
000000028A4088F0 4043255879


exec dbms_shared_pool.purge ('000000028A4088F0,4043255879','C');

 

3. PLAN 변경 확인

- v$sql_plan 통한 변경 여부 확인

- flush
select sql_id, PLAN_HASH_VALUE from v$sql_plan where sql_id='ajn7b47sgyc27';


SQL_ID        PLAN_HASH_VALUE
------------- ---------------
ajn7b47sgyc27        886140387
ajn7b47sgyc27
ajn7b47sgyc27
ajn7b47sgyc27


select sql_id, PLAN_HASH_VALUE from v$sql_plan where sql_id='ajn7b47sgyc27';


SQL_ID        PLAN_HASH_VALUE
------------- ---------------
ajn7b47sgyc27      3547501170
ajn7b47sgyc27
ajn7b47sgyc27
ajn7b47sgyc27

 

728x90

'IT' 카테고리의 다른 글

[DB] Undo Rollback 남은 시간 확인 방법  (0) 2023.03.07
[DB] Oracle idle Event 모니터링 시  (0) 2023.03.03
[IT] 컴퓨터 보안이란?  (0) 2021.07.05
[IT] SAP 이란?  (0) 2021.07.02
[IT] 유닉스  (0) 2021.06.28
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유