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를 모두 조회하여라.