Database

[Database] Ch10.Dictionary

OptimizerStart 2025. 5. 11. 22:37

Ch10.Dictionary

Dictionary

정의

  • 관리 데이터
  • 테이블로 존재함. 뷰와 테이블 정보 주석으로 설명
  • 메타 정보 . 데이터의 데이터

저장되는 정보 : View (Read Only) + Table

  • oracle server 사용자명
  • 허가된 권한 role, privilege
  • 객체명( table, sequence, view, index 등)
  • 감사 정보
    • 어느 테이블에 누가 무엇을 했는지 동작 기록
  • 테이블 제약조건 constraint
    • 테이블 정보와 따로 저장됨
    • 오라클이 sys.con$ 테이블에 실제 제약조건 저장함. ( $ 시스템 테이블임을 구분하기 위해 붙임)
    • 사용자가 직접 sys.con$ 테이블에 접근할 수 없고, 뷰를 통해 user_constraints 을 통해 확인가능
-- 사용자의 제약정보 
select * from user_constraints; -- user_objects에 사용자의 테이블 정보 저장. 

-- owner, constraint_name, table_name, column_name, position
select * from user_cons_columns -- 컬럼레벨 제한 
where table_name = 'S_EMP';

--  user_contraints 테이블은 테이블의 column이름을 모름
select * 
from user_constraints
where table_name = 'S_EMP';

 

특징

  • 자동으로 생성되고, 자동으로 관리됨.
    • 자동으로 만들어지기 때문에 바꾸면 안됨. Read Only
    • DDL 수행할 때만 갱신됨.

종류

  • 접두어가 붙은 딕셔너리 뷰
    1. USER 사용자가 소유한 객체 정보
      • 사용자 작업 환경 분석
    2. ALL_ 사용자에게 접근이 허용된 객체 정보 저장
    3. DBA_ DBA 권한을 가진 사용자가 접근할 수 있는 정보
    4. V$
      • 실행 중인 인스턴스를 실시간으로 동적으로 보여줌
      • 표현
      • SELECT <컬럼> FROM V$<뷰_이름> WHERE <필요 조건>;
  • 접두가 없는 동의어(synonym)
    1. DICTIONARY 모든 데이터 딕셔너리 테이블, 뷰, 시노님 저장
    2. TABLE_PRIVILEGES 사용자가 권한을 부여했거나 부여 받은 객체에 대한 권한
    3. IND USER_INDEXES

DBMS

  • DB관리 시스템
  • 관리를 위한 정보

ex. 권한, 테이블 개수, 컬럼 수

 

Users 관련 뷰 

뷰 이름 설명 예시 쿼리
USER_TABLES 내 스키마에 있는 모든 테이블 목록 SELECT table_name FROM user_tables;
USER_TAB_COLUMNS 내 스키마 테이블의 컬럼 정보 (이름·타입·길이 등) SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name='EMPLOYEES';
USER_CONSTRAINTS 내 스키마 테이블의 제약조건 정보 (PK·FK·UNIQUE·CHECK 등) SELECT constraint_name, constraint_type, table_name FROM user_constraints;
USER_INDEXES 내 스키마에 생성된 인덱스 정보 SELECT index_name, table_name, uniqueness FROM user_indexes;
USER_IND_COLUMNS 인덱스별 컬럼 매핑 정보 SELECT index_name, column_name, column_position FROM user_ind_columns;
USER_SEQUENCES 내 스키마의 시퀀스 목록 및 현재 값 SELECT sequence_name, last_number FROM user_sequences;
USER_TRIGGERS 내 스키마의 트리거 목록 및 상태 SELECT trigger_name, table_name, status FROM user_triggers;
USER_VIEWS 내 스키마의 뷰 목록 SELECT view_name, text_length FROM user_views;
USER_ROLE_PRIVS 내 계정에 부여된 롤(role) 목록 SELECT granted_role FROM user_role_privs;
USER_SYS_PRIVS 내 계정에 부여된 시스템(system) 권한 목록 SELECT privilege FROM user_sys_privs;
USER_TAB_PRIVS 내 계정에 부여된 객체(object) 권한 목록 (SELECT 등) SELECT table_name, privilege FROM user_tab_privs;
USER_COL_PRIVS 내 계정에 부여된 컬럼(column) 권한 목록 SELECT table_name, column_name, privilege FROM user_col_privs;

 

 

 

테이블이 크면 데이터를 전체로 보여주지 않고, 스크롤 해야 더 보여줌 개수가 늘어남

select * from dictionary; -- 50개만 보여줌
select count(*) from dictionary;