테이블스페이스(TABLESPACE)

2012. 1. 20. 13:49DataBase/Oracle

반응형
궁금하다!!

테이블스페이스? 감이 오질 않는다. 대충은 어느정도으 공간만을 쓰겠다고 선언하는 것과 같은데..
보통 C언어에서 보면 malloc를 할당해서 쓰는 것 처럼!?????? 암튼 정리 해보자!

먼저 알아야 할 것이있다. 테이블스페이스를 논할려면 오라클의 논리적인 데이터저장소에 대해서 알아야 한다.

1. BLOCK : 오라클에서 말하는 데이터 입,출력의 최소단위
                 음..2KB,4KB,8KB,16KB,32KB 크기종류라고 한다.
                 언제 어디에서 설정을 해주는 걸까??...궁금증은..깊어만 간다..배우고 알자!ㅠ_ㅠ
음..오라클 셋팅시에 해주는거 같은데..설치도 한번 정리해봐야겠다.
2. EXTENT : SEGMENT의 할당단위 1 EXTENT는 8 BLOCK 이다.

3. SEGMENT : 테이블(TABLE), 인덱스(INDEX)를 합쳐서 SEGMENT라고 부른다.

4. TABLESPACE : SEGMENT를 저장해 놓은 공간.

5. DATABASE : 여러개의 TABLESPACE를 모아놓은 것.

테이블 스페이스를 db에서 확인 할려면 아래의 sql을 수행한다.

select * from dba_tablespaces;




테이블스페이스 이제 감이 조금 오는것인가?? 머리속에서의 데이터 구조는 정확히 그려지지 않지만..
어떤것인지는 알겠다.
테이블스페이스를 쓸려면 생성 -> 테이블생성시 쓰고자하는 테이블스페이스를 지정해주면 된다.

ex) 테이블 스페이스 생성
CREATE TABLESPACE TEST_ACET
DATAFILE 'XXXX\XXXX\TEST_ACET01.dbf'
SIZE 500M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE


이제 테이블을 생성할 때 테이블스페이스를 지정해서 만들어주면 된다^-^good~
ex) 테이블 생성
CREATE TABLE ACET_TB(
ID VARCHAR2(10),
PW VARCHAR2(20)
)TABLESPACE TEST_ACET


- 끝 -


끝이라고 생각했지만..헷깔리는게 있다...

1. 테이블스페이스 생성
2. 테이블에 테이블스페이스 사용
3. 자..여기에서..INSERT 시 메모리에 있다가 commit 때리면 테이블스페이스에 저장이 되어진다고 한다!!!!
저장이 되어질때, 500M인 테이블스페이스를 생성했다고 하면, 해당 path에 500M의 범위의 내용이 들어가는 것인가?
INSERT가 2번 일어나면 해당 테이블스페이스에 500M이하인 내용이 저장이 되는것인가??????-_-;;
마치 객체 테이블스페이스 inset객체 = new 테이블스페이스(); 이라고했을
때 insert객체.add("실제내용"); 이것처럼?? 아니면 new가 한번만 일어나고 그냥 내용만 쌓이는건가?? 범위는 500M이하로??
헷깔린다....ㅠ___ㅠ

간략하게 정리해보면
1) INSERT가 일어남.
2) 그 내용이 테이블스페이스의 범위(500M)
3) 테이블스페이스의 경로(DATAFILE 'XXXX\XXXX\TEST_ACET01.dbf') 에 저장.
으로 볼 수 있겠다. 자꾸 자바랑 엮어서 생각하니깐 답 안나온다 ㅋㅋㅋ 오라클은 C언어로 만들어진거 같은디..ㅋ


다음에는 unique와 pk의 차이점에 대해서 알아보자 ㅋㅋ 아니면 bind변수를 써야하는 이유? - 끝! -
반응형

'DataBase > Oracle' 카테고리의 다른 글

옵티마이저~~~!!!  (0) 2012.03.12
ㅎㅎㅎ당첨~~~  (0) 2012.03.08
oracle spool 사용하기  (0) 2012.02.02
새로쓴 대용량 데이터베이스 솔루션_2012.01.26  (0) 2012.01.26
오라클 공부 시작!!  (0) 2012.01.19