DB2 - Problembeschreibung
Problem IC93791 | Status: Geschlossen |
DB2 CRASH CAUSED BY PACKED DESCRIPTOR INCONSISTENCY AFTER ALTER TABLE SET TYPE BLOB/CLOB | |
Produkt: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problembeschreibung: | |
Altering column type to the same type as it currently e.g.: $ db2 "CREATE TABLE T1 (ONE INT, TWO BLOB(1000000) INLINE LENGTH 1000)" $ db2 "ALTER TABLE T1 ALTER TWO SET DATA TYPE BLOB(1000000)" may results in column length not being re-calculated properly if given column has INLINE LENGTH specified. That may lead to runtime crash because of detected memory corruption while executing a query containing that column. Possible stack (may differ) FUNCTION: DB2 UDB, SQO Memory Management, sqloDiagnoseFreeBlockFailure, probe:10 MESSAGE : Possible memory corruption detected. [...] pdLog + 0xE4 @78@sqloDiagnoseFreeBlockFailure__FP8SMemFBlkCb + 0x158 sqlofmblkEx + 0xC sqlra_sqlC_mem_free_block__FP8sqlrr_cbUlPv + 0x4C sqlra_sqlC_mem_free_block__FP8sqlrr_cbUlPv@glue887 + 0x74 sqlra_fp_dealloc__FP15sqlra_func_path + 0x184 sqlra_fp_dealloc__FP15sqlra_func_path@glue886 + 0x74 sqlra_free_section__FP8sqlrr_cbP25sqlra_sql_context_siblingiN23 + 0x324 sqlra_sqlC_free_section__FP8sqlrr_cbP25sqlra_sql_context_sibling i + 0xA0 sqlra_sqlC_get_stmt__FP8sqlrr_cbPUcUiUciP17sqlra_cached_stmtPi + 0x8C Query, that was being executed should also be dumped to the db2diag.log: FUNCTION: DB2 UDB, relation data serv, sqlrr_dump_sibling, probe:140 MESSAGE : section stmt DATA #1 : Hexdump, 180 bytes 0x0A000200B1F3F300 : 0A20 2020 2020 2020 2020 2020 2020 2020 . 0x0A000200B1F3F310 : 2053 454C 4543 5420 5457 4F20 4652 4F4D SELECT TWO FROM 0x0A000200B1F3F320 : 2054 3120 4541 5243 485F 4E41 4D45 2C20 T1 To confirm the problem, you can examine packed descriptor the specific table by executing: $ db2cat -d <db_name> -s <schema> -n <table_name> and check if column length is lower than inline length for the affected column, which is the symptom of corruption, e.g: $ db2cat -d sample -s db2inst1 -n t1: [...] COLUMN NAME : TWO Length of column name : 3 Column id : 1 Col type {hex, type} : 0x0108 , BLOB Col dist. type {hex, type}: 0x007c , BLOB Column length : 216 Blob length : 100000 Statistic offset : -1 Flags : 0x00000090 - SQLRG_MIXED - SQLRG_NULLIND Codepage : 0 Collation name : BINARY Collation ID in hex : B'00 00 00 05 FF 01 FF FF Length of user default : 0 Logged : 1 Compact : 0 Inline Length : 1000 | |
Problem-Zusammenfassung: | |
**************************************************************** * USERS AFFECTED: * * All platforms * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 Version 10.1 and Fix Pack 3 * **************************************************************** | |
Local-Fix: | |
Force column length to be re-calculated by altering the table by increasing either size or inline length. Example: $ db2 "ALTER TABLE T1 ALTER TWO SET DATA TYPE BLOB(1000001)" or: $ db2 "ALTER TABLE T1 ALTER TWO SET INLINE LENGTH 1001" | |
verfügbare FixPacks: | |
DB2 Version 10.1 Fix Pack 3 for Linux, UNIX, and Windows | |
Lösung | |
Problem was first fixed in DB2 Version 10.1 and Fix Pack 3 | |
Workaround | |
keiner bekannt / siehe Local-Fix | |
Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 28.06.2013 23.10.2013 23.10.2013 |
Problem behoben ab folgender Versionen (IBM BugInfos) | |
Problem behoben lt. FixList in der Version | |
10.1.0.3 | |
10.1.0.3 |