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 수행할 때만 갱신됨.
종류
- 접두어가 붙은 딕셔너리 뷰
- USER 사용자가 소유한 객체 정보
- 사용자 작업 환경 분석
- ALL_ 사용자에게 접근이 허용된 객체 정보 저장
- DBA_ DBA 권한을 가진 사용자가 접근할 수 있는 정보
- V$
- 실행 중인 인스턴스를 실시간으로 동적으로 보여줌
- 표현
- SELECT <컬럼> FROM V$<뷰_이름> WHERE <필요 조건>;
- USER 사용자가 소유한 객체 정보
- 접두가 없는 동의어(synonym)
- DICTIONARY 모든 데이터 딕셔너리 테이블, 뷰, 시노님 저장
- TABLE_PRIVILEGES 사용자가 권한을 부여했거나 부여 받은 객체에 대한 권한
- 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;
'Database' 카테고리의 다른 글
[Modeling] Ch02.개념 모델링 (0) | 2025.05.12 |
---|---|
[Modeling] Ch01. 데이터 모델링 이론 (0) | 2025.05.12 |
[Database] Ch11.DDL 데이터 정의어 (0) | 2025.05.11 |
[Database] Ch09. Transaction Control (0) | 2025.05.06 |
[Database] Ch08. Constraint 제약조건 (0) | 2025.05.05 |