Database/ORACLE

3일차 - 7장. 데이터베이스 저장 영역 구조 관리

99iberty 2013. 12. 4. 13:54

 

DB

 

Tablespace ;

 

Segment ; object중에서 저장 영역을 필요로 하는 것들이 있다. 그것들을 저장영역의 키워드로 segment라고 한다.

저장 공간의 입장에서 보면 table을 segment라고 한다.

index도 index segment라고 함.

우리가 본 Table은 창고.

 

Extent ;    segment는 하나 또는 여러개의 extent로 구성되어 있음.

공간을 할당하는 할당 단위.

 

Block    ; 하나의 extent 는 여러 개의 블럭으로 구성.

 

BEST DB 래..ㅋㅋ

 

 

 

집 앞에 창고를 지을 때 전제조건 : 땅이 있어야 함.

창고를 짓기 위해선 용도를 결정.

창고의 크기는 내가 갖고 있는 책을 넣을 수 있을만큼.

근데 그 양은 늘어날수도 줄어들 수도....

창고는 보관의 용도이므로 파티션을 나누어 보관. 나중에 쓰기 편하도록.

해당 창고가 다 쌓이면 멀리 창고 2를 만듦. (중간에 다른 용도로 뭔가를 썼다면)

 

 

 

오라클에서는 extent 관리 방식 두 가지로 나뉘어짐.

 

1. Dictionary Managed TBS

ex) 논리적 관점의 테이블스페이스 A B C 만듦.

A에다가 사원 부서 테이블 씀.

extent 관리를 Data dictionary 안의 UET , FET 테이블에서 관리했었음.

각각의 테이블스페이스에서 사용된 extent 정보, free하게 사용가능한 정보를 테이블로 가지고 있었음.

사원 테이블 공간을 다 썼다, 새 창고 지어야 한다 하면 Data dictinoray로 감.

FET 보고 거기다 새 테이블 지음. 그럼 FET에서 해당 내용 빠지고 UET로 감.

공간이 필요할 때마다 Data Dictinory 에게 물어봐서 지우고 등록하고 작업을 함.

너무 access가 잦게 되기 때문에 속도 저하의 원인이 됨, 그래서 바꿈.

 

2. Locally Managed TBS (8i부터 생김)

- 8i부터 디폴트 방식.

- 너네 땅덩어리에서 해결해 ㅋ

- 각각의 테이블스페이스에다가 헤더 만들어서 거기서 관리.

- 저장공간의 할당과 해제가 분산됨.

- 할당받으면 1로 안 쓰면 0 으로 바꾸게 됨. -> 해제하고 할당하고 두번의 작업 안 해도 됨.

 

 

 

테이블스페이스 오프라인 할 때 모드를 결정해서 쓸 수 없는 상태로 바꿔야 함.

Normal    : 디폴트. 더티한 블럭만 디스크에 쓰고 메모리 클린시키고 테이블스페이스 off.

Temporary ; 만약 물리적인 a01.dbf가 손상되었다. normal 로 하면 손상되서 디스크에 쓸 수가 없다.

normal 로 하면 에러 난다. 그럴 때 선택.

쓸 수 있는 다른 파일은 쓴다. 만약 손상된 파일에 쓰게 하면 메모리에서 사라지게 함.

 

Immediate ;    해당 TBS의 물리적 데이터파일들이 다 손상되었다.

무조건 메모리에서 없애버려, 쓰려고 시도도 하지말라.

 

그러므로 Temporary 와 Immediate는 온라인으로 돌릴 때 반드시 recovery 수행하게 됨.