728x90

1. USER_TAB_MODIFICATIONS란?
USER_TAB_MODIFICATIONS는 Oracle에서 통계 정보 갱신 필요성을 판단하기 위해 테이블의 변경 내역을 추적하는 데이터 딕셔너리 뷰입니다. 이 뷰는 데이터가 얼마나 변경되었는지를 기반으로 통계 갱신 타이밍을 결정할 수 있게 해주며, 대용량 데이터 관리 및 SQL 성능 유지에 매우 중요합니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TABLE_NAME | 변경 이력을 추적하는 대상 테이블 이름 |
| INSERTS | 통계 수집 이후 발생한 INSERT 횟수 |
| UPDATES | 통계 수집 이후 발생한 UPDATE 횟수 |
| DELETES | 통계 수집 이후 발생한 DELETE 횟수 |
| TIMESTAMP | 마지막 통계 수집 이후 변경이 추적된 시간 |
| TRUNCATED | 테이블이 TRUNCATE 되었는지 여부 (YES/NO) |
3. 작동 방식
- 이 뷰는
MONITORING속성이 설정된 테이블에 대해만 동작합니다. - 변경 이력은 **백그라운드 작업(Flush)** 후 반영됩니다.
- 실시간 반영이 아니라, 통계 갱신 또는 일정 시간 간격 후
DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO호출 시 반영됩니다.
4. 실전 활용 예제
-- 최근 변경된 테이블 확인
SELECT TABLE_NAME, INSERTS, UPDATES, DELETES, TIMESTAMP
FROM USER_TAB_MODIFICATIONS
WHERE INSERTS + UPDATES + DELETES > 0;
-- 수동으로 모니터링 정보 반영
EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
5. 관련 뷰 비교
| 뷰 이름 | 역할 | 설명 |
|---|---|---|
| USER_TAB_MODIFICATIONS | 테이블 변경 이력 | 통계 정보 기준으로 INSERT/UPDATE/DELETE 횟수 추적 |
| USER_TAB_STATISTICS | 통계 정보 | 행 수, 블록 수, LAST_ANALYZED 등 |
| DBA_TAB_MODIFICATIONS | 전체 사용자 변경 이력 | DBA 권한 필요 |
6. 고급 활용 전략
- 자동 통계 수집 우선순위 설정: 변경 건수가 많은 테이블을 우선 처리
- 야간 배치 스크립트 작성: 통계 갱신 대상만 필터링하여 성능 최적화
- TRUNCATE 탐지: TRUNCATED='YES'인 테이블은 반드시 재수집 필요
7. 결론
USER_TAB_MODIFICATIONS 뷰는 Oracle 데이터베이스에서 성능 유지와 통계 수집 전략을 지능적으로 제어하는 데 핵심적인 도구입니다. 특히 대규모 시스템에서는 불필요한 통계 수집을 줄이고, 실제 변경된 테이블만 추적하여 효율적인 리소스 운용이 가능합니다.
참고 자료
- Oracle® Database Performance Tuning Guide 21c
- Oracle® Database SQL Language Reference
- Oracle Help Center: https://docs.oracle.com/en/database/
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_VIEWS 뷰로 사용자 정의 뷰 SQL 추적 및 최적화하기 (0) | 2025.08.08 |
|---|---|
| [ORACLE] USER_USERS 뷰로 사용자 계정 정보 및 보안 정책 완벽 파악하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_HISTOGRAMS 뷰로 SQL 옵티마이저 힌트 최적화하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_COMMENTS 뷰로 테이블 주석 관리 및 문서화 자동화하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_COL_STATISTICS 뷰로 컬럼 통계 최적화 전략 세우기 (0) | 2025.08.08 |