상세 컨텐츠

본문 제목

[오라클 교재] 부록 A. ORACLE DATA DICTIONARY

프로그래밍/DB

by 라제폰 2008. 12. 26. 21:13

본문

A. ORACLE DATA DICTIONARY

ORACLE DATA DICTIONARY SYS USER의 소요로써 ORACLE8 SERVER의 가장 중요한 구성요소 중 하나로써 데이터베이스에 대한 모든 정보를 가지며, 대부분은 읽기 전용으로 제공되는 TABLE VIEW의 집합이다. 데이터베이스에 대한 작업, 주로 DDL, DCL문장이 수행되면 ORACLE8 SERVER DATA DICTIONARY를 갱신하고 유지 보수한다.

 

1. ORACLE DATA DICTIONARY의 내용

       LOG ON할 수 있는 사용자명(user name)

       사용자에게 허가된 권한(system privilege, object privilege)

       데이터베이스 객체명(table, view, index, sequence, synonym)

       테이블 제약 조건

       감사(Audit) 정보

 

2. ORACLE DATA DICTIONARY의 내용 조회

ORACLE DBA의 임무 중 하나가  DATA DICTIONARY의 내용을 적절히 조회하여 최적의 상태로 Database를 운영하는 것이다. 또한 일반 사용자도 사용자의 권한에 따라 QUERY할 수 있는 DATA DICTIONARY가 있다. 이들의 종류는 4가지로 다음과 같다.

 

접두어

   

USER_

SESSION을 이루고 있는 사용자가 소유한 객체에 관한 정보

ALL_

SESSION을 이루고 있는 사용자에게 액세스가 허용된 객체에 관한 정보

DBA_

DBA권한을 가진 사용자가 액세스할 수 있는 정보

V$

Dynamic Performance View라고도 하며, 현재 Database의 상태에 관한 정보로 주로 DBA에게만 액세스가 허용되어 있다.

 

문제1) 현재 SESSION을 이루고 있는 사용자가 조회할 수 있는 DATA DICTIONARY가 어떠한 것이 있는가를 조회하여라.

SQL> COL table_name FORMAT a30

SQL> COL comments FORMAT a50

SQL> SELECT *

  2  FROM dictionary;

 

TABLE_NAME                     COMMENTS

------------------------------ --------------------------------------------------

ALL_ARGUMENTS                  Arguments in object accessible to the user

ALL_CATALOG                    All tables, views, synonyms, sequences accessible

                               to the user

ALL_CLUSTERS                   Description of clusters accessible to the user

ALL_CLUSTER_HASH_EXPRESSIONS   Hash functions for all accessible clusters

ALL_COL_COMMENTS               Comments on columns of accessible tables and views

 

문제2) 현재 SESSION을 이루고 있는 사용자가 소유하고 있는 OBJECT를 모두 조회하여라.

SQL> COL object_name FORMAT a30

SQL> SELECT object_name,object_type,created

  2  FROM user_objects;

 

OBJECT_NAME                    OBJECT_TYPE   CREATED

------------------------------ ------------- ----------

BONUS                          TABLE         23-FEB-99

CUSTID                         SEQUENCE      23-FEB-99

CUSTOMER                       TABLE         23-FEB-99

CUSTOMER_PRIMARY_KEY           INDEX         23-FEB-99

DEPT                           TABLE         23-FEB-99

DEPT_PRIMARY_KEY               INDEX         23-FEB-99

DEPT_SUM                       VIEW          18-FEB-99

DNAME_SAL                      FUNCTION      23-FEB-99

DNAME_SAL_DISP                 PROCEDURE     23-FEB-99

EMP_ROW_AUD                    TRIGGER       23-FEB-99

. . . . . . . . . . .

47 rows selected.

 

문제3) EMP 테이블에 대한 모든 제약 조건을 검색하시오.

SQL> COL constraint_name FORMAT a20

