Database Reference
In-Depth Information
The Storage Hierarchy in an Oracle Database
A database is made up of one or more tablespaces . A tablespace is a logical storage container in Oracle that comes
at the top of the storage hierarchy and is made up of one or more data files. These files might be cooked files in a
file system, raw partitions, ASM-managed database files, or files on a clustered file system. A tablespace contains
segments, as described next.
Segments
Segments are the major organizational structure within a tablespace. Segments are simply your database objects that
consume storage—typically objects such as tables, indexes, undo segments, and so on. Most times, when you create a
table, you create a table segment. When you create a partitioned table, you are not creating a table segment, rather you
create a segment per partition. When you create an index, you normally create an index segment, and so on. Every
object that consumes storage is ultimately stored in a single segment. There are undo segments, temporary segments,
cluster segments, index segments, and so on.
it might be confusing to read “every object that consumes storage is ultimately stored in a single segment.”
You will find many CREATE statements that create multisegment objects. the confusion lies in the fact that a single
CREATE statement may ultimately create objects that consist of zero, one, or more segments! For example, CREATE TABLE
T ( x int primary key, y clob ) will create four segments: one for the TABLE T , one for the index that will be
created in support of the primary key, and two for the CLOB (one segment for the CLOB is the LOB index and the other
segment is the LOB data itself). On the other hand, CREATE TABLE T ( x int, y date ) cluster MY_CLUSTER will
create zero segments (the cluster is the segment in this case). We'll explore this concept further in Chapter 10.
Note
Extents
Segments consist of one or more extents . An extent is a logically contiguous allocation of space in a file. (Files
themselves, in general, are not contiguous on disk; otherwise, we would never need a disk defragmentation tool!
Also, with disk technologies such as Redundant Array of Independent Disks (RAID), you might find that a single file
also spans many physical disks.) Traditionally, every segment starts with at least one extent. Oracle 11 g Release 2 has
introduced the concept of a “deferred” segment—a segment that will not immediately allocate an extent, so in that
release and going forward, a segment might defer allocating its initial extent until data is inserted into it. When an
object needs to grow beyond its initial extent, it will request another extent be allocated to it. This second extent will
not necessarily be located right next to the first extent on disk—it may very well not even be allocated in the same file
as the first extent. The second extent may be located very far away from the first extent, but the space within an extent
is always logically contiguous in a file. Extents vary in size from one Oracle data block (explained shortly) to 2GB.
Blocks
Extents, in turn, consist of blocks . A block is the smallest unit of space allocation in Oracle. Blocks are where your
rows of data, or index entries, or temporary sort results are stored. A block is what Oracle typically reads from and
writes to disk. Blocks in Oracle are generally one of four common sizes: 2KB, 4KB, 8KB, or 16KB (although 32KB is also
permissible in some cases; there are restrictions in place as to the maximum size by operating system).
 
 
Search WWH ::




Custom Search