DB2 - Problem description
Problem IT09490 | Status: Closed |
DB2 CRASH CAUSED BY PACKED DESCRIPTOR INCONSISTENCY AFTER ALTER TABLE SET TYPE DBCLOB | |
product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problem description: | |
Altering DBCLOB column type to the same type and size as it is currently e.g.: $ db2 "CREATE TABLE T1 (ONE INT, TWO DBCLOB(1000000) INLINE LENGTH 1000)" $ db2 "ALTER TABLE T1 ALTER TWO SET DATA TYPE DBCLOB(1000000)" may result 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} : 0x0203 , DBCLOB Col dist. type {hex, type}: 0x004c , DBCLOB Column length : 1048 Blob length : 2000000 Statistic offset : -1 Flags : 0x00000090 - SQLRG_MIXED - SQLRG_NULLIND Codepage : 1200 Collation name : IDENTITY Collation ID in hex : B'00 00 00 02 FF 00 FF FF Statistic Descriptor : None Security Label ID : 0 | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * ALL * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 version 9.7 Fix Pack 11 * **************************************************************** | |
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 DBCLOB(1000001)" or: $ db2 "ALTER TABLE T1 ALTER TWO SET INLINE LENGTH 1001 | |
Solution | |
First fixed in DB2 version 9.7 Fix Pack 11 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 16.06.2015 20.10.2015 20.10.2015 |
Problem solved at the following versions (IBM BugInfos) | |
9.7.FP11 | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.11 |