16
Versions earlier than 15.0:
Table Corrupt: The entry is missing from the OAM for object id %ld indid %d for allocation page %ld.
Version 15.0 and later:
Table Corrupt: The entry is missing from the OAM for object id %ld indid %d partition %ld for allocation page %ld.
This error is raised when Adaptive Server detects that the allocation pages associated with an object are not recorded in the object allocation map (OAM) for the object. This problem is detected by dbcc checkalloc, dbcc tablealloc, and dbcc indexalloc.
Usually, error 7939 will not cause any operations to fail at run time, so it is acceptable to wait to correct this problem until non-peak hours. However, do not drop a table with the 7939 error, as subsequent dbcc checkalloc commands may produce 2540 and 2546 errors.
The instructions below are for fixing 7939 errors once they have occurred. Two easy-to-use strategies exist for detecting this error sooner in the future. Refer to “Detecting allocation errors early” in the chapter “Other Useful Tasks” in the most recent version of Troubleshooting and Disaster Recovery for information about these strategies.
Occasionally dbcc checkalloc reports this error when no real error condition exists. You can either check to see if these errors are real, or continue with this section and take action to correct them, whether or not they reflect a real allocation error.
Because the process used to discover whether or not the errors are real can be time-consuming, you may want to go directly to the “Error resolution” section now.
Run dbcc checkalloc in single-user mode if you suspect the 7939 error messages are incorrect. If the error is in master, use the section “Starting Adaptive Server in single-user mode” in the chapter “Server Recovery Tasks” in the most recent version of Troubleshooting and Disaster Recovery to start Adaptive Server in single-user mode. Refer to “Checking Database Consistency” in the System Administration Guide: Volume 2 for information about dbcc checkalloc.
If many of these errors are occurring, it is possible to clear them all at once by using the dbcc checkalloc with fix option command. Refer to “Fixing and preventing allocation errors” in the chapter “Other Useful Tasks” in the most recent version of the Troubleshooting and Disaster Recovery guide for information about using dbcc checkalloc.
Execute the following query to make sure the object exists and is correctly referred to in the system catalog:
1> use <database_name> 2> go
1> select object_name (<objid_from_error_msg>) 2> go
If an object name is returned, then the error is on an existing, correctly referenced object. If this is the case, use the procedure in “Fixing allocation errors when object ID and index ID are known” in the chapter “Other Useful Tasks” in the most recent version of the Troubleshooting and Disaster Recovery.
If a number, or something other than an object name is returned, use the procedure in “Fixing and preventing allocation errors” in the chapter “Other Useful Tasks” in the most recent version of the Troubleshooting and Disaster Recovery.
All versions