본문 바로가기
Database/Oracle

[ORACLE] USER_TABLES 뷰를 활용한 테이블 구조 분석과 관리 전략

by Papa Martino V 2025. 8. 8.
728x90

USER_TABLES 뷰를 활용한 테이블 구조 분석과 관리 전략
[ORACLE] USER_TABLES

1. USER_TABLES란?

USER_TABLES는 Oracle 데이터베이스에서 현재 로그인한 사용자가 소유한 모든 테이블의 메타 정보를 제공하는 데이터 딕셔너리 뷰입니다. 이 뷰는 물리적 저장 구조, 파티셔닝, 캐싱 정책, 스토리지 파라미터 등 테이블 관련 속성을 확인하는 데 사용되며, DBA와 개발자에게 테이블 성능 분석 및 구조 검토의 핵심 수단이 됩니다.

2. 주요 용도

  • 테이블 속성 확인: 테이블이 파티션되어 있는지, 임시 테이블인지, 캐싱 여부 등
  • 스토리지 파라미터 분석: 초기 익스텐트, 넥스트 익스텐트, PCT_FREE 등 확인
  • SQL 튜닝 정보 수집: 로우 수나 샘플링 빈도 기반 분석
  • 보안 점검 및 감사: 민감 정보가 저장된 테이블 여부 파악

3. 주요 컬럼 설명

컬럼명 설명
TABLE_NAME 테이블 이름
TABLESPACE_NAME 테이블이 저장된 테이블스페이스 이름
CLUSTER_NAME 테이블이 속한 클러스터 이름 (해당 시)
IOT_TYPE 인덱스 조직 테이블 여부 (IOT)
PCT_FREE 데이터 블록에 남겨질 여유 공간 비율
NUM_ROWS 수집된 통계 기준의 행 수
BLOCKS 사용된 데이터 블록 수
PARTITIONED Y/N — 파티셔닝 여부
TEMPORARY Y/N — 임시 테이블 여부

4. 실전 활용 예제

-- 현재 사용자 스키마에 존재하는 모든 테이블 목록 조회
SELECT TABLE_NAME, TABLESPACE_NAME, NUM_ROWS, PARTITIONED
FROM USER_TABLES
ORDER BY TABLE_NAME;

-- 파티션이 적용된 테이블만 조회
SELECT TABLE_NAME
FROM USER_TABLES
WHERE PARTITIONED = 'YES';

-- 최근 행 수가 많은 상위 10개 테이블
SELECT TABLE_NAME, NUM_ROWS
FROM USER_TABLES
WHERE NUM_ROWS IS NOT NULL
ORDER BY NUM_ROWS DESC FETCH FIRST 10 ROWS ONLY;
      

5. 관련 테이블 정보 뷰 비교

뷰 이름 역할 설명
USER_TABLES 테이블 구조 정보 현재 사용자 스키마 기준
USER_TAB_COLUMNS 컬럼 상세 정보 데이터 타입, NULL 여부 등
USER_TAB_COMMENTS 테이블 주석 정보 개발자 문서화 용도로 활용
USER_TAB_PRIVS 권한 정보 GRANT된 권한 확인

6. 고급 활용 전략

  • 테이블 리사이징 계획: BLOCKS, PCT_FREE 정보 기반으로 스토리지 재조정 가능
  • 성능 점검 루틴 구축: NUM_ROWS, PARTITIONED 플래그 기반 쿼리 튜닝 대상 선정
  • 스키마 감사 자동화: 사용자 정의 스크립트로 테이블 구조 변화 감지

7. 결론

USER_TABLES 뷰는 Oracle 스키마 내에서 모든 테이블 객체의 정의와 물리적 상태를 확인할 수 있는 핵심 도구입니다. 이 정보를 활용하면 스키마 구성 최적화, 쿼리 성능 개선, 용량 계획 수립 등 다양한 운영 효율성을 확보할 수 있습니다.

참고 자료

728x90