💡 핵심 요약 (TL;DR)
Data Dictionary의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
2. Data Dictionary Views(딕셔너리 뷰) : Base Table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰.
Data Dictionary
- DB관리에 필요한 모든 정보가 저장되어있다.
- Data Dictionary 구성
- Base Tables : DB의 모든 정보를 oracle이 oracle 스스로 보기 쉬운 형태로 기록해 놓은 테이블.
- oracle이 스스로를 위한 이진정보를 저장.
- 시스템정보는 건들면 위험하기때문에 보통 뷰를 통해서 조회만 가능.
- Data Dictionary Views(딕셔너리 뷰) : Base Table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰.
- 딕셔너리에서 사용하는 뷰를 딕셔너리 뷰라고 함.
- 시스템뷰에 속함.
- DB생성시 오라클시스템에 의해 자동 생성됨.
- 읽기전용(select만 가능)
- 주요 딕셔너리뷰 4가지 : ALL, USER, DBA, V$

V$XXX 예시
- Dynamic Performance View의 약어
- 주로 DBA에게만 액세스가 허용.
- 모든 DB의 접근 및 조회가능.
- 실시간 반영 O
- 주로 DBA의 모니터링 작업용 정보를 제공.
- ex) v$session, v$datafile
주요 딕셔너리뷰 4가지 : USER, ALL, DBA, V$
- 개발자들은 주로 USER, ALL 딕셔너리뷰를 사용하고 DB관리자들은 DBA를 사용한다.
| 종류 |
접근가능자 |
조회가능한 정보 |
실시간 반영 |
예시 |
| USER_XXX |
SQL접속중인 사용자 |
접속중인 사용자가 소유한 객체 |
X |
uesr_tables, user_views, uesr_users, user_constraints, user_indexes |
| ALL_XXX |
SQL접속중인 사용자 |
접속중인 사용자가 소유하거나 접근 권한이 있는 모든 객체 |
X |
all_tables, all_view, all_indexes |
| DBA_XXX |
DBA (보통 sys유저) |
모든 DB의 객체 |
X |
dba_users, dba_data_files, dba_tables |
| V$XXX |
DBA (보통 sys유저) |
모든 DB의 객체 |
O |
v$session, v$datafile |
개발자가 자주 사용하는 딕셔너리 뷰 예시
dictionary 뷰
- 테이블에 대한 설명을 볼 수 있다.
- 사용빈도수가 높음 => 따라서 동의어가 존재함 :
dict(딕트)
1 2 3 4 5 6 7 8 9 10
| //사용방법 $ desc dictionary; $ select * from dictionary; //천개가 넘는 컬럼이 출력된다. 비효율적 따라서 아래와 같이 사용한다.
//예시1 : 테이블명이 user_users인 딕셔너리 뷰의 모든 컬럼 출력 $ select * from dictionary where lower(table_name) = 'user_users';
//예시2 : 테이블단어가 들어간 딕셔너리 뷰의 모든 컬럼 출력 $ select * from dict where lower(table_name) like '%tables%';
|
USER_views 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| //예시 //보통 DB사이즈가 매우 크기때문에 *를 쓰면 데이터처리 시간이 오래걸려서 비추 $ select * from user_views;
//따라서 desc먼저 날린 뒤 원하는 컬럼을 선택하여 select쿼리를 날리면 된다. $ desc user_views;
$ select view_name, text $ from user_views;
//출력값 VIEW_NAME TEXT -------------------- ---------------------------------------- EMPVU80 select employee_id, first_name || ' ' || last_name, salary, department_id from e
DEPT_SUM_VU select d.department_name, min(e.salary), max(e.salary), avg(e.salary) from emplo
|
user_sequences 예시
1 2 3 4 5 6 7 8 9 10
| select sequence_name, min_value, max_value, increment_by, last_number from user_sequences
//출력값 SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER -------------------- ---------- ---------- ------------ ----------- DEPARTMENTS_SEQ 1 9990 10 280 DEPT_ID_SEQ 1 1000 10 750 EMPLOYEES_SEQ 1 1.0000E+28 1 207 LOCATIONS_SEQ 1 9900 100 3300
|
#TILITWILL(JAVA)Oracle