Once there is less than PCTFREE space in the block, no inserts are allowed. If freelists are used
to manage space within the blocks of a segment, then new inserts are allowed on the table when
used space within the block falls below PCTUSED.
A row may span more than one block if the row size is greater than the block size or an
updated row no longer fits into the original block. In the first case, a row that is too big for a
block is stored in a chain of blocks; this may be unavoidable if a row contains columns that
exceed even the largest block size allowed, which in Oracle 11g is 32KB.
FIGURE 6-2 Contents of an Oracle data block
Chapter 6: Monitoring Space Usage 169
In the second case, an update to a row in a block may no longer fit in the original block, and
as a result Oracle will migrate the data for the entire row to a new block and leave a pointer in
the first block to point to the location in the second block where the updated row is stored. As
you may infer, a segment with many migrated rows may cause I/O performance problems because
the number of blocks required to satisfy a query can double. In some cases, adjusting the value of
PCTFREE or rebuilding the table may result in better space utilization and I/O performance. More
tips on how to improve I/O performance can be found in Chapter 8.
Starting with Oracle9i Release 2, you can use Automatic Segment Space Management (ASSM)
to manage free space within blocks; you enable ASSM in locally managed tablespaces by using
the segment space management auto keywords in the create tablespace command (although this
is the default for locally managed tablespaces).
Pages:
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309