Quiet Time

데이터 딕셔너리를 통해서 객체 관리

DATA 를 저장하는 테이블 리스트와 그 건수등을 조사할 때 필요하다.

  • 3장 목차

  1. 데이터 딕셔너리 소개
  2. 데이터 딕셔너리의 종류
  3. 데이터 딕셔너리 활용 방법

3.1 데이터 딕셔너리란 ?
     " db 에 생성되어있는 db object에 대한 정보가 들어있는 사전"

문제418. scott이 소유하고 있는 테이블 리스트를 확인하시오

scott> select table_name
          from user_tables;   ----> data ditionary
문제419. scott이 소유하고 있는 테이블 리스트와 그 건수를 조회하시오

exec dbms_stats.gather_schema_stats('SCOTT');

select table_name, num_rows
  from user_tables;


문제420. sh 계정이 가지고 있는 테이블명, 그 로우수를 출력하시오


select table_name, num_rows
  from user_tables
order by num_rows desc nulls last;



SH@orcl> select table_name, num_rows
  2    from user_tables
  3  order by num_rows desc nulls last;

TABLE_NAME                       NUM_ROWS
------------------------------ ----------
SALES                              918843
COSTS                               82112
CUSTOMERS                           55500
FWEEK_PSCAT_SALES_MV                11266
SUPPLEMENTARY_DEMOGRAPHICS           4500
TIMES                                1826
PROMOTIONS                            503
PRODUCTS                               72
CAL_MONTH_SALES_MV                     48
COUNTRIES                              23
CHANNELS                                5
SALES_TRANSACTIONS_EXT                  0
DIMENSION_EXCEPTIONS                    0
DR$SUP_TEXT_IDX$K
DR$SUP_TEXT_IDX$N
DR$SUP_TEXT_IDX$R
DR$SUP_TEXT_IDX$I


문제421. 그냥 scott에서 sh 계정이 가지고 있는 테이블명과 그 건수를 보고 싶다면 어떻게 해야하는가



          3.2 데이터 딕셔너리의 종류

  1. user_xxx : 해당 유저가 소유하고 있는 객체들
  2. all_xxx     : 해당 유저가 소유하고 있는 객체들 + 다른 유저들이 권한을 준것
  3. dba_xxx   : DB에서 만들어진 모든 객체들을  볼 수 있다.


     xxx ---> tables, view, indexes, synonyms,.......

SCOTT>  
select table_name, num_rows
               from dba_tables
               where owner = 'SH';



문제422. sh 계정이 가지고 있는 테이블 리스트, 그 건수, 순위를 출력하는데 순위가 건수가 높은것 부터 순위를 부여하시오!

select table_name, num_rows
               from dba_tables
               where owner = 'SH'
;


문제423. 위의 결과에서 순위가 1등, 2등, 3등 만 출력하세요 


SELECT *
  FROM
       (SELECT table_name,
              num_rows,
              rank() over (ORDER BY num_rows desc nulls last) 순위
         FROM dba_tables
        WHERE owner = 'SH'
       )
 WHERE 순위 in (1,2,3);



문제424. hr 계정이 가지고 있는 테이블들에 대한 상세한 설명이 되어있는 정보를 조회하시오


select table_name, comments
  from dba_tab_comments
where owner = 'HR';

문제425. scott 계정이 가지고 있는 테이블들에 대한 상세한 설명이 되어있는 정보를 조회하시오



select table_name, comments
  from dba_tab_comments
where owner = 'SCOTT';


  • 테이블에 대한 주석을 다는 방법
- COMMENT ON TABLE EMP
IS '사원에 대한 정보가 들어있는 테이블입니다.';

문제426. DEPT 테이블에 대한 COMMENT 를 생성하시오


  COMMENT ON TABLE EMP
IS '사원에 대한 정보가 들어있는 테이블입니다.';

   COMMENT ON TABLE DEPT
IS '부서에 대한 정보가 들어있는 테이블입니다.';


문제427. EMP 테이블이 언제 생성이 되었는지 확인하시오 .


SCOTT> DESC USER_TABLES;

SCOTT> DESC USER_OBJECTS;








ALTER SESSION SET nls_date_format='RR/MM/DD:HH24:MI:SS';


문제428. emp 테이블에 email 이라는 컬럼을 추가하세요


alter table EMP add email varchar2(50);


문제429. emp 테이블에 최근에 컬럼 추가/삭제와 같은 DDL 작업이 언제 발생햇는지 알아내시오 

SELECT LAST_DDL_TIME, OBJECT_NAME
  FROM USER_OBJECTS;
  --WHERE OBJECT_NAME= 'EMP';

문제430. EMP 테이블에 추가한 EMAIL 컬럼을 삭제하시오


  alter table emp drop column email;

문제431. sal 이라는 컬럼이 어느 테이블에 포함되어 있느닞 확인하시오

select table_name, column_name
  from dba_tab_columns
where column_name='SAL';



  • 휴지통을 비우는 명령어
SCOTT@orcl> purge recyclebin;

휴지통이 지워졌습니다.


  • data dictionary 를 조회하는 view 
select * from dictionary;

select * from dictionary
where table_name like '%VIEW%';

문제432. DB 에 INDEX가 총 몇개가 있는지 조회하시오 





SELECT COUNT(*) FROM ALL_INDEXES;