테이블(Table)
- 데이터 스토리지의 기본 단위로, 행(row)과 열(column)로 저장됩니다.
- 실제 디스크 공간을 사용하지 않지만 사용자가 지정한 표현식이나 함수에 의해 계산될 수 있는 가상 컬럼(virtual column)을 지정할 수 있습니다.
- 테이블에 대한 압축 기능을 사용할 수 있습니다.
- 파티셔닝 옵션을 통해, 다양한 파티셔닝 기법을 사용할 수 있습니다.
- 테이블의 열로 또 다른 테이블을 정의할 수 있는 Nested Table 기능을 지원합니다.
- 특정 트랜잭션이나 세션에 한해 임시 테이블(temporary table)을 사용할 수 있습니다. 해당 트랜잭션이나 세션이 종료되면 해당 데이터는 자동으로 사라집니다.
데이터베이스 외부에 존재하는 일반 데이터에 대해 이를 데이터베이스 내의 일반 테이블처럼 읽기 작업을 할 수 있는 외부 테이블(external table)을 사용할 수 있습니다.
뷰(View)
- 뷰는 하나 혹은 그 이상의 테이블이나 다른 뷰에 저장된 데이터에 대한 맞춤형 표현 방법입니다.
- 뷰는 테이블처럼 사용할 수 있지만, 테이블과는 달리 별도의 저장 공간이 필요치 않습니다.
- 조인 뷰(Join View)를 사용할 수 있으며, DML 문장을 사용할 수 있는 경우를 Updatable Join View라고 합니다.
별도의 스키마 오브젝트는 아니지만, SQL 문장 안에 뷰처럼 사용할 수 있는 subquery를 Inline View라고 합니다.
클러스터(Cluster)
- 주로 함께 사용되는 공용 컬럼 값들을 기준으로 동일한 데이터 블록에 테이블 데이터 들이 저장되도록 하는데 사용됩니다.
Index cluster 형태를 쓸 수도 있고, cluster key 값에 대한 hash function의 결과 값에 따라 저장하는 형태를 사용할 수도 있습니다.
Materialized View
- 데이터에 대한 요약, 계산, 복제, 분산 등에 사용되는 스키마 오브젝트입니다.
별도의 저장 공간 사용, 마스터 테이블이 변경되면 반영되는 점, SQL 실행 속도의 향상, Query Rewrite에 의한 SQL의 투명성 등의 의미에서 인덱스와 유사한 개념입니다.
Materialized View Log
Materialized View가 정의된 마스터 테이블의 데이터가 변경된 경우, 이를 점진적으로 빠르게 반영할 수 있도록 마스터 테이블의 변경 내역을 저장하는 오브젝트입니다.
차원(Dimension)
- DW 환경에서 많이 사용되는 일/월/년 등과 같이, 컬럼들 혹은 컬럼 집합들 간의 계층적 관계를 정의하는 오브젝트입니다.
별도의 저장 공간이 필요치 않습니다.
시퀀스(Sequence)
- 유일한 일련 번호를 쉽고 빠르게 얻을 수 있는 오브젝트입니다.
오름차순/내림차순으로 사용할 수 있고, 번호들 간의 인터벌을 둘 수 있고, 메모리에 캐쉬 시킬 수도 있습니다.
Synonym
테이블, 뷰, materialized view, 시퀀스, procedure, function, package, type, 또 다른 synonym에 대한 alias로 data dictionary에 정의만 저장될 뿐이지, 별도의 저장 공간이 필요치 않습니다.
인덱스(Index)
다음과 같이 다양한 인덱스 기법을 지원합니다.
- B-tree index
- B-tree cluster index
- Hash cluster index
- Reverse key index
- Bitmap index
- Bitmap join index
- Function-based index
- Domain index
- Unique index와 Nonunique index를 생성할 수 있습니다.
- 여러 컬럼을 조합해서 인덱스를 생성할 수 있습니다.
인덱스를 invisible 상태로 변경할 수 있습니다. 이 경우 DML 오퍼레이션의 결과는 이 인덱스에 유지되지만, 옵티마이저에 의해서는 사용되지 않습니다. 인덱스 생성 결과를 검증한 후 visible 상태로 변경하면, 이 때부터 옵티마이저가 이 인덱스를 사용하게 됩니다.
Index-Organized Table(IOT)
이는 인덱스와 테이블을 하나로 합친 것과 같은 개념으로, 일반 테이블의 경우엔 데이터가 순서없이 저장되는 반면, 이 IOT에서는 primary key 순으로 B-tree 인덱스 구조에 저장됩니다. 또한 primary key 컬럼 값 뿐 아니라, 다른 컬럼들의 값들도 모두 이 한 오브젝트에 저장됩니다.