% 해당 명령어는 SYSTEM User가 가지고 있는 Table의 통계정보를 생성한지 180일 이전와 통계정보가 생성이 안되어 있는 Table을 출력 하는 쿼리입니다.
select OWNER,TABLE_NAME,TO_CHAR(LAST_ANALYZED,’YYYY-MM-DD hh24:mi:ss’)
from dba_tables
where OWNER=’SYS’
and (LAST_ANALYZED < sysdate – 180 or LAST_ANALYZED is null)
order by LAST_ANALYZED ;
% 위의 정보를 확인 하고, 아래의 쿼리를 통하여 Table의 통계정보를 생성하는 쿼리를 뽑아 낼수 있습니다.
set pages 5000
set line 500
set feedback off
set head off
spool table_analyze.sql
select ‘EXEC DBMS_STATS.GATHER_TABLE_STATS(”’||OWNER||”’,”’||TABLE_NAME||””||’,estimate_percent =>30, degree =>1);’
from dba_tables
where OWNER=’SYS’
and (LAST_ANALYZED < sysdate – 180 or LAST_ANALYZED is null)
order by LAST_ANALYZED ;
spool off