Question: What is an Oracle freelist?
How does a freelist parameter determine what block a rows is
stored inside?
Answer: The freelist parameter is used when
you create a table and it determines the number of freelists
assigned to the table. A freelist is used a "insert"
time, when Oracle needs to place a row into a data block.
At that
time, Oracle grabs the first freelist, attempts the insert.
If the insert fails, Oracle tries another freelist, up to
five time, before raising the high-water mark and grabbing
brand new empty data blocks. See the detail here on
the relationship between
ASSM freelists and pctfree.
There
are two types of freelists:
Standard freelists: This is a one-way linked
list anchored in the segment header block.
ASSM: This is Automatic segment space
management (ASSM), also known as bitmap freelists.
Bitmap freelists are defined when you specify "segment
space management auto" in the "create table"
statements. See my notes here on
bitmap freelists.