본문 바로가기

자바 웹 개발자가 될거야/DB

[Oracle] Data Dictionary 구성요소와 사용

< Data Dictionary >

 

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

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

 

 

① Data Dictionary 구성요소

 

- Base Tables

  · DB의 모든 정보를 DBMS(오라클)가 보기 쉬운 형태( = 이진정보 )로 기록해 놓은 테이블

  · 유저에 대한 정보따로, 테이블에 대한 정보따로, 시퀀스에 대한 정보 따로 기록

 

- Data Dictionary Views

  · Base Table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰

  · 읽기 전용 ( select만 가능 )

  · Data Dictionary Views 유형

 

      ⓐ user_XXX : 내가 소유한 Object 정보 조회

desc user_users

SELECT username, user_id, default_tablespace, created
FROM user_users;
// 내 소유의 유저 = 즉, 나에 대한 정보확인

 

desc user_tables

SELECT table_name, tablespace_name
FROM user_tables;
// 내 소유의 테이블 정보확인
desc user_views

SELECT view_name, text
FROM user_views;
// 내 소유의 뷰 정보확인
desc user_sequences

SELECT sequence_name, min_value, max_value, increment_by, last_number
FROM user_sequences;
// 내 소유의 시퀀스 정보확인

 

 

    ⓑ all_XXX : 내가 소유하거나 접근 가능한 Object 정보 조회

 

더보기

all_tables와 user_tables의 차이

     

      ⓒ dba_XXX : DB의 모든 정보 조회, DBA만 select 가능, 실시간 아님

 

더보기
dba_tables, dba_data_files, dba_users

 

      ⓓ v$XXX : DB의 모든 정보 조회, DBA만 select 가능, 실시간

 

더보기

V$datafile와 dba_data_files 차이

 

 

② 코멘트 정보 알고 싶을 때

 

- 줄여서 dict라고도 가능

 

SELECT * FROM dictionary;

 

  · USER_TABLES 대문자로 써야하고 그에 따른 COMMENTS를 볼 수 있다.

 

 

③ 제약조건명의 컬럼 확인하기

 

- user_constraints 사용하면 제약조건명, 제약조건 유형, 조건 참조하는 곳을 볼 수 있지만 컬럼을 볼 수 없다,

- user_cons_colums 사용하면 컬럼과 제약조건명을 볼 수 있지만 제약조건 유형, 참조하는 곳을 볼 수 없다.

 

desc user_cons_colums
SELECT column_name, constraint_name
FROM user_cons_colums
WHERE table_name='EMPLOYEES';

 

 

- 퀴즈 ) user_constraints와 user_cons_columns Data Dictionary View를 조인해서 다음과 같은 결과를 출력하는 구문 작성

( 단, 쿼리구문이 실행될 때 테이블명을 입력 받아서 실행함.)

 

SELECT cc.column_name, cc.constraint_name, cst.constraint_type, cst.search_condition, cst.r_constraint_name
FROM user_cons_columns cc JOIN user_constraints cst
ON cc.constraint_name = cst.constraint_name
WHERE lower(cc.table_name) = lower('&tab_name');
save /home/oracle/cons1.sql