When you initialize a database device, the disk init command divides the new space into allocation units.
The size of the allocation unit depends on the size of the logical pages your server uses (2, 4, 8, or 16K). The first page of each allocation unit is an allocation page, which tracks the use of all pages in the allocation unit. Allocation pages have an object ID of 99; they are not real database objects and do not appear in system tables, but dbcc errors on allocation pages report this value.
When you create a table of an index partition, SAP ASE allocates an extent for the object.
When you add rows to an existing table, and the existing pages are full, SAP ASE allocates another page. If all pages in an extent are full, SAP ASE allocates an additional extent.
When you drop a table of an indexed partition, SAP ASE deallocates the extents it occupied.
When you delete rows from a table so that it shrinks by a page, SAP ASE deallocates the page. If the table shrinks off the extent, SAP ASE deallocates the extent.
Every time space is allocated or deallocated on an extent, SAP ASE records the event on the allocation page that tracks the extents for that object. This provides a fast method for tracking space allocations in the database, since objects can shrink or grow without excess overhead.
This figure shows how data pages are set up within extents and allocation units in SAP ASE databases.
dbcc checkalloc checks all allocation pages (page 0 and all pages divisible by 256) in a database and reports on the information it finds. dbcc indexalloc and dbcc tablealloc check the allocation of specific database objects.