22
Internal Error: The OAM has no room for new inserts. Check OAM for object %ld, index %d.
The object allocation map (OAM) tracks information about the allocation and deallocation of storage space for tables and indexes. At least one OAM page exists for each table (except syslogs and sysgams) and for the table’s indexes. The OAM page has an entry for each allocation page used by the object. The first OAM page for an object has a maximum of 240 entries, and any subsequent OAM pages have a maximum of 250 entries per page.
When a new page is allocated for the table or index:
The appropriate OAM page is updated.
If necessary, a new OAM entry is created for the allocation page which controls the page being added.
If necessary, a new OAM page is created and linked in to the current OAM page chain for the object. This occurs when there are no available slots for a new OAM entry in any existing OAM page for the object.
The total number of entries in the object’s OAM (corresponding to the total number of allocation pages with extents for this object) is adjusted during table updates and also during database recovery.
Error 1127 is raised:
If the total number of entries for all OAM pages for the object exceeds its upper limit (overflow in OAM page header). This can happen if the table grows and occupies space on many allocation pages.
If the total number of entries is corrupted. This is due to an Adaptive Server problem.
There are different ways to correct this error, depending on the conditions under which it occurred and the nature of the OAM problem. Other errors may also be raised at the same time.
If this error is raised when you attempt to start Adaptive Server and the Server hangs, the database may be marked suspect; contact Sybase Technical Support for assistance.
If the error occurs during a table update (for example, during a bulk copy operation), follow these steps:
If the object is a system table (a system table’s object ID is less than 100) and the index ID is not 0 (zero), refer to “Fixing a corrupted system table index” in the most recent version of Troubleshooting and Disaster Recovery for instructions on how to repair the system table index.
If the object is a system table and the index ID is 0 (zero), contact Sybase Technical Support. They may be able to help you repair the corruption but it may be necessary to restore the database from clean backups.
If the object encountering the error is not a system table, continue to step 2.
If the error occurs on a user table, the problem may be an overflow in the OAM page header or corruption of the page header. Run the following command to display OAM page information.
You must have the sybase_ts_role granted to you to run this command and run dbcc traceon(3604) first.
1> dbcc traceon(3604) 2> go
(For version 15.0.2 and later, on line 1, run set
switch on 3604
instead.)
1> dbcc listoam(database_name, object_ID, index_ID) 2> go
For example:
1> dbcc listoam(pubs2, 104001776, 0) 2> go
----------------------------------------------- Objid: 104001776 indid: 0 OAM pg cnt: 1 Entry cnt: 1 Rows: 18 Rows Per pg: 6 Used pgs: 4 Unused pgs: 4 OAM status bits set: PG_OAMPG, PG_OAMSORT OAM pg # 520 has the following entries (allocpg:used/unused): 512: 4/ 4 -----------------------------------------------
DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role.
Call Sybase Technical Support with this information.
For information about OAM pages, refer to “Checking Database Consistency” in the System Administration Guide: Volume 2, and see the section “Understanding page and object allocation concepts.”
Before calling Sybase Technical Support, have the information on hand that is listed in “Reporting errors”, including the output of dbcc listoam for the table.
All versions