Database/ORACLE

[스크랩] 오라클 block/extent/segment/tablespace 정의

99iberty 2014. 4. 9. 13:19

http://web.sihu.org:9080/wordpress/?p=94

 

어딜가나 storage할당 단위가 참 힘이 드는게 사실입니다.
우선, 다양한 크기의 할당단위를 쓰는 이유는 속도와 효율성 때문입니다.

block : 실제 data , row가 저장되는 기본적인 단위
extent : block이 여러개 모여서
segment : extent가 여러개 모여서
tablespace : unix의 file system과 같의 의미

크기순으로 나열하면
block < extent < segment < tablespace 이렇습니다.

크기가 일정한 것은 block와 tablespace 입니다.
block 은 오라클 설치할 때 결정, tablespace는 생성할때 크기를 정해줍니다.

실제 사용자가 쓰는 단위는 extent입니다.
create table test_table ( …)
tablespace test_space storage (initial 2m next 2m pctincrease 0)

위문장에서 데이터가 인서트되면 초기에 2m짜리 extent를 할당 받습니다.

그다음부터 2m를 할당받게 됩니다. (121번, block = 2048 bytes인경우)

segment는 table크기 입니다. 즉 위문장에서 segment이름은
test_table이고 크기는 대부분 계속 늘어나가 됩니다.

segment 중에 특이한 것은 rollback segment인데, 이넘은
매뉴얼을 한 번더 읽어보시는 것이 좋을 듯 합니다.

그리고 아래의 view를 참조하시면 도움이 ..
dba_data_files : data file 정보
dba_tablespaces : tablespace 정보
dba_rollback_segs : rollback segment 정보
dba_users : 오라클 사용자 정보
user_segment : 사용자 segment 정보

자세한 설명 : http://radiocom.kunsan.ac.kr/lecture/oracle/what_is/fragmentation.html