
데이터베이스 운영에서 성능 최적화를 위해 반드시 관리해야 하는 작업 중 하나가 바로 통계 갱신입니다. 테이블의 데이터가 변경되면 옵티마이저가 사용하는 통계 정보는 오래된 데이터에 기반하여 잘못된 실행 계획을 수립할 가능성이 높습니다. Oracle의 ALL_TAB_MODIFICATIONS 뷰는 이러한 테이블 변경 사항을 추적할 수 있는 강력한 도구입니다. 이번 글에서는 이 뷰의 구조와 실무 활용 전략을 전문가 관점에서 상세히 분석합니다.
ALL_TAB_MODIFICATIONS 뷰란?
ALL_TAB_MODIFICATIONS 뷰는 사용자가 접근할 수 있는 테이블에 대해, 최근 수행된 DML(Insert, Update, Delete) 변경 사항을 추적할 수 있도록 설계된 뷰입니다. 이 뷰는 테이블의 변경 내역을 기반으로 통계 갱신 여부를 판단할 수 있는 중요한 정보를 제공합니다.
왜 중요한가?
테이블이 자주 변경되는데 통계 정보가 갱신되지 않으면, 옵티마이저는 부정확한 행 수 예측을 통해 비효율적인 실행 계획을 생성할 수 있습니다. ALL_TAB_MODIFICATIONS 뷰를 활용하면 통계 갱신 시점을 명확히 파악할 수 있어, 데이터베이스 성능을 안정적으로 유지할 수 있습니다.
주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TABLE_OWNER | 테이블 소유자 |
| TABLE_NAME | 테이블 이름 |
| PARTITION_NAME | 파티션 이름 (파티션 테이블인 경우) |
| INSERTS | 삽입된 행 수 |
| UPDATES | 갱신된 행 수 |
| DELETES | 삭제된 행 수 |
| TIMESTAMP | 마지막 변경 감지 시각 |
활용 예제
예를 들어, 지난 한 달간 변경이 발생한 테이블 목록을 확인하고 싶다면 다음과 같은 쿼리를 사용할 수 있습니다.
SELECT TABLE_OWNER, TABLE_NAME, INSERTS, UPDATES, DELETES, TIMESTAMP
FROM ALL_TAB_MODIFICATIONS
WHERE TIMESTAMP > SYSDATE - 30;
이 결과를 기반으로 DBMS_STATS 패키지를 사용하여 해당 테이블의 통계를 갱신하면, 최신 데이터 기반의 실행 계획을 보장할 수 있습니다.
비슷한 뷰와의 비교
| 항목 | ALL_TAB_MODIFICATIONS | ALL_TAB_STATISTICS |
|---|---|---|
| 주요 내용 | 테이블의 DML 변경 내역 | 현재 저장된 통계 정보 |
| 활용 목적 | 통계 갱신 시점 판단 | 통계 상태 검증 및 분석 |
| 자동 갱신 여부 | 자동으로 누적됨 | DBMS_STATS 실행 시 갱신됨 |
실무 활용 전략
- 통계 갱신 정책 최적화: ALL_TAB_MODIFICATIONS 데이터를 기반으로 통계 갱신 빈도를 조정하면, 불필요한 갱신을 줄이고 시스템 자원을 절약할 수 있습니다.
- 자동화 스크립트 구성: 변경 내역을 주기적으로 점검하고, 일정 기준을 초과한 테이블만 자동 갱신하도록 스크립트를 작성할 수 있습니다.
- 성능 저하 예방: 대규모 DML 작업 후 통계를 즉시 갱신하여 예상치 못한 성능 저하를 방지할 수 있습니다.
활용 시 주의사항
- 이 뷰의 데이터는 GATHER_STATS_JOB 등 Oracle 백그라운드 작업을 통해 업데이트되므로, 즉각적인 반영이 아닌 점을 고려해야 합니다.
- 파티션 테이블은 PARTITION_NAME 컬럼을 통해 파티션별 변경 내역을 별도로 확인할 수 있습니다.
- Oracle 버전과 패치에 따라 컬럼 정보 및 처리 방식이 다를 수 있으므로 최신 문서를 참고해야 합니다.
결론
ALL_TAB_MODIFICATIONS 뷰는 통계 갱신 타이밍을 결정하는 데 중요한 역할을 수행하며, 데이터베이스 성능 관리의 핵심 도구입니다. 이를 활용하면 변경된 데이터에 맞춰 최적의 실행 계획을 수립할 수 있어 전체 시스템 성능을 극대화할 수 있습니다. 성능을 책임지는 DBA와 운영 담당자라면 반드시 숙지하고 활용해야 할 필수 뷰입니다.
출처: Oracle Database Performance Tuning Guide, Oracle 19c/21c Reference Manual, DBA 실무 경험 기반 분석 자료.
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_TAB_PRIVS_MADE 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.05 |
|---|---|
| [ORACLE] ALL_TAB_PARTITIONS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.04 |
| [ORACLE] ALL_TAB_HISTOGRAMS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.04 |
| [ORACLE] ALL_TAB_COMMENTS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.04 |
| [ORACLE] ALL_TAB_COL_STATISTICS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.04 |