DB2 - Problembeschreibung
| Problem IT09490 | Status: Geschlossen |
DB2 CRASH CAUSED BY PACKED DESCRIPTOR INCONSISTENCY AFTER ALTER TABLE SET TYPE DBCLOB | |
| Produkt: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problembeschreibung: | |
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-Zusammenfassung: | |
**************************************************************** * 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 | |
| Lösung | |
First fixed in DB2 version 9.7 Fix Pack 11 | |
| Workaround | |
keiner bekannt / siehe Local-Fix | |
| Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 16.06.2015 20.10.2015 20.10.2015 |
| Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.7.FP11 | |
| Problem behoben lt. FixList in der Version | |
| 9.7.0.11 |
|