
Oracle Database의 성능은 데이터 접근 효율성에 의해 크게 좌우됩니다. 특히 자주 조회되는 테이블이나 정적(Static) 데이터가 많은 경우, 디스크 I/O를 최소화하고 메모리 캐시를 적극 활용하는 것이 핵심입니다. 이때 DBA가 성능을 분석하고 캐시 전략을 수립할 때 참고하는 주요 데이터 딕셔너리 뷰가 바로 DBA_CACHEABLE_TABLES입니다. 이 글에서는 DBA_CACHEABLE_TABLES의 구조, 주요 컬럼, 활용 방법, 그리고 SQL 성능 최적화를 위한 캐시 전략까지 전문가 수준으로 설명합니다.
1. DBA_CACHEABLE_TABLES란?
DBA_CACHEABLE_TABLES 뷰는 데이터베이스 내에서 캐시(Cache) 가능하도록 정의된 테이블의 정보를 제공합니다. 이 뷰는 Oracle의 TABLE CACHING 기능과 밀접한 관련이 있으며, 특정 테이블이 BUFFER CACHE나 KEEP POOL에 상주하도록 설정되었는지를 파악할 수 있습니다. 즉, 이 뷰는 단순한 테이블 목록이 아니라, “어떤 테이블이 캐시 대상인지”를 DBA가 판단하고 관리하기 위한 성능 최적화 지표 역할을 수행합니다. 이는 DBA_TABLES, V$BH, DBA_SEGMENTS 등의 다른 뷰와 함께 분석하면 더욱 실질적인 인사이트를 얻을 수 있습니다.
2. DBA_CACHEABLE_TABLES 주요 컬럼 설명
| 컬럼명 | 데이터 타입 | 설명 |
|---|---|---|
| OWNER | VARCHAR2(30) | 테이블을 소유한 스키마 이름 |
| TABLE_NAME | VARCHAR2(128) | 캐시 가능한 테이블의 이름 |
| TABLESPACE_NAME | VARCHAR2(30) | 테이블이 속한 테이블스페이스 이름 |
| CACHE | VARCHAR2(3) | 캐시 속성 (‘YES’ 또는 ‘NO’) |
| BUFFER_POOL | VARCHAR2(7) | 테이블이 사용하는 버퍼 풀 (DEFAULT, KEEP, RECYCLE) |
| NUM_ROWS | NUMBER | 테이블 내의 데이터 행 수 |
| BLOCKS | NUMBER | 테이블이 차지하는 데이터 블록 수 |
| LAST_ANALYZED | DATE | 테이블 통계가 마지막으로 수집된 시점 |
| AVG_ROW_LEN | NUMBER | 평균 행 길이 (바이트 단위) |
| CACHE_HINT | VARCHAR2(30) | 옵티마이저 힌트로 캐시 여부를 제어할 수 있는 설정 정보 |
이 중에서 CACHE와 BUFFER_POOL 컬럼은 테이블의 캐시 정책을 직접적으로 반영하므로, SQL 성능을 진단할 때 반드시 확인해야 하는 핵심 속성입니다.
3. DBA_CACHEABLE_TABLES의 역할과 중요성
DBA_CACHEABLE_TABLES 뷰는 단순히 "캐시 가능한 테이블 목록"을 보여주는 수준이 아닙니다. 그 본질은 다음 세 가지로 요약할 수 있습니다.
- 데이터 접근 효율성 향상: 자주 사용되는 테이블을 메모리에 유지하여 디스크 I/O 최소화
- DBA 성능 관리 도구: 캐시 정책(KEEP, RECYCLE, DEFAULT)별로 자원 활용 상태를 모니터링
- SQL 옵티마이저 지원: 캐시된 객체에 대해 빠른 경로 엑세스(Path)를 활용할 수 있도록 도움
따라서 이 뷰는 “메모리 효율과 성능 균형을 유지하기 위한 실무형 진단 도구”로 활용됩니다.
4. DBA_CACHEABLE_TABLES 조회 예시
SELECT OWNER, TABLE_NAME, BUFFER_POOL, CACHE
FROM DBA_CACHEABLE_TABLES
WHERE CACHE = 'YES'
ORDER BY OWNER, TABLE_NAME;
이 쿼리는 현재 데이터베이스에서 캐시 속성이 ‘YES’로 설정된 테이블을 조회합니다. DBA는 이를 통해 어떤 객체가 KEEP Pool 또는 기본 캐시에 상주하는지 빠르게 확인할 수 있습니다.
5. 캐시 전략 비교 요약
| 캐시 유형 | 특징 | 적용 대상 | 주의사항 |
|---|---|---|---|
| KEEP | 자주 참조되는 소규모 테이블을 메모리에 고정 | 조회 빈도가 높은 코드 테이블, 정적 참조 데이터 | KEEP Pool의 크기를 초과하면 캐시 효율 저하 |
| RECYCLE | 대용량 테이블의 캐시를 최소화하여 메모리 절약 | 임시 테이블, 대규모 로그 테이블 | 자주 접근되는 데이터는 I/O 증가 유의 |
| DEFAULT | 일반 캐시 정책, 자동으로 버퍼풀 관리 | 대부분의 일반 테이블 | 전체 워크로드 기반으로 균형 유지 필요 |
6. 캐시 정책 설정 방법
Oracle에서는 테이블 단위로 캐시 정책을 지정할 수 있습니다. 다음 명령을 통해 KEEP, RECYCLE 또는 기본(DEFAULT) 버퍼 풀을 설정할 수 있습니다.
ALTER TABLE HR.DEPARTMENTS STORAGE (BUFFER_POOL KEEP);
ALTER TABLE SALES.TRX_LOG STORAGE (BUFFER_POOL RECYCLE);
또는 특정 테이블을 캐시 대상으로 지정하려면 아래와 같이 설정합니다.
ALTER TABLE HR.LOCATIONS CACHE;
이후 DBA_CACHEABLE_TABLES를 조회하면, 설정한 정책이 반영된 것을 확인할 수 있습니다.
7. DBA_CACHEABLE_TABLES 관련 주요 뷰 비교
| 뷰 이름 | 설명 | 주요 목적 | 비교 요약 |
|---|---|---|---|
| DBA_CACHEABLE_TABLES | 캐시 가능한 테이블 정보 | 캐시 정책 관리 및 분석 | 테이블 캐시 속성 중심 |
| V$BH | Buffer Cache 내 블록 상태 정보 | 실시간 메모리 사용량 추적 | 운영 시 성능 분석용 |
| DBA_TABLES | 테이블 메타데이터 | 기본 구조 정보 조회 | DDL 중심 정보 |
| DBA_SEGMENTS | 세그먼트별 공간 사용량 | 스토리지 및 캐시 효율 분석 | 물리적 저장소 관점 |
8. DBA_CACHEABLE_TABLES 활용 실무 시나리오
① 코드성 테이블의 KEEP Pool 유지
시스템에서 반복적으로 참조되는 코드성 테이블(예: 지역코드, 통화코드)은 캐시 설정이 필수적입니다. KEEP Pool에 상주시켜 디스크 I/O를 최소화하면, 트랜잭션 처리 속도가 크게 향상됩니다.
ALTER TABLE COMMON.CODE_MASTER STORAGE (BUFFER_POOL KEEP);
② 대용량 로그 테이블의 캐시 해제
매일 대량으로 적재되는 로그성 테이블은 캐시 대상에서 제외하여 메모리 낭비를 방지합니다.
ALTER TABLE LOG_DATA.EVENT_HISTORY STORAGE (BUFFER_POOL RECYCLE);
③ 메모리 히트율 검증
캐시 정책을 변경한 후, V$DB_CACHE_ADVICE 뷰를 통해 예상 캐시 히트율 변화를 분석하여 메모리 구성을 조정합니다.
9. 캐시 성능 튜닝 포인트
- 자주 접근되는 소규모 테이블을 KEEP Pool로 지정하여 핫데이터 상주시킴
- Buffer Cache 크기(SGA 구성 요소)와 WORKLOAD 비율을 함께 고려
- 캐시된 데이터의 실제 효율은
V$BH와V$DB_CACHE_ADVICE를 병행 분석 - 대용량 테이블은 RECYCLE Pool로 분리하여 메모리 압박 완화
- 정기적인 통계 수집(
DBMS_STATS.GATHER_TABLE_STATS)을 통해 캐시 효율 유지
10. DBA_CACHEABLE_TABLES로 보는 캐시 정책 평가
SELECT BUFFER_POOL, COUNT(*) AS TABLE_COUNT
FROM DBA_CACHEABLE_TABLES
GROUP BY BUFFER_POOL;
이 쿼리를 통해 각 버퍼 풀 정책(KEEP, DEFAULT, RECYCLE)별 테이블 분포를 파악할 수 있습니다. 이를 기반으로 메모리 재구성 또는 캐시 전략 개선 여부를 판단할 수 있습니다.
11. 결론
DBA_CACHEABLE_TABLES는 Oracle Database의 캐시 구조와 성능 최적화를 이해하는 핵심적인 뷰입니다. 이 뷰를 활용하면 어떤 테이블이 메모리에 상주하고 있는지, 캐시 정책이 실제로 얼마나 효과적인지 분석할 수 있습니다. KEEP, RECYCLE, DEFAULT 버퍼 풀을 적절히 활용하면 시스템 메모리 효율을 극대화하고, 디스크 I/O 부담을 최소화하여 안정적인 트랜잭션 처리 환경을 구축할 수 있습니다. 즉, DBA_CACHEABLE_TABLES는 “보이지 않는 성능 병목”을 시각화하고 해결하는 강력한 도구입니다.
출처
- Oracle® Database Reference 19c - DBA_CACHEABLE_TABLES View
- Oracle® Performance Tuning Guide
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBA_CATALOG 완벽 해설 : 오라클 객체 관리의 핵심 메타데이터 뷰 (0) | 2025.10.13 |
|---|---|
| [ORACLE] DBA_CACHEABLE_TABLES_BASE 완벽 해설 : 캐시 정책의 기반 구조와 성능 최적화의 핵심 (0) | 2025.10.13 |
| [ORACLE] DBA_CACHEABLE_OBJECTS 완벽 해설 : 캐시 가능한 객체의 구조와 성능 최적화 전략 (0) | 2025.10.13 |
| [ORACLE] DBA_AUDIT_TRAIL 완벽 가이드 : 오라클 감사 로그의 핵심 구조와 활용법 (0) | 2025.10.13 |
| [ORACLE] DBA_AUDIT_STATEMENT 완벽 가이드 : SQL 명령 단위 감사의 모든 것 (0) | 2025.10.13 |