Chapter 03 · Physical Storage: Datafiles, Tablespaces, Blocks, Segments, Extents, and ASM Concepts

Design a Storage Layout for OLTP, Analytics, Temp, Undo, Recovery, and Growth

Turn Oracle storage mechanics into a workload-driven capacity, growth, recovery, and monitoring design for OLTP, analytics, TEMP, undo, redo, and recovery data.

Advanced110–130 minutesStorage architecture + capacity decision recordOracle AI Database 26ai · RU 23.26.3 baselineOracle AI Database Free evidence + production designLast reviewed: August 2026

Learning outcomes

ServiceHub’s first two chapters created a safe database and explained runtime internals; this chapter mapped persistent storage. The final task is not to memorize a “best” tablespace layout. It is to turn workload, capacity, recovery, and operational evidence into a storage decision record that can survive growth. A useful plan separates mechanisms—data, TEMP, undo, redo, recovery area, lower storage—without pretending that putting every object in its own tablespace creates performance.

01

Build a workload-driven storage plan across permanent data, indexes where justified, TEMP, undo, redo, archived/recovery files, and growth headroom.

02

Design autoextend, NEXT/MAXSIZE, file-count, and lower-storage capacity policy as bounded safety controls rather than unlimited growth.

03

Explain when data/index separation has an operational purpose and why “one tablespace per table” is usually administration without evidence.

04

Connect storage choices to RMAN, Fast Recovery Area, recovery-time objectives, Data Guard/RAC/ASM implications, and failure domains.

05

Create a repeatable capacity/monitoring evidence card for the current Free lab and a production design record with explicit assumptions.

Course baseline

Mandatory commands are read-only against Oracle AI Database Free 26ai in FREEPDB1. Enterprise/Grid/ASM/Data Guard/Exadata/cloud topologies are design comparisons only. Free remains constrained to 2 CPU cores, 2 GB combined SGA/PGA RAM, and 12 GB user data, so its local capacity numbers are learning observations—not production sizing data.

1. Start from workload classes and failure objectives

A storage layout should answer operational questions. Which data grows fastest? Which SQL can spill heavily to TEMP? How much undo history is needed for the longest reads/flashback goals? How much redo does peak DML generate? What backup/restore throughput and recovery-time objective (RTO) are required? What recovery-point objective (RPO) is required? Which failures must not remove both primary data and recovery copies?

These questions create boundaries. OLTP tables/indexes need predictable latency and concurrency. Analytical/batch work may create large scans and TEMP demand. Undo follows transaction and consistent-read history. Redo is latency-sensitive durability infrastructure. Archived redo and RMAN backups belong to recovery capacity, not ordinary application tablespace headroom.

2. Do not create tablespaces merely to mirror the object model

“One tablespace per table” sounds organized but usually multiplies files, quotas, backup/reporting metadata, and operational decisions without creating a real I/O or recovery boundary. A tablespace is useful when objects share a lifecycle, security/encryption policy, availability/recovery need, transport/migration strategy, block-size requirement, growth policy, or administrative boundary.

Separating table and index segments into different tablespaces can be justified for lifecycle, placement, or recovery administration. It is not automatically a performance optimization when both tablespaces sit on the same physical disks. Modern ASM/storage can stripe files across the same devices, making cosmetic file separation irrelevant to I/O isolation.

3. Autoextend is a guardrail, not capacity planning

AUTOEXTEND ON can prevent an avoidable outage when a file reaches its current size, but unlimited or unmonitored autoextend can simply move the outage to the filesystem/ASM/cloud-volume layer. A robust policy records current file size, growth increment, maximum size, lower-storage free/usable capacity, alert thresholds, and who responds before the maximum is reached.

sql · inventory bounded growth settings
SELECT tablespace_name, file_id, file_name,       ROUND(bytes/1024/1024,1) AS size_mb,       autoextensible,       ROUND(maxbytes/1024/1024,1) AS max_mb,       increment_byFROM   dba_data_filesORDER  BY tablespace_name, file_id;SELECT tablespace_name, file_id, file_name,       ROUND(bytes/1024/1024,1) AS size_mb,       autoextensible,       ROUND(maxbytes/1024/1024,1) AS max_mb,       increment_byFROM   dba_temp_filesORDER  BY tablespace_name, file_id;

