오라클 인덱스 통계 갱신 여부 확인
2025. 2. 3. 00:03ㆍIT/Oracle
반응형
1. 인덱스 통계 갱신 여부 확인 쿼리
다음 SQL 쿼리를 사용하면 인덱스의 통계가 마지막으로 갱신된 날짜를 확인할 수 있습니다
SELECT
INDEX_NAME,
TABLE_NAME,
LAST_ANALYZED
FROM
USER_INDEXES
WHERE
TABLE_NAME = '테이블명';
- INDEX_NAME: 인덱스 이름
- TABLE_NAME: 테이블 이름
- LAST_ANALYZED: 인덱스 통계가 마지막으로 갱신된 날짜 및 시간
- 값이 NULL인 경우 해당 인덱스에 대해 통계가 생성된 적이 없습니다
2. 특정 스키마 또는 데이터베이스 전체 확인
특정 스키마에서 모든 인덱스 확인
SELECT
INDEX_NAME,
TABLE_NAME,
LAST_ANALYZED
FROM
DBA_INDEXES
WHERE
OWNER = '스키마명'
ORDER BY LAST_ANALYZED DESC;
데이터베이스 내 전체 인덱스 확인
ELECT
OWNER,
INDEX_NAME,
TABLE_NAME,
LAST_ANALYZED
FROM
DBA_INDEXES
ORDER BY LAST_ANALYZED DESC;
3. 최근 갱신 여부 확인
갱신되지 않은 인덱스 목록 확인
다음 쿼리는 통계 갱신이 이루어지지 않은 인덱스를 보여줍니다(LAST_ANALYZED가 NULL인 경우).
SELECT
INDEX_NAME,
TABLE_NAME,
LAST_ANALYZED
FROM
USER_INDEXES
WHERE
LAST_ANALYZED IS NULL;
특정 날짜 이후 갱신된 인덱스 확인
특정 시점 이후 통계가 갱신된 인덱스를 조회할 수도 있습니다
SELECT
INDEX_NAME,
TABLE_NAME,
LAST_ANALYZED
FROM
USER_INDEXES
WHERE
LAST_ANALYZED >= TO_DATE('2024-12-01', 'YYYY-MM-DD');
4. 통계 갱신이 필요한 경우
통계 갱신이 오래되었거나 LAST_ANALYZED가 NULL인 경우, 해당 인덱스에 대해 통계를 수집해야 합니다. 다음과 같은 방법으로 통계 갱신을 수행합니다
인덱스 통계 갱신
EXEC DBMS_STATS.GATHER_INDEX_STATS('스키마명', '인덱스명');
테이블과 모든 인덱스 통계 갱신
EXEC DBMS_STATS.GATHER_TABLE_STATS('스키마명', '테이블명');
데이터베이스 전체 통계 갱신
EXEC DBMS_STATS.GATHER_DATABASE_STATS;
5. 통계 갱신 자동화 확인
오라클은 기본적으로 자동 통계 수집이 활성화되어 있을 수 있습니다. 자동 통계 수집 설정을 확인하려면 다음 쿼리를 실행합니다
SELECT
STATUS
FROM
DBA_SCHEDULER_JOBS
WHERE
JOB_NAME = 'AUTO_STATS_JOB';
STATUS가 DISABLED인 경우 자동 통계 수집이 비활성화된 상태입니다. 활성화하려면 아래 명령어를 사용하세요
XEC DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL);
반응형
'IT > Oracle' 카테고리의 다른 글
SQL Merge문 성능향상 방법 (0) | 2025.02.10 |
---|---|
오라클 데이터베이스에서 마리아DB(MariaDB) 접속 위한 DB Link 생성 (0) | 2025.02.03 |
Oracle UCP(Universal Connection Pool) 기반 로드밸런싱 (0) | 2025.02.03 |
오라클 락 - Enq : us contention (0) | 2025.02.03 |
오라클 인덱스 통계 갱신의 목적과 효과 (1) | 2025.02.02 |