- Oracle 8i까지에서, segment의 Free Block들은 항상 freelist를 통해 관리 되었습니다.
- PCTUSED 아래로 채워진 block들이 freelist로 연결되어 있어서, insert가 필요하면 이 freelist를 segment header에서부터 뒤지면서 블록내의 빈 공간에 insert를 하게 됩니다.
- Oracle 9i부터는 PCTFREE, PCTUSED를 직접 지정하는 방법은 권하지 않고, SEGMENT SPACE MANAGEMENT AUTO 절을 넣어서 자동으로 관리하는 방법을 권장합니다.
- 이 ASSM방식은 segment에 할당된 space를 bitmap으로 관리 합니다.
- ASSM 방법을 이용하여 space를 관리하게 되면 free block에 대해서 좀 더 상세한 정보를 바탕으로 Space Utilization도 높아지고, freelist를 타고 다음다음 block을 access하는대신 BMB를 참고로 적당한 block들을 선택하기 때문에 space에 관한 성능도 좋아 집니다.
- ASSM 방식을 이용하려면 반드시 LOCALLY MANAGED TABLESPACE여야 하며, 다음과 같이 SEGMENT SPACE MANAGEMENT AUTO를 지정하면 됩니다.
SQL> CREATE TABLESPACE assm_tbs1 DATAFILE 'C:\oracle\oradata\tbs\assm_tbs1.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
- AUTO가 아닌 MANUAL로 지정되게 되면 이전과 같이 freelist 방식을 사용하게 됩니다.
- DBA_TABLESPACES view의 SEGMENT_SPACE_MANAGEMENT column을 통해 AUTO인지 MANUAL방식인지 확인이 가능 합니다.
- ASSM 방식으로 생성하면 BMB (BitMap Blocks)라는 것이 생기게 됩니다. 이 BMB에는 할당된 block들의 space정보를 4 bit를 이용 하여 여섯 가지 상태를 나타내는 bitmap 정보를 가지고 관리를 합니다.
- 강좌 URL : http://www.gurubee.net/lecture/1896
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.