Professional Documents
Culture Documents
The PCTFREE and PCTUSED parameters tell Oracle when to link and unlink a
block from the freelist chain. The following discussion only applies if you are
not using the new Automatic Segment Space Management (ASS
Management).
The setting for PCTFREE sets the value for the percent of a block to reserve
for updates. A block will remain on a FREELIST until it reaches blocksize * (1-
(ptcfree/100)) full or greater. Here are the main issues with incorrect settings:
• High I/O - This will result in doubling the IO required to retrieve this
data. For new data blocks, the space available for inserts is equal to
the block size minus the sum of the block overhead (84-107 bytes) and
free space (PCTFREE/100 * blocksize). When you update existing data
Oracle uses any available space in the block. So, updates will
eventually reduce the available space in a block to less than PCTFREE,
the space reserved for updates but not accessible to inserts. This
removes the block form the freelist on which it resides.
• blocksize
• PCFREE
• load time average row length
• Expected row expansion (bytes per row)
For tables with high levels of updates, setting PCTFREE to a high value is
suggested, for blocks which are never updated, then set this to a low value.
For example, for a high update table a setting of 40-50 is acceptable, while
for a low or no update table (such as in a data warehouse) a setting of 5 or
less is acceptable. PCTUSED must be set to less than 100-PCTFREE and
should be set such that PCTFREE+PCTUSED is less than 100. If
PCTFREE+PCTUSED=100 this can result in see-sawing of the block on and off
the free lists which can be a performance issue.