프린트 하기

내맘대로긍정이 알려주는

Oracle 23ai 신기능
무료 세미나 발표자료

다운로드 trending_flat

OS환경 : Oracle Linux 7.6 (64bit)

 

DB 환경 : Oracle Database 19.10.0.0

 

방법 : 오라클 19c v$sql이나 dba_hist_active_sess_history에 있는 sql이 dba_hist_sqlstat에 없는 이유

운영 업무를 하다 보면 아래 예시처럼

v$sql이나 dba_hist_active_sess_history 에는 존재하는, 존재했던 sql이 awr 데이터에는 없는 경우가 종종 있음

1
2
3
4
5
6
7
8
SQL>
select count(*from dba_hist_active_sess_history
where sql_id = '3bdsu2dqcgdhw';
=> 1502 row
 
select count(*from dba_hist_sqlstat
where sql_id = '3bdsu2dqcgdhw';
=> 0 row

 

 

이렇게 되는 이유는 1424839.1에 잘설명되어 있는데

V$SQL에서 DBA_HIST_SQLSTAT로의 데이터 수집은 특정 시점, 즉 AWR 스냅샷 중에 수행됨

기본적으로 오라클은 매시간 새 AWR 스냅샷을 생성함(스냅샷 주기는 조정가능)
해당 시간 동안 SQL 문이 무효화되었거나 shared pool에서 에이징 아웃된 경우 AWR 스냅샷에 저장되지 못함

그리고 그 다음 AWR 스냅샷을 캡처할 때 V$SQL 내에 SQL 문이 없는 경우 AWR 스냅샷에 저장되지 못함

 

 

참조 : Top SQL Statement Missing from DBA_HIST_SQLSTAT View (Doc ID 1424839.1)