티스토리 뷰
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 | / |
제약 조건 유형
조인해서 많이 본다
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 | / |
입력 : 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번은 조인해서 많이 사용한다
'부산 ITWILL 학원 실습 > ORACLE' 카테고리의 다른 글
[SQL 활용] 퀴즈 3 (0) | 2018.08.09 |
---|---|
[SQL 활용] 퀴즈 2 (0) | 2018.08.09 |
[SQL 활용] 10. 데이터제어어(DCL) - 정리 및 실습 - 오브젝트 권한 2 (0) | 2018.08.09 |
[SQL 활용] 10. 데이터제어어(DCL) - 정리 및 실습 - 오브젝트 권한 1 (0) | 2018.08.09 |
[SQL 활용] 10. 데이터제어어(DCL) - 정리 및 실습 - 시스템 권한 2 (0) | 2018.08.09 |