A multitenant container database (CDB) is a collection of schemas and schema objects, such as tables and indexes.
At the physical level, a CDB stores objects in data files. You can use the following mechanisms to store data files:
Operating system file system, which is a structure for storing and retrieving data. Most Oracle databases store files in a file system.
Cluster file system, which is a distributed file system that is a cluster of servers that collaborate to provide consistency and high performance to their clients. In an Oracle Real Application Cluster (Oracle RAC) environment, a cluster file system makes shared storage appear as a single file system that many computers share in a clustered environment.
Oracle Automatic Storage Management (Oracle ASM).
At the logical level, a CDB allocates data across the data files with the following structures:
- Tablespaces contain zero or more segments, which correspond to schema objects. A tablespace can contain segments that are allocated to different schemas, and the segments for one schema can span multiple tablespaces. At the physical level, a tablespace can store data in multiple data files, but multiple tablespaces cannot share data files. Each pluggable database (PDB) and application container has its own set of tablespaces. You can store user data in the default USERS tablespace or create additional tablespaces for specific application data or system data.
- Segments are sets of extents that are allocated for specific schema objects. Each schema object (or object partition) that consumes storage has its own segment. A segment can include extents from multiple data files, but it cannot span multiple tablespaces.
- Extents are sets of logically contiguous data blocks. Each extent is allocated to a schema object within a single data file. By default, Oracle Database allocates an initial extent when you create a schema object and segment. If the initial extent becomes full, the database automatically allocates another extent for the segment. The new extent does not need to be in the same data file.
- Data blocks are the smallest logical units of data storage. One logical data block corresponds to a specific number of bytes of persistent storage (for example, 2 KB) within a data file.