INCREMENT_BY is stored in blocks, so translate it using the file/tablespace block size when you need bytes. Do not label it “MB” directly.

4. Capacity needs at least four layers of headroom

Layer Capacity question Representative evidence
Segment/object Which objects are growing and why? DBA_SEGMENTS, partition/index/LOB metadata, application retention.
Tablespace How much reusable/free extent space exists? DBA_FREE_SPACE, temp usage, undo history.
File Can the file autoextend, to what ceiling, and how many files exist? DBA_DATA_FILES / DBA_TEMP_FILES.
Lower storage Can filesystem/ASM/cloud volume satisfy the next growth/backup/recovery event? OS metrics or ASM USABLE_FILE_MB; storage platform monitoring.

Thin provisioning introduces another apparent-capacity layer. A virtual volume can report logical free space while the backing pool is constrained. Production monitoring must follow allocation to the real failure point.

5. Redo and recovery areas are not ordinary tablespaces

Online redo log members are physical recovery structures, not tablespace files. Their size/count and log-switch behavior affect durability/recovery and should be designed from redo generation and recovery requirements. Archived redo, RMAN backups, flashback logs, and related recovery files can be managed in a Fast Recovery Area (FRA) when configured. The FRA is a recovery-file destination with a quota/space-management policy, not a tablespace.

sql · observe redo and recovery-area configuration without changing it
SELECT group#, thread#, sequence#, bytes/1024/1024 AS size_mb,       members, archived, statusFROM   v$logORDER  BY group#;SELECT group#, member, type, statusFROM   v$logfileORDER  BY group#, member;SELECT name, valueFROM   v$parameterWHERE  name IN ('db_recovery_file_dest','db_recovery_file_dest_size')ORDER  BY name;

Chapter 14 covers redo mechanics and Chapter 15 covers RMAN/recovery engineering. Here the design rule is simpler: data growth and recovery growth must not surprise each other. If DATA and recovery copies share one failure/capacity domain, a full or failed storage pool can affect both primary operation and recovery capability.

6. Build the current Free-lab capacity card

sql · PDB storage capacity card
SHOW CON_NAMEWITH df AS (  SELECT tablespace_name,         SUM(bytes) bytes,         SUM(CASE WHEN autoextensible='YES' THEN maxbytes ELSE bytes END) potential_bytes  FROM   dba_data_files  GROUP  BY tablespace_name), fs AS (  SELECT tablespace_name, SUM(bytes) free_bytes  FROM   dba_free_space  GROUP  BY tablespace_name)SELECT df.tablespace_name,       ROUND(df.bytes/1024/1024,1) AS current_file_mb,       ROUND(NVL(fs.free_bytes,0)/1024/1024,1) AS free_extent_mb,       ROUND(df.potential_bytes/1024/1024,1) AS configured_ceiling_mbFROM   dfLEFT JOIN fs ON fs.tablespace_name=df.tablespace_nameORDER  BY df.tablespace_name;SELECT owner, segment_name, segment_type, tablespace_name,       ROUND(bytes/1024/1024,2) AS allocated_mbFROM   dba_segmentsWHERE  owner='SERVICEHUB_OWNER'ORDER  BY bytes DESC;

This is intentionally not a production “percent used” formula. Maxbytes can be constrained by block/file type/platform limits, and the Free license’s 12-GB user-data limit is a separate ceiling. Lower storage may run out before an Oracle-configured max size. The evidence card must record all applicable ceilings.

7. Deliberately wrong design: unlimited growth plus fixed alert percentages

Assume every datafile is AUTOEXTEND ON MAXSIZE UNLIMITED and operations page only when the tablespace is 95% used. This can fail in several ways: “unlimited” is bounded by implementation/platform limits; the lower filesystem/ASM pool can fill first; a growth increment can be too large for remaining space; a rapidly growing workload can cross the last 5% before anyone responds; and a bigfile percentage can represent terabytes of remaining or consumed capacity.

The repair is a rate-aware policy: bounded maxima, absolute and percentage headroom, growth velocity, forecast horizon, lower-layer usable capacity, and a response owner. Alert thresholds are SLO/runbook inputs, not universal numbers copied from a blog.

8. Workload-driven production layout example

