티스토리 뷰

시스템 테이블스페이스 & 데이터 딕셔너리

SYSTEM TABLESPACE & DATA DICTIONARY



시스템 테이블스페이스(SYSTEM TABLESPACE) : 

- 데이터 딕셔너리(DATA DICTIONARY)가 저장되어있고, 시스템 테이블스페이스가 손상될 경우 ORACLE 서버가 시작되지 않음

- 시스(SYS) 계정의 소유이지만, 들어있는 정보들이 너무 중요해서 시스 계정 조차도 테이블 내용을 바꾸지 말고 조회만 가능

- ORACLE 서버는 데이터 딕셔너리에 존재하는 정보들을 참조해서 운영된다


*데이터 딕셔너리란(DATA DICTIONARY)?

- ORACLE 서버의 모든 정보를 저장하고 있는 아주 중요한 테이블(TABLE)이나 뷰(VIEW), ORACLE에서 사용하는 거의 모든 메타 정보나 운영 관련된 중요한 정보들이 저장됨.



시스템 테이블스페이스(SYSTEM TABLESPACE) 안에 저장되어있는 데이터 딕셔너리(DATA DICTIONARY)수 조회 방법


SQL> select count(*) from dictionary;


* 버전마다 딕셔너리수가 다르다. 

9i (9.2.0.4 버전) = 1284개 

10g (10.2.0.5 버전) = 1882개

11g (11.2.0.2 버전) = 2600개



데이터 딕셔너리(DATA DICTIONARY) 구조 :

- 베이스 테이블 (BASE TABLE) : 저장용

- 데이터 딕셔너리 뷰 (DATA DICTIONARY VIEW) : 조회용 , 두가지로 나눠진다(정적, 동적)

- 정적 딕셔너리 (STATIC DICTIONARY) : 저장정보 수동 변경

- 동적 딕셔너리 (DYNAMIC DICTIONARY) : 저장정보 자동 변경


베이스 테이블 (BASE TABLE) 안에는 중요한 정보(원본 데이터) 가 저장 되어있어서, DBA(사람)은 접근이 불가하다.

그래서 내용을 조회 할 수 있도록 데이터 딕셔너리 뷰(DATA DICTIONARY VIEW) 조회용으로 제공한다. 베이스테이블은 테이터베이스 생성때 (dbca, create database) 자동으로 생성된다. 데이터 딕셔너리뷰는 dbca로는 자동 생성되지만, create database으로 생성했을 경우에는 추가적으로 catalog.sql  스크립트를 추가 실행해서 생성해줘야 한다



데이터 딕셔너리(DATA DICTIONARY) 내용 :

- 데이터베이스의 논리적인 구조와 물리적인 구조정보들이 저장

- 객체의 정의와 공간 사용정보들

- 제약조건에 관련된 정보

- 사용자에 관련된 정보

- 롤(ROLE), 프리빌리지(PRIVILEGE) 관련된 정보

- 감사 및 보안들에 관련된 정보


정적 딕셔너리(STATIC DICTIONARY) 와 동적 딕셔너리(DYNAMIC DICTIONARY) 의 차이 :

정적 딕셔너리 : 

- 딕셔너리에 저장된 정보들이 자동으로 변경되지 않는다

- 인스턴스(INSTANCE)가 오픈(OPEN)일 경우 조회 가능하다


동적 딕셔너리 : 

- 딕셔너리에 저장된 내용들을 실시간으로 컨트롤파일(CONTROL FILE)이나 메모리에서 데이터를 가져와서 보여준다

- V$로 시작된다

- 노마운트(NOMOUNT) 단계에서 조회가 가능하다



딕셔너리 카테고리 (DICTIONARY CATEGORY) :

종류가 너무 많아서 ORACLE은 4개의 카테고리로 분류 해놓았다

- USER_XXX : 예) USER_TABLES : 해당 사용자가 생성한 테이블만 볼수 있는 딕셔너리

  USER_INDEXES : 해당 사용자가 생성한 인덱스만 볼수 있는 딕셔너리

 이 딕셔너리는 해당 사용자가 생성한 내용만 볼수 있는 딕셔너리이다


- ALL_XXX : 예) ALL_TABLES : 접근 가능한 모든 테이블 내역을 볼수 있는 딕셔너리

ALL_INDEXES : 접근 가능한 모든 인덱스 내역을 볼수 있는 딕셔너리

이 딕셔너리는 해당 사용자가 생성한 것과 생성하지 않았더라도 접근이 가능한 내용을 볼수 있는 딕셔너리.

다른 사용자가 셀렉트(SELECT)해서 내용조회 가능


- DBA_XXX : 예) DBA_TABLES : 테이터베이스에 있는 모든 테이블 내역을 볼수 있는 딕셔너리

DBA_INDEXES : 테이터베이스에 있는 모든 인덱스 내역을 볼수 있는 딕셔너리

이 딕셔너리는 DBA 권한을 가지고 있는 사용자만 조회가능하다

데이터베이스에 생성되어있는 모든 내용을 다 볼수 있는 딕셔너리


- V$XXX : V$로 시작하는 다이나믹 퍼포먼스 뷰 (DYNAMIC PERFORMANCE VIEW)


정적 딕셔너리(STATIC DICTIONARY) 수동 업데이트 방법

순서 : 

1. SCOTT 계정으로 접속

2. 테이블 생성후 데이터 입력

3. USER_TABLES 딕셔너리 조회

4. 수동 업데이트 후 USER_TABLES 딕셔너리 다시 조회

5. 업데이트 내용 확인


1. SQL>conn scott/tiger

2. SQL> create table stest ( no number);

    > begin 

    2 for i  in 1..100 loop

    3 insert into stest values(i);

    4 end loop;

    5 commit;

    6 end;

    7 /

> select count(*) from stest;

3. USER_DICTIONARY 조회 


SQL> select table_name, num_rows

2 from user_tables

3 where table_name = 'STEST';


 


4. 정적 딕셔너리(STATIC DICTIONARY) 수동 업데이트후 USER_TABLES 다시 조회

 * 수동 업데이트 : 

- 어널라이즈 (ANALYZE) 명령어 말고 DBMS_STATS 패키지도 많이 사용된다

- 두 명령어는 해당 테이블을 전체스캔(FULL SCAN) 하는 명령어 이므로, 서버의 성능에 아주 나쁜 영향 을 주는 경우가 있다

함부로 사용해서는 안되는 명령어이다



SQL> analyze table stest compute statistics;





공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함