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 |
댓글