DB2 - Problem description
Problem IC69320 | Status: Closed |
SELECT FROM SYSIBMADM.ADMINTABINFO CRASHES DATABASE WITH BFIX DETECTED AN ERROR | |
product: | |
DB2 FOR LUW / DB2FORLUW / 980 - DB2 | |
Problem description: | |
If we have a table that has a very big size, we might get into a situation where a query on SYSIBMADM.ADMINTABINFO will crash the database. SELECT SUBSTR(TABSCHEMA,1,18) TABSCHEMA, SUBSTR(TABNAME,1,30) TABNAME, SUM(DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE, SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE, SUM(LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE, SUM(LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE, SUM(XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE FROM SYSIBMADM.ADMINTABINFO WHERE TABNAME LIKE 'TEST%' GROUP BY TABSCHEMA, TABNAME order by 3 desc, 4 desc ; The db2diag.log will report the following messages: 2010-03-16-12.07.40.909000-240 I46298553F4655 LEVEL: Severe PID : 8172 TID : 1444 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : TEST APPHDL : 0-23826 APPID: *LOCAL.DB2.100316155850 AUTHID : DB2ADMIN EDUID : 1444 EDUNAME: db2agent (TEST) 0 FUNCTION: DB2 UDB, Common Trace API, sqlbfix, probe:104 DATA #1 : String, 45 bytes bfix detected an error - Current Descriptor = DATA #2 : Buffer page descriptor, PD_TYPE_SQLB_BPD, 160 bytes Pagekey: {pool:27;obj:4;type:64} PPNum:3972 objectPageNum: 5971 Note when hitting this issue, there will always be the number 3972 and 5971 as shown above. This is not a table corruption as it could be interpreted from the db2diag.log messages, but an error on the calculations when transversing the EMP (extent Map Pages) for the table. The stack of the crash will show the following entries: sqloDumpEDU sqle_panic sqlb_panic sqlbufix sqlbNumExtentsMappedBySingleIndirect sqlbNumExtentsMappedByDoubleIndirect sqlbGetExtentCount sqlbDMSGetObjActualSize sqlbGetObjActualSize sqldGetTableData sqlrlAdminGetTabInfo sqlerTrustedRtnCallbackRouter admin_get_tab_info_v97 This problem only occurs when doing the following Select DATA_OBJECT_P_SIZE / INDEX_OBJECT_P_SIZE / LONG_OBJECT_P_SIZE / LOB_OBJECT_P_SIZE / XML_OBJECT_P_SIZE from sysibmadm.admintabinfo on a table that is very big. We might also see a crash when dropping such table, due to the purging transversing the EMP pages to calculate the physical size of the table. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * ALL * **************************************************************** * PROBLEM DESCRIPTION: * * If we have a table that has a very big size, we might get * * into a situation where a query on SYSIBMADM.ADMINTABINFO * * will crash * * the database. * * * * SELECT SUBSTR(TABSCHEMA,1,18) TABSCHEMA, * * SUBSTR(TABNAME,1,30) TABNAME, * * SUM(DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE, * * SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE, * * SUM(LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE, * * SUM(LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE, * * SUM(XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE * * FROM SYSIBMADM.ADMINTABINFO * * WHERE TABNAME LIKE 'TEST%' * * GROUP BY TABSCHEMA, TABNAME * * order by 3 desc, 4 desc; * * * * * * The db2diag.log will report the following messages: * * * * 2010-03-16-12.07.40.909000-240 I46298553F4655 * * LEVEL:Severe * * PID : 8172 TID : 1444 PROC * * :db2syscs.exe * * INSTANCE: DB2 NODE : 000 DB : TEST * * APPHDL : 0-23826 APPID:*LOCAL.DB2.100316155850 * * AUTHID : DB2ADMIN * * EDUID : 1444 EDUNAME: db2agent (TEST) 0 * * FUNCTION: DB2 UDB, Common Trace API, sqlbfix, probe:104 * * * * DATA #1 : String, 45 bytes * * bfix detected an error - Current Descriptor = * * DATA #2 : Buffer page descriptor, PD_TYPE_SQLB_BPD, 160 * * bytes * * Pagekey: {pool:27;obj:4;type:64} PPNum:3972 * * objectPageNum: 5971 * * * * Note when hitting this issue, there will always be the * * number * * 3972 and 5971 as shown above. This is not a table corruption * * as it could be interpreted from the db2diag.log messages, * * but * * an error on the calculations when transversing the EMP * * (extent Map * * Pages) for the table. * * * * The stack of the crash will show the following entries: * * * * sqloDumpEDU * * sqle_panic * * sqlb_panic * * sqlbufix * * sqlbNumExtentsMappedBySingleIndirect * * sqlbNumExtentsMappedByDoubleIndirect * * sqlbGetExtentCount * * sqlbDMSGetObjActualSize * * sqlbGetObjActualSize * * sqldGetTableData * * sqlrlAdminGetTabInfo * * sqlerTrustedRtnCallbackRouter * * admin_get_tab_info_v97 * * * * This problem only occurs when doing the following * * * * Select DATA_OBJECT_P_SIZE / INDEX_OBJECT_P_SIZE / * * LONG_OBJECT_P_SIZE / LOB_OBJECT_P_SIZE / XML_OBJECT_P_SIZE * * from sysibmadm.admintabinfo on a table that is very big. * * * * We might also see a crash when dropping such table, due to * * the * * purging transversing the EMP pages to calculate the physical * * size of the table. * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 version 9.8 and Fixpack 0 * **************************************************************** | |
Local Fix: | |
Do not run a query on sysibmadm.admintabinfo if there are very big tables on the system. Avoid dropping very big tables. | |
available fix packs: | |
DB2 Version 9.8 Fix Pack 4 for AIX and Linux | |
Solution | |
Problem was first fixed in DB2 version 9.8 and Fixpack 0 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 17.06.2010 04.08.2011 04.08.2011 |
Problem solved at the following versions (IBM BugInfos) | |
9.8. | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.8.0.4 |