In Oracle PL/SQL, PCTFREE is a block utilization parameter which is used to specify the free space in a data block. By default, its value is 10. The statement "PCTFREE is set as 10" means that 10% space would be kept free in all data blocks in the table for its future growth. Once the data block is left with only PCTFREE free space, it is removed from the free list. Subsequently, Oracle will hold the INSERT operation on the table until the next block is added to the free list.
Note that sum of PCTFREE and PCTUSED cannot exceed 100 at any time.
For a table, PCTFREE parameter can be set at table definition level
CREATE TABLE [schema.] table
(column datatype [ , column datatype ] ...)
[TABLESPACE tablespace ]
[ PCTFREE integer ]
[ PCTUSED integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ STORAGE storage-clause ]
[LOGGING | NOLOGGING]
[CACHE | NOCACHE] ]
In this example, the table "ORDERS" is created with PCTFREE 20.
CREATE TABLE ORDERS