SQL> COL constraint_type FORMAT a1

SQL> COL search_condition FORMAT a20

SQL> COL r_constraint_name FORMAT a20

SQL> SELECT constraint_name,constraint_type,

  2  search_condition,r_constraint_name

  3  FROM user_constraints

  4  WHERE table_name = 'EMP';

 

CONSTRAINT_NAME      C SEARCH_CONDITION     R_CONSTRAINT_NAME

-------------------- - -------------------- ------------------

SYS_C00738           C EMPNO IS NOT NULL

SYS_C00739           C DEPTNO IS NOT NULL

EMP_PRIMARY_KEY      P

EMP_SELF_KEY         R                      EMP_PRIMARY_KEY

EMP_FOREIGN_KEY      R                      DEPT_PRIMARY_KEY

 

 

 

 

문제4) EMP 테이블의 모든 열에 대한 제약 조건을 검색하시오.

SQL> COL constraint_name FORMAT a20

SQL> COL column_name  FORMAT a20

SQL> SELECT constraint_name,column_name

  2  FROM user_cons_columns

  3  WHERE table_name = 'EMP';

 

CONSTRAINT_NAME      COLUMN_NAME

-------------------- --------------------

EMP_FOREIGN_KEY      DEPTNO

EMP_PRIMARY_KEY      EMPNO

EMP_SELF_KEY         MGR

SYS_C00738           EMPNO

SYS_C00739           DEPTNO

 

문제5) SCOTT이 소유하고 있는 테이블의 reference관계에 대한 제약 조건을 검색하시오.

SQL> SET pagesize 24

SQL> SET linesize 132

SQL> COL fk_owner FORMAT a10

SQL> COL pk_owner FORMAT a10

SQL> COL fk_table FORMAT a15

SQL> COL pk_table FORMAT a15

SQL> COL fk_col FORMAT a15

SQL> COL pk_col FORMAT a15

SQL> SELECT fk.owner  fk_owner,

  2   fk.table_name  fk_table,

  3   fkc.column_name fk_col,

  4   pk.owner  pk_owner,

  5   pk.table_name pk_table,

  6   pkc.column_name pk_col

  7  FROM user_constraints fk, user_constraints pk,

  8   user_cons_columns fkc, user_cons_columns pkc

  9  WHERE fk.r_constraint_name = pk.constraint_name

 10   AND fk.constraint_type = 'R'

 11   AND pk.constraint_type = 'P'

 12   AND fk.r_owner = pk.owner

 13   AND fk.constraint_name = fkc.constraint_name

 14   AND pk.constraint_name = pkc.constraint_name

 15   AND fk.owner = fkc.owner

 16   AND fk.table_name = fkc.table_name

 17   AND pk.owner = pkc.owner

 18   AND pk.table_name = pkc.table_name;

 

FK_OWNER   FK_TABLE        FK_COL          PK_OWNER   PK_TABLE        PK_COL

---------- --------------- --------------- ---------- --------------- --------

SCOTT      ORD             CUSTID          SCOTT      CUSTOMER        CUSTID

SCOTT      EMP             DEPTNO          SCOTT      DEPT            DEPTNO

SCOTT      EMP             MGR             SCOTT      EMP             EMPNO

SCOTT      ITEM            ORDID           SCOTT      ORD             ORDID


◈ 연 습 문 제 ◈

 

1. 현재 SESSION을 이루고 있는 사용자의 시스템 권한을 확인하여라.

 

2. 현재 SESSION을 이루고 있는 사용자의 오브젝트 권한을 확인하여라.

 

3. 현재 SESSION을 이루고 있는 사용자가 사용할 수 있는 공간(free space)을 확인하여라.

 

4. 현재 SESSION을 이루고 있는 사용자가 작성한 프로시저와 함수를 조회하여라.

 

5. EMP 테이블에 관련된 TRIGGER를 모두 조회하여라.

 

 


관련글 더보기