본문 바로가기

02. SQLP 스터디/05. Oracle 기타

Oracle 자동 통계 수집, 통계 정보 엡데이트

1. 자동 통계 수집

자동 통계 수집 : oracle default 설치 하면 DBMS Auto Task 기능  설정됨(활성화됨)
 
SELECT client_name, status, WINDOW_GROUP, MEAN_JOB_DURATION FROM dba_autotask_client;
  auto optimizer stats collection     ENABLED   -> 통계 정보 자동 수집 기능
  auto space advisor    ENABLED    -> Disk Space 정보 자동수집 기능 off 권고
  sql tuning advisor    ENABLED  -> Heavy or TOP SQl 튜닝권고 기능 off 권고


Auto Task 를 enable/disable하는 방법은 다음과 같습니다.

   dbms_auto_task_admin.enable(client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL);
    dbms_auto_task_admin.disable(client_name => 'auto space advisor', operation => NULL, window_name => NULL);
    dbms_auto_task_admin.disable(client_name => 'sql tuning advisor', operation => NULL, window_name => NULL);
END;
/


아래 구문으로 모든 autoTask 를 비활성화 시킬 수 있습니다.
dbms_auto_task_admin.disable; 
마찬가지로 아래 구문으로 모든 autoTask 를 활성화 시킬 수도 있습니다.
dbms_auto_task_admin.enable; 
 
변경후에는 윈도우들도 enable되어 있는 지 확인할 수 있습니다.
select
   WINDOW_NAME,AUTOTASK_STATUS,OPTIMIZER_STATS,SEGMENT_ADVISOR,SQL_TUNE_ADVISOR,HEALTH_MONITOR
from dba_autotask_window_clients;

https://blog.naver.com/hanccii/220724151158

 

 

11g AutoTask 와 자동통계 ( Automatic Optimizer Statistics )

오라클은 자동통계 기능을 제공합니다. 오라클은 통계가 없거나 오래된 테이블/인덱스에 대해서 자동...

blog.naver.com

 

2. 통계정보 업데이트

통계정보 업데이트
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('INTRAWARE9');  --스키마명
/* DBMS_STATS 패키지로 갱신되지 않는 테이블 통계 정보 갱신(쿼리 생성) */
        SELECT 'ANALYZE TABLE USER.' || TABLE_NAME || ' COMPUTE STATISTICS;' FROM DBA_TABLES WHERE OWNER = 'USER';
 
/* 통계정보확인 : last_analyzed(통계정보갱신 일자) */
SELECT  table_name, num_rows, blocks, empty_blocks, avg_space, chain_cnt,
            avg_row_len, sample_size, to_char(last_analyzed,'yyyy/mm/dd hh24miss'),last_analyzed
FROM USER_TABLES    
WHERE to_char(last_analyzed,'yyyy/mm/dd hh24miss') < '2020/07/31 202228'
 
/* DBMS_STATS 패키지로 갱신되지 않는 인덱스 통계정보 갱신(쿼리 생성) */
 
SELECT 'ANALYZE INDEX USER.' || INDEX_NAME || ' VALIDATE STRUCTURE;' FROM DBA_INDEXES WHERE OWNER = 'USER';
 
/* INDEX 통계정보 업데이트 확인 : last_analyzed  */
SELECT  * FROM USER_INDEXES WHERE 
to_char(last_analyzed,'yyyy/mm/dd hh24miss') < '2020/07/31 202228'
 

 

https://soohi0309.tistory.com/334

'02. SQLP 스터디 > 05. Oracle 기타' 카테고리의 다른 글

[오라클 PL/SQL] 1/45  (1) 2025.08.29
[오라클 PL/SQL] BULK INSERT [31 ~ ] / 45  (0) 2025.08.21
oracle append , parallel hint 사용  (1) 2025.07.26
oracle 선택도와 카디널리티  (0) 2025.07.26
oracle rowid 특징  (0) 2025.07.26