티스토리 뷰

Data Dictionary 사용


Dictionary에는 DB관리에 필요한 모든 정보가 저장되어있다

DBA는 Dictionary의 정보를 이용하여 효율적인 데이터베이스 ㅇ누영을 위해 필요한 정보를 획득할 수 있다

일반 사용자 및 Application 개발자에게도 데이터베이스에 대한 중요한 정보를 제공한다



Data Dictionary 구성

- Base Tables

 → DB의 모든 정보를 Oracle이 보기 쉬운 형태로 기록해 놓은 테이블

 → Data Dictionary View : Base Table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰

             가릴건 가리고 우리가 볼 수 있는 것만.

             읽을 수만 있다. 읽기 전용(Select만 가능)

             바꾸는건 Oracle이 바꾼다

             Base table으로 바꾸면 우린 Data Dictionary View를 통해서 볼 수 밖에 없다



오라클이 보기 쉬운 형태

- 기계어, 2진 정보



Data Dictionary Views 이름 규칙


뷰 접두어

용도

USER ( USER_XXX )

 유저의 뷰(유저의 스키마에 있는 내용, 내(유저)가 소유한 오브젝트 정보 조회)

 ex) user_objects, user_tables, user_views

ALL ( ALL_XXX )

 확장된 유저의 뷰(유저가 액세스할 수 있는 내용)

 내가 소유하거나 접근 가능한 오브젝트 정보 조회

 내껀 아닌데 권한이 있는 것

 hr 권한 X

 실시간 X

 ex) all_objects, all_tables

DBA ( DBA_XXX )

 데이터베이스 관리자의 뷰(모든 사람의 스키마에 있는 내용)

 DB의 모든 정보 조회

 DBA만 사용 가능

 실시간으로 볼 필요 없을 때 사용

 ex) dba_tables, dba_users, dba_data_files

V$ ( V$XXX )

 db의 모든 정보 조회

 DBA만 사용 가능

 실시간 확인이 필요할 때 사용

 ex) v$datafile, v$session


 v$session

 - DB에 접속해있는 SESSION 정보




1
conn hr/hr
cs


1
DESC user_tables
cs


1
2
SELECT table_name, tablespace_name, status
FROM user_tables;
cs


hr 소유의 테이블들이 뜸



1
DESC user_users
cs


내가 소유한 유저 정보를 볼 수 있는 곳 = 자기 자신 


1
2
3
SELECT username, user_id, account_status, default_tablespace,
        temporary_tablespace, created
FROM user_users;
cs


1
DESC dictionary
cs


1
COL table_name FORMAT a30
cs


1
COL comments FORMAT a50
cs


1
2
SELECT *
FROM dictionary;
cs


1
COL table_name FORMAT a20
cs


1
l
cs


1
/
cs


1
2
3
SELECT *
FROM dictionary
WHERE table_name = 'USER_USERS';
cs


' '는 대문자 사용하여야 함


1
2
3
SELECT *
FROM dict
WHERE table_name = 'USER_TABLES';
cs


dict

- dictionary 동의어

- 많이 사용해서 별명을 하나 가지고 있다 


1
DESC user_views
cs


1
2
SELECT view_name, text
from user_views;
cs


1
COL view_name FORMAT a20
cs


1
COL text FORMAT a50
cs


1
l
cs


1
/
cs


1
DESCRIBE DICTIONARY
cs


1
2
3
SELECT *
FROM dictionary
WHERE table_name = 'USER_OBJECTS';
cs


1
2
3
SELECT object_name, object_type, created, status
FROM user_objects
ORDER BY object_type;
cs


1
2
SELECT table_name
FROM user_tables;
cs


1
2
3
4
5
SELECT constraint_name, constraint_type,
       search_condition, r_constraint_name,
       delete_rule, status
FROM user_constraints
WHERE table_name = 'EMPLOYEES';
cs


1
DESCRIBE user_views
cs


1
SELECT view_name FROM user_views;
cs


1
2
3
SELECT sequence_name, min_value, max_value,
       increment_by, last_number
FROM user_sequences;
cs


1
DESC user_constraints
cs


1
2
3
SELECT constraint_name, constraint_type, search_condition
FROM user_constraints
WHERE table_name = 'DEPARTMENTS';
cs


1
COL constraint_name FORMAT a20
cs


1
COL search_condition FORMAT a20
cs


1
l
cs


1
/
cs


문제점. 조회할 수 있는 컬럼명이 없다

어느 컬럼에 선언되어있는지 알 수 없다

유추는 가능함 


1
DESC user_cons_columns
cs


1
2
3
SELECT constraint_name, column_name
FROM users_cons_columns
WHERE table_name = 'DEPARTMENTS';
cs


1
COL column_name FORMAT a20
cs


1
l
cs


1
/

cs


제약 조건 유형

조인해서 많이 본다 


1
2
3
4
5
SELECT b.column_name, a.constraint_name,
       a.constraint_type, a.search_condition
FROM user_constraints a join user_cons_columns b
ON a.constraint_name b.constraint_name
WHERE a.table_name = UPPER('&table');
cs


1
/

cs


입력 : employees


1
save /home/oracle/constraint.sql
cs


저장




주요 Data Dictionary Views


1

DICTIONARY(DICT)

 각 Dictionary에 대한 정보

2

USER_CATALOG(CAT)

 사용자 소유의 테이블, 뷰, 동의어 시퀀스 목록을 보여줌

3

USER_OBJECT(OBJ)

 사용자 소유이 모든 오브젝트에 대한 정보를 보여줌

4

USER_TABLES(TABS)

 사용자 소유의 모든 테이블에 대한 정보를 보여줌

5

USER_TAB_COLUMNS(COLS)

 사용자 소유의 모든 테이블을 구성하고 있는 컬럼에 대한 정보를 보여줌

6

USER_VIEWS

 사용자 소유의 모든 뷰에 대한 정보를 보여줌

7

USER_SYNONYMS(SYN)

 사용자 소유의 모든 동의어에 대한 정보를 보여줌

8

USER_SEQUENCES(SEQ)

 사용자 소유의 Sequence에 대한 정보를 보여줌

9

USER_CONSTRAINTS

 사용자 소유의 모든 TABLE의 제약조건에 대한 정보를 보여줌

10

USER_CONS_COLUMNS

 사용자 소유의 모든 TABLE의 제약사항이 지정된 COLUMN에 대한 정보를 보여줌

 제약조건의 디테일한 정보 보여줌

11

USER_TAB_COMMENTS

 사용자 소유의 모든 테이블의 주석을 보여줌

12

USER_COL_COMMENTS

 TABLE의 COLUMN에 대한 주석을 보여줌

13

USER_INDEXES(IND)

 사용자 소유의 모드 인덱스에 대한 정보를 보여줌

14

USER_IND_COLUMNS

 어떤 COLUMN에 인덱스가 생성되어 있는지에 대한 정보를 보여줌

15

USER_USERS

 자신의 계정에 대한 정보를 보여줌

16

USER_SYS_PRIVS

 사용자에게 부여된 시스템 권한을 보여줌

17

USER_TAB_PRIVS

 사용자에게 부여된 OBJECT 권한을 보여줌

18

USER_COL_PRIVS

 사용자에게 부여된 COLUMN 레벨의 오브젝트 권한에 대한 정보를 보여줌

10

ROLE_SYS_PRIVS

 롤에게 부여된 시스템 권한

20

USER_ROLE_PRIVS

 사용자에게 부여된 롤에 대한 정보를 보여줌


9번과 10번은 조인해서 많이 사용한다


공지사항
최근에 올라온 글
Total
Today
Yesterday