10g 부터는 Oracle에서 자동으로 optimizer statistic 통계정보를 수집하게 됩니다.
11g에는 scheduler job에서 automated task로 변경된 거 같은데,
모두 마찬가지로 10% 이상의 변경을 대상으로 수집합니다. (11g 두? .. 음)
다음의 SQL은 dba_tab_modifications table에서 DML에 의해 변경된 건수와 dba_tables의 num_rows를 비교해
10% 이상 변경된 table을 조회하는 SQL 문입니다.
select TABLE_OWNER,m.TABLE_NAME,num_rows,round(num_rows/10,0) "NUM_ROWS/10",inserts+updates+deletes "tot_changed",
INSERTS,UPDATES,DELETES,TIMESTAMP,LAST_ANALYZED,round(LAST_ANALYZED-TIMESTAMP,0) GAP
from dba_tab_modifications m, dba_tables t
where table_owner not in ('SYS')
and t.table_name = m.table_name
and t.owner = m.table_owner
and round(num_rows/10,0) - (inserts+updates+deletes) < 0
order by LAST_ANALYZED-TIMESTAMP
/
INSERTS,UPDATES,DELETES,TIMESTAMP,LAST_ANALYZED,round(LAST_ANALYZED-TIMESTAMP,0) GAP
from dba_tab_modifications m, dba_tables t
where table_owner not in ('SYS')
and t.table_name = m.table_name
and t.owner = m.table_owner
and round(num_rows/10,0) - (inserts+updates+deletes) < 0
order by LAST_ANALYZED-TIMESTAMP
/
UPDATE (2010/07/05)
아래 블로그는 제가 구독하는 Oracle 관련 blog 입니다.
dba_tab_modifications에 대해 자세한 설명과 test 결과를 post 해 놓았네요. dba_tab_modifications의 데이터가 즉각적으로 보이지 않던데,
flush를 해줘야 하는 군요.. 움~
exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO
아래 블로그는 제가 구독하는 Oracle 관련 blog 입니다.
dba_tab_modifications에 대해 자세한 설명과 test 결과를 post 해 놓았네요. dba_tab_modifications의 데이터가 즉각적으로 보이지 않던데,
flush를 해줘야 하는 군요.. 움~
exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO
'Oracle Database' 카테고리의 다른 글
오라클 옵티마이져의 비용 산정 모듈의 세가지 예상치 (Selectivity, cardinality, cost) (0) | 2010.07.07 |
---|---|
oracle oradebug를 이용해 삭제된 trace file을 다시 만드는 방법 (0) | 2010.07.06 |
Listener hang/slowdown 현상 원인 찾기 (0) | 2010.07.05 |
Oracle Datafile 사용 공간 줄이기 (0) | 2010.06.29 |
Oracle 11gR2 Grid Infrastructure Single Client Access Name (SCAN) .. 이건 또 뭐야? (3) | 2010.06.24 |