Oracle Data Dictionary

현스·2025년 11월 18일

ORACLE STUDY

목록 보기
10/14

1. Oracle Data Dictionary란?

먼저 큰 개념부터

Data Dictionary = 데이터베이스의 메타데이터를 담고 있는 SYS 스키마의 내부 테이블 + 그걸 감싸는 뷰들

-어떤 유저가 있는지

-어떤 테이블/인덱스/제약조건이 있는지

-어떤 권한/롤이 부여돼 있는지

-어떤 세그먼트/파일/테이블스페이스가 있는지

이런 “DB 자기 자신에 대한 정보”를 저장하고 있는 영역이 데이터 딕셔너리이다.

실제로는 SYS 소유의 내부 테이블들(예: TAB,OBJ, OBJ, USER$ …)에 저장되어 있고,
우리가 직접 그 테이블을 보는 대신, 공식적으로 허용된 창구가 바로 딕셔너리 뷰 들이다.


2. 딕셔너리 뷰의 종류 (USER / ALL / DBA / V$)

보통 “딕셔너리 뷰”라고 하면 아래 네 부류를 통틀어 부르는 경우가 많다.

2-1. USER_ 뷰

-접두어: USER_

-예: USER_TABLES, USER_TAB_COLUMNS, USER_INDEXES

-현재 접속 유저가 소유한 오브젝트 기준으로 정보 제공

-OWNER 컬럼은 보통 없음 (본인 것만 보니까)

SELECT table_name
  FROM user_tables;

2-2. ALL_ 뷰

-접두어: ALL_

-예: ALL_TABLES, ALL_TAB_COLUMNS

-현재 유저가 접근 가능한 오브젝트(본인 + 권한 받은 것) 기준

-다른 스키마의 오브젝트도 포함 가능

SELECT owner, table_name
  FROM all_tables
 WHERE owner <> USER;

2-3. DBA_ 뷰

-접두어: DBA_

-예: DBA_TABLES, DBA_TAB_COLUMNS, DBA_USERS, DBA_DATA_FILES

-데이터베이스 전체 기준(모든 스키마, 모든 오브젝트)

-보통 DBA 롤 또는 적절한 시스템 권한이 있어야 조회 가능

 SELECT owner, table_name, tablespace_name
  FROM dba_tables
 ORDER BY owner, table_name;

2-4. 동적 성능 뷰 (V/GV/GV)

-접두어: V,RAC에서는GV, RAC에서는 GV

-예: VSESSION,VSESSION, VSQL, VSYSTEMEVENT,VSYSTEM_EVENT, VUNDOSTAT

-data dictionary와 함께 “딕셔너리 뷰” 카테고리에 묶어서 부르기도 하지만,
역할이 조금 다르고 이름은 따로 Dynamic Performance Views라고 부름

“지금 이 순간 상태(세션, 대기, 메모리, I/O 등)”를 보여주는 뷰

 SELECT sid, serial#, username, event
  FROM v$session
 WHERE username IS NOT NULL;

3. DICT / DICTIONARY 뷰란?

이제 질문의 핵심인 DICT.

DICT는 사실 뷰 이름이 아니라 public synonym입니다.

원래 뷰 이름은 DICTIONARY

둘 다 같은 걸 가리킵니다.

내용은 아주 단순합니다.

 
 DESC DICT;

-- 보통 이런 구조
TABLE_NAME  VARCHAR2  -- 딕셔너리 뷰 이름
COMMENTS    VARCHAR2  -- 그 뷰에 대한 설명

하면, DBA_TABLES, DBA_TAB_COLUMNS, DBA_TAB_PRIVS 같은 뷰 이름과
각각의 용도가 COMMENTS 컬럼에 영문으로 나옵니다.

그래서:
처음 보는 DBA_XXX 뷰가 나왔을 때

“이게 무슨 뷰야?” 싶으면

SELECT table_name, comments
  FROM dict
 WHERE table_name = 'DBA_CONSTRAINTS';

이렇게 DICT를 통해 해당 뷰의 설명을 바로 찾아볼 수 있는 구조.

딕셔너리 뷰는 Oracle 데이터 딕셔너리에 저장된 DB 메타데이터를

USER/ALL/DBA_ 같은 뷰 형태로 노출해주는 공식 인터페이스이고,

DICT(=DICTIONARY) 뷰는 그 딕셔너리 뷰들의 목록과 각 뷰에 대한 한 줄 설명을
TABLE_NAME, COMMENTS 형태로 보여주는 메타 뷰라고 이해하시면 됩니다.

그래서 새로운 DBA_ 뷰를 봤을 때 용도 모르겠으면
DICT에서 table_name으로 검색해서 comments를 먼저 확인하는 식으로 많이 씁니다.

profile
˗ˋˏ O R A C L E ˎˊ˗

0개의 댓글