The principle behind PCTFREE is that it allows you to tell Oracle that a block must not be used for inserting new records if if has less than that Percent of free space available, thus reserving that space for the growth ofindividual rows due to updates. So, your setting for pctfree must reflect the liklihood that inserted rows will grow in size post-insert. If they will never grow then you can set PCTFREE=0 (a table of invoice details might be a candidate for this, as it is static once it has been generated).