본문 바로가기
Database/Oracle

[ORACLE] DBA_CACHEABLE_TABLES 완벽 해설 : 캐시 가능한 테이블의 이해와 성능 최적화 전략

by Papa Martino V 2025. 10. 13.
728x90

DBA_CACHEABLE_TABLES
[ORACLE] DBA_CACHEABLE_TABLES

 

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 CACHEKEEP 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) 옵티마이저 힌트로 캐시 여부를 제어할 수 있는 설정 정보

이 중에서 CACHEBUFFER_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$BHV$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는 “보이지 않는 성능 병목”을 시각화하고 해결하는 강력한 도구입니다.


출처

728x90