SQL

oracle 딕셔너리 뷰 종류

class="song" 2026. 1. 13.
728x90

1. 데이터 딕셔너리(Data Dictionary)란?

데이터 딕셔너리는 데이터베이스의 메타데이터(Metadata)를 저장하는 읽기 전용 테이블들의 집합입니다. 데이터베이스의 '두뇌'이자 '자서전'이라고 할 수 있습니다. 사용자가 테이블을 생성하거나 변경하면, DB는 그 이력을 이곳에 자동으로 기록합니다.


2. 딕셔너리 뷰의 3가지 접두사 (핵심!)

오라클(Oracle)은 사용자의 권한에 따라 볼 수 있는 정보의 범위를 3가지 접두사로 엄격히 구분합니다.

2.1. USER_ (나의 것)

  • 의미: 현재 로그인한 사용자(User)가 생성(소유)한 객체만 보여줍니다.
  • 예시: USER_TABLES (내가 만든 테이블만 조회)

2.2. ALL_ (내가 볼 수 있는 것)

  • 의미: USER_ 정보 + 다른 사용자가 만들었지만 나에게 접근 권한을 준 객체까지 보여줍니다.
  • 예시: ALL_TABLES (내가 조회 가능한 모든 테이블)

2.3. DBA_ (모든 것)

  • 의미: 데이터베이스 내에 존재하는 모든 객체를 보여줍니다. (관리자 전용)
  • 예시: DBA_TABLES (시스템 테이블 포함 전체 조회)

3. 실무 및 SQLP 필수 딕셔너리 뷰 총정리

실무에서 자주 사용되는 뷰를 목적별로 분류했습니다. SQLP 시험이나 성능 튜닝 시 반드시 확인해야 하는 핵심 뷰들입니다.

3.1. 기본 오브젝트 관리 (Basic)

가장 빈번하게 조회하는 기초 정보입니다.

  • _TABLES: 테이블 기본 정보 (테이블명, 소유자, 테이블스페이스 등)
  • _TAB_COLUMNS: 컬럼 상세 정보 (데이터 타입, 길이, Null 여부)
  • _INDEXES: 인덱스 정보 (인덱스명, 유니크 여부, 상태)
  • _CONSTRAINTS: 제약조건 정보 (PK, FK 여부 확인)

3.2. 튜닝 및 통계 정보 (SQLP 핵심)

옵티마이저가 실행 계획을 짤 때 참조하는 통계 정보입니다. 쿼리가 갑자기 느려졌다면 이곳을 1순위로 확인해야 합니다.

  • _TAB_STATISTICS: 테이블 통계 정보 (Row 수, 블록 수, 마지막 분석 날짜)
  • _TAB_COL_STATISTICS: 컬럼별 통계 정보 (Distinct Value 개수, Null 개수 등)
  • _HISTOGRAMS: 컬럼 데이터의 분포도(Skewness). 특정 값에 데이터가 쏠려 있는지(Data Skew) 확인할 때 필수입니다.
  • PLAN_TABLE: EXPLAIN PLAN 명령어로 생성된 실행 계획이 임시로 저장되는 테이블입니다.

3.3. 파티셔닝 (Partitioning)

대용량 테이블을 다룰 때 파티션 정보 확인은 필수입니다.

  • _PART_TABLES: 파티션 테이블의 기본 정보 (파티션 유형: Range, Hash, List 등)
  • _TAB_PARTITIONS: 각 파티션의 상세 정보 (파티션 이름, 각 파티션별 Row 수)
  • _PART_KEY_COLUMNS: 파티션 키가 어떤 컬럼인지 확인 (가장 중요)

3.4. 저장 공간 및 구조 (Storage)

물리적인 저장 공간을 관리할 때 사용합니다.

  • DBA_SEGMENTS: 객체(테이블, 인덱스)의 물리적 크기(Bytes, Blocks) 확인. *"이 테이블 용량이 몇 GB지?"* 할 때 조회합니다.
  • DBA_EXTENTS: 익스텐트(공간 할당 단위) 발생 현황 (단편화 확인 등)
  • DBA_TABLESPACES: 테이블스페이스 전체 목록 및 상태 관리

3.5. 프로그램 및 종속성 (Dependency)

개발자에게 중요한 소스 코드 및 의존성 관리 영역입니다.

  • _SOURCE: 저장 프로시저(Procedure), 함수(Function)의 실제 소스 코드(Text) 조회
  • _VIEWS: 뷰(View)를 생성할 때 사용한 SELECT 문장 확인
  • _DEPENDENCIES: 객체 간의 의존 관계. *"이 테이블 삭제하면 어떤 프로시저가 에러 날까?"* 확인할 때 사용
  • _SYNONYMS: 시노님(동의어, 별칭) 정보 확인

4. 실시간 모니터링 (Dynamic Performance View)

엄밀히 말해 딕셔너리는 아니지만, DB의 현재 상태를 보여주는 동적 뷰(V$)입니다. 성능 트러블슈팅의 핵심입니다.

  • V$SESSION: 현재 DB에 붙어있는 세션 목록. (누가 락을 걸고 있나? 확인)
  • V$PROCESS: 오라클 백그라운드 프로세스 정보
  • V$SQL: 현재 메모리(Shared Pool)에 올라와 있는 최근 실행된 SQL 문장과 성능 지표
  • V$SQL_PLAN: V$SQL에 있는 쿼리의 실제 실행 계획(Actual Plan)

5. 핵심 요약표

구분 주요 뷰 이름 (접두사 제외) 핵심 용도
기본 정보 TABLES, TAB_COLUMNS 테이블 및 컬럼 구조 파악
튜닝/통계 TAB_STATISTICS, HISTOGRAMS 실행 계획 분석, 데이터 분포 확인
파티션 PART_KEY_COLUMNS 대용량 테이블 파티션 키 확인
저장 공간 SEGMENTS 테이블/인덱스 용량(GB) 확인
개발/소스 SOURCE, DEPENDENCIES 프로시저 코드 및 영향도 파악
실시간 V$SESSION, V$SQL 현재 접속자 및 실행 중인 SQL 감시
728x90

'SQL' 카테고리의 다른 글

오라클 데이터베이스 저장 구조  (0) 2026.01.29
Database 기초  (0) 2026.01.29
Oracle 딕셔너리 뷰와 동적 뷰  (1) 2026.01.13
SQL Null 관련 함수  (0) 2025.08.21
SQL기초 프로시저(Stored Procedure)  (2) 2023.12.06

댓글