개발자 항해

Data Dictionary 사용 본문

DB/Oracle

Data Dictionary 사용

리치Y 2022. 8. 18. 16:36
  • Data Dictionary란?

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

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

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

 

 

1. 구성요소

 

1)  Base table : DB의 모든 정보를 Oracle이 보기 쉬운 형태로 기록해 놓은 테이블

2) Data Dictionary Views : Base table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰

                                           읽기 전용(select만 가능함)

 

 <Data Dictionary views의 종류>

- user_xxx : 내가 소유한 object에 대한 정보 조회 (개발자가 많이씀)

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

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

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

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

      등..이있다. 

 

- all_xxx : 내가 소유하거나 접근 가능한 object(table,view,sequence,index,synonym,function등 ) 에 대한 정보 조회

               (개발자가 많이씀)

ex) all_tables, all_views 등..

 

-dba_xxx : DB의 모든 정보 조회, DBA만 select 가능함. 실시간 X  (관리자가 많이씀)

ex) dba_tables, dba_views, dba_users,

      dba_data_files 등...

 

-v$xxx :   DB의 모든 정보 조회, DBA만 select 가능함. 실시간 O (관리자가 많이씀)

ex) v$datafile, v$session 등...

 

 

2. 사용법

 

user_cons_columns를 사용하고 싶다면

desc 구문 날려서 user_cons_columns 구조를 살펴보고

 

아래 처럼 필요한거 골라서 사용하면 된다.

where절을 추가하여 employees테이블의 column_name, constraint_name을 살펴보았다.

 

* 참고사항

 

테이블에 선언된 제약 조건중

user_constraints 은

=>제약조건명, 제약조건 유형, 조건문, 참조하는 곳의 제약조건명 이 있고

user_cons_columns은

=>컬럼명, 제약 조건명 이 있기때문에

 두개를 다 써야 자세히 알수있다.

 

하나하나 따로쓰면 알기 어려우므로 조인해서 쓰면 한눈에 보인다. 

 

 

where절에는 대소문자 구분을 없애려고 다 소문자로 변환해주는 조건을 부여했다. 

완성된 구문을 날리면 Enter value for tab_name: 에 커서 깜빡인다. 

그러면 거기에 알고 싶은 테이블 명을 치면 아래와 같이 나온다.

 

 

많이 쓰이므로 아래와같이 저장하였다.

l(소문자 엘)로 구문확인후 save로 저장.

 

 

user_views를 쓰고 싶다면 아래처럼 구조를 확인하고 쓰면된다. 

view name과 text, text vc가 많이 쓰인다. text와 text vc차이는 type보면 알겠지만 길이 차이이다. 맞는걸로 골라쓰면됨.

 

 

 

 

- view_name, text 사용

 

 

 

 

- user_sequence 사용

 

 

 

 

 

- user_indexes 사용

employees 테이블에 index를 조회했다.

 

 

PK나 UK는 생성하면 자동으로 index를 생성하므로 따로 생성안해도된다.

(만약 수동으로 생성하면 한개더 생성해줘서 인덱스가 이중으로 존재하게 된다.  )

위에 표시한것과 같이 자동 생성된 index는 제약조건명과 이름이 같다. 

 

 

 

 - user_ind_columns 사용

 

테이블 명과 인덱스 명을 같이 볼수도 있다.

 

 

'DB > Oracle' 카테고리의 다른 글

Data Dictionary - 사용자 관리  (0) 2022.08.30
데이터 제어어(DCL)- 유저생성,권한부여 및 회수  (0) 2022.08.25
데이터 역모델링  (0) 2022.08.19
조건부 표현식  (0) 2022.08.19
데이터 정의어(DDL) - Index, Synonym  (0) 2022.08.05