Area ServiceHub design question Possible decision—not a universal rule
Application permanent data Shared lifecycle, growth, transport/recovery needs? One or a few application tablespaces grouped by lifecycle, not per table.
Indexes Separate recovery/placement policy or simply same storage? Separate only when it serves a real administrative/storage boundary.
TEMP Peak sorts/hash/parallel/batch footprint? Dedicated temp capacity sized from observed concurrency and spills.
Undo Peak transactions + longest consistent reads/flashback needs? Automatic undo with capacity/retention monitored from workload.
Online redo Peak redo rate, switch/recovery behavior, storage latency? Size/groups from measured redo generation and tested recovery; multiplex according to failure design.
Recovery/FRA Backups, archived redo, flashback retention, restore workflow? Separate capacity/failure planning; often separate ASM disk group/storage boundary.
ASM/filesystem/cloud volume Where are physical redundancy and I/O delivered? Document failure groups/RAID/replication and usable—not just raw—capacity.

9. Backup/recovery implications belong in the storage design

Large files change backup/restore work distribution. Many small files increase file-count administration. Bigfile tablespaces can use RMAN sectioning to parallelize work on a large file. Autoextend changes backup volume. TEMP can usually be recreated according to recovery procedures, while permanent datafiles require recovery. Undo is part of database consistency/recovery. Redo and archived redo determine recovery continuity. These differences should be written into the storage runbook before an incident.

Likewise, ASM redundancy and filesystem RAID do not prove restore capability. A credible plan includes RMAN backup validation plus periodic restore/recovery drills. Chapter 15 will turn this requirement into executable recovery engineering.

10. Capstone lab: write a storage decision record

Create a short storage record with two columns: Free-lab observation and production assumption/decision. Include:

  • Oracle AI Database product/RU, CDB/PDB, and tablespace default/type evidence;
  • ServiceHub segment/tablespace placement and current file sizes;
  • datafile/tempfile autoextend, increments, and maximums;
  • undo configuration and recent workload evidence;
  • redo group/member layout and recovery-area configuration;
  • filesystem versus ASM lower-storage model and failure domains;
  • absolute + percentage + growth-rate monitoring signals;
  • backup/restore, RPO/RTO, and maintenance implications;
  • licensing/topology assumptions for any optional Partitioning, compression, ASM/Grid, RAC, Data Guard, Exadata, or cloud capability;
  • rollback/expansion procedure and responsible owner.

The record should explicitly reject any rule that lacks a mechanism or measurable objective—for example “indexes always need a separate tablespace,” “bigfile is always faster,” or “autoextend means capacity is automatic.”

11. Chapter summary and bridge to Chapter 04

Chapter 03 connected Oracle logical objects to physical files and lower storage, separated permanent/TEMP/undo roles, explained locally managed/ASSM/HWM reclamation, introduced ASM without pretending the Free lab includes Grid Infrastructure, and finished with workload-driven capacity/recovery planning. Chapter 04 returns upward to logical design: Oracle users versus schemas, object ownership, data types, keys/constraints, sequences, identity columns, defaults, virtual/invisible columns, and integrity boundaries.

Check your understanding

  1. Why is one tablespace per table usually not a performance strategy?
  2. Why should AUTOEXTEND have a monitored ceiling?
  3. What storage facts should be paired with DBA_FREE_SPACE before claiming capacity is safe?
  4. Why is the FRA not a tablespace?
  5. What must a storage design prove beyond primary database availability?
Review the answers

A tablespace is a logical administrative boundary. If tablespace files share the same lower storage, separating names does not create I/O isolation by itself and increases administration.

Autoextend consumes lower-layer capacity. A bounded ceiling, growth-rate monitoring, and response window prevent an unbounded file from moving the outage to the filesystem/ASM pool.

Current file sizes, autoextend/maxsize, actual filesystem or ASM usable capacity, thin-provisioned backing capacity, growth rate, and other ceilings such as Oracle AI Database Free user-data limits.

The Fast Recovery Area is a managed recovery-file destination/quota for files such as archived redo, backups, and flashback logs; it is not a logical tablespace containing database segments.

It must prove backup/restore and recovery behavior, RPO/RTO, failure-domain independence, and operational rollback—not merely that current reads/writes succeed.

Authoritative references

Keep knowledge open

Help the academy stay free and grow.

If these tutorials save you time, a small donation supports new lessons, technical review, diagrams, examples, and long-term maintenance.

ETHEthereum / ERC-20 only
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0

Send only Ethereum or ERC-20 compatible assets to this address.