데이터를 읽고 쓰는 단위는 블록이지만, 테이블스페이스로부터 공간을 할당하는 단위는 익스텐트이다.
테이블이나 인덱스에 데이터를 입력하다가, 공간이 부족해지면 해당 오브젝트가 속한 테이블스페이스(물리적으로는 데이터파일)로부터 추가적인 공간을 할당받는다.
이때 정해진 익스텐트 크기의 연속된 블록을 할당받는다.
익스텐트 내 블록은 논리적으로는 인접하지만, 익스텐트끼리 서로 인접하지는 않는다. 예를 들어 어떤 세그먼트에 익스텐트 2개가 할당됐는데, 데이터 파일 내에서 이 둘이 서로 멀리 떨어져 있을 수 있다.
Oracle은 한 익스텐트에 속한 모든 블록을 단일 오브젝트가 사용한다.
항상 연속된 블록으로 구성, I/O 효율성을 높이기 위해 설계테이블, 인덱스, Undo처럼 저장공간을 필요로 하는 데이터베이스 오브젝트이다.
저장공간을 필요로 한다는 것은 한 개 이상의 익스텐트를 사용함을 뜻한다.
테이블을 생성할 때, 내부적으로는 테이블 세그먼트가 생성된다. 인덱스를 생성할 때, 내부적으로 인덱스 세그먼트가 생성된다.
다른 오브젝트는 세그먼트와 1:1 대응관계를 갖지만, 파티션은 1:M 관계를 갖는다. 즉, 파티션 테이블(또는 인덱스)을 만들면, 내부적으로 여러 개의 세그먼트가 만들어진다.
한 세그먼트는 자신이 속한 테이블스페이스 내 여러 데이터 파일에 걸쳐 저장될 수 있다. 즉, 세그먼트에 할당된 익스텐트가 여러 데이터 파일에 흩어져 저장되는 것이며, 그래야 디스크 경합을 줄이고 I/O 분산 효과를 얻을 수 있다.