suche 36x36
Neueste VersionenFixList
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

DB2 - Problembeschreibung

Problem IT28784 Status: Geschlossen

RESTORING A LOADCOPY WHEN THERE IS A MODIFICATION STATE INDEX ONA COLUMN
ORGANIZED TABLE MAY CORRUPT THE INDEX.

Produkt:
DB2 FOR LUW / DB2FORLUW / B10 - DB2
Problembeschreibung:
The problem may occur if you have a
column organized table which has a modification state index and
done a LOAD with COPY YES and INDEXING MODE REBUILD and
done a rollforward that restored such a load copy.

NOTE: INDEXING MODE REBUILD may be chosen even if you did not
specify it.  Check for the message SQL3213I The indexing mode is
"REBUILD".

A modification state index is created on a column organized
table when create index is done.
It is also created if the registry variable
DB2_EXTEND_COL_UNIQUE_INDEX_ACCESS set to ON (the default is
currently OFF) and a unique or primary key constraint is added.
To check which tables have a modification state index, do:
db2 "select tabname, tabschema, indname, index_objectid,
tbspaceid from syscat.indexes where indextype = 'MDST'"

If load in rebuild mode with the copy yes option is being used
for a table that has a modification state index, it is
recommended to take a new backup and apply the fix.  Avoid
rolling forward thru such a load copy created without this fix.

There are a number of symptoms resulting from this problem after
or during rollforward through a loadcopy for a column organized
table that has a modification state index.
These include:

Errors reported by db2dart such as:
 Error: Invalid page-index 0 in start-logical-row-number
extracted from the column-organized object page map.
 Error: Invalid page-index 0 in end-logical-row-number extracted
from the column-organized object page map.
Error:           Free Space Offset = 4099 Error: too high!
Record Length   = 17  (x11)   Error: INVALID LENGTH!
Ending Slot     = 18446744073709551615  (xFFFFFFFF)  Error:
invalid slot!
Error: page in tree but not marked in use: Object Page (34)
   Error: bad pagenumber Error: bad ftoken Error: Not an index
page!

Errors during rollforward such as the following may be reported
in the db2diag.log:
FUNCTION: DB2 UDB, index manager, sqliakn, probe:902
FUNCTION: DB2 UDB, index manager, sqliakn, probe:901
FUNCTION: DB2 UDB, buffer pool services, sqlb_verify_page,
probe:2
   MESSAGE : ZRC=0x86020001=-2046689279=SQLB_BADP "page is bad"

If the above errors are seen during rollforward but the
following message is also seen after the errors in the
db2diag.log, the problem may have been resolved already.
FUNCTION: DB2 UDB, index manager, sqliMarkInxBadDuringUndoRedo,
probe:2037
Unexpected error.  Index will be marked bad to let recovery
continue.

A trap may occur during rollforward such as the following
edited/simplified stacks may occur:
0x00007F2170178C1B sqloEDUCodeTrapHandler
0x00007F21704AA88C _Z14sqlprFindQueue
0x00007F2170494918 _Z15sqlpPRecProcLog
0x00007F2170450E9E _Z20sqlpParallelRecovery
OR:
0x00007FD122442423 sqloEDUCodeTrapHandler
0x00007FD122E15340 sqlra_sqlWC_get_common
0x00007FD122AA930D _Z20sqlrr_signal_handler
0x00007FD122443F35 sqloExecuteEDUExitList
0x00007FD12244170A sqloDumpDiagInfoHandler
0x00007FD1222DA90F sqloWaitEDUWaitPost
0x00007FD1205410D5 _ZN11sqeScoordCB10ScoordWaitEP
0x00007FD12270DBE2 _Z8sqlprecmP8sqeAgent
0x00007FD12273A9F6 _Z19sqlprDoForwardPhaseP8sqeAgent
0x00007FD122737241 _Z19sqlpForwardRecoveryP8sqeAgent

Errors reported from rollforward may include:
SQL1271W  Database "WSDB" is recovered but one or more table
spaces are
offline on members or nodes "0".
SQL1224N  The database manager is not able to accept new
requests, has
terminated all requests in progress, or has terminated the
specified request
because of an error or a forced interrupt.  SQLSTATE=55032

If the rollforward succeeded and did not automatically resolve
the issue, the following errors may be seen.  It is possible
other errors may be reported.
Select, update and other commands may get:
SQL0901N  The SQL statement or command failed because of a
database system
error. (Reason "unexpected error at
DatabasePageMapCursor.cpp:95".)
SQLSTATE=58004
AssertionFailedException: An assertion 'pPageMapIXCB != __null
&& pPageMapIXCB->itoken != 0 && (
(pPageMapIXCB->idxcb.pIndexDef->indexType) &
(0x0004000000000000UL) )' failed. Additional info:
DatabasePageMapCursor: Page map index must have been set by now.
IXCB = NULL itoken = -1 pagemap = Unknown
Thrown at DatabasePageMapCursor.cpp : 95
DATA #2 : Function name in Library, 105 bytes
ibm_cde::data::DatabasePageMapCursor::DatabasePageMapCursor(cons
t ibm_cde::data::DatabaseTableAccessor &)
DATA #3 : File name, 25 bytes
DatabasePageMapCursor.cpp
CALLSTCK:
  [2] 0x00007FF36EC0C8AF
_ZN7ibm_cde8services24AssertionFailedException
  [3] 0x00007FF36F9E8C4C _ZN7ibm_cde4data21DatabasePageMapCursor
  [5] 0x00007FF36F3D26B1 _ZN7ibm_cde4data21DatabaseTableAccessor
  [13] 0x00007FF370A9EE27
_ZN7ibm_cde5query9Scheduler19runSingleTableQueryEv
  [16] 0x00007FF3716E6777 _ZN12cdeInterface10IUDExecute

How to know if the problem has happened if there were no
rollforward errors?
If you have done all the prerequisite actions listed above, then
check for errors by doing a db2dart inspection of the table.
Problem-Zusammenfassung:
****************************************************************
* USERS AFFECTED:                                              *
* Users of restore of LOAD COPY for column organized table     *
* which has a modification state index                         *
****************************************************************
* PROBLEM DESCRIPTION:                                         *
* The problem may occur if you have a                          *
* column organized table which has a modification state index  *
* and                                                          *
* done a LOAD with COPY YES and INDEXING MODE REBUILD and      *
* done a rollforward that restored such a load copy.           *
*                                                              *
* NOTE: INDEXING MODE REBUILD may be chosen even if you did    *
* not specify it.  Check for the message SQL3213I The indexing *
* mode is "REBUILD".                                           *
*                                                              *
* A modification state index is created on a column organized  *
* table when create index is done.                             *
* It is also created if the registry variable                  *
* DB2_EXTEND_COL_UNIQUE_INDEX_ACCESS set to ON (the default is *
* currently OFF) and a unique or primary key constraint is     *
* added.                                                       *
* To check which tables have a modification state index, do:   *
* db2 "select tabname, tabschema, indname, index_objectid,     *
* tbspaceid from syscat.indexes where indextype = 'MDST'"      *
*                                                              *
* If load in rebuild mode with the copy yes option is being    *
* used for a table that has a modification state index, it is  *
* recommended to take a new backup and apply the fix.  Avoid   *
* rolling forward thru such a load copy created without this   *
* fix.                                                         *
*                                                              *
* There are a number of symptoms resulting from this problem   *
* after or during rollforward through a loadcopy for a column  *
* organized table that has a modification state index.         *
* These include:                                               *
*                                                              *
* Errors reported by db2dart such as:                          *
*  Error: Invalid page-index 0 in start-logical-row-number     *
* extracted from the column-organized object page map.         *
*  Error: Invalid page-index 0 in end-logical-row-number       *
* extracted from the column-organized object page map.         *
* Error:           Free Space Offset = 4099 Error: too high!   *
* Record Length   = 17  (x11)   Error: INVALID LENGTH!         *
* Ending Slot     = 18446744073709551615  (xFFFFFFFF)  Error:  *
* invalid slot!                                                *
* Error: page in tree but not marked in use: Object Page (34)  *
*    Error: bad pagenumber Error: bad ftoken Error: Not an     *
* index page!                                                  *
*                                                              *
* Errors during rollforward such as the following may be       *
* reported in the db2diag.log:                                 *
* FUNCTION: DB2 UDB, index manager, sqliakn, probe:902         *
* FUNCTION: DB2 UDB, index manager, sqliakn, probe:901         *
* FUNCTION: DB2 UDB, buffer pool services, sqlb_verify_page,   *
* probe:2                                                      *
*    MESSAGE : ZRC=0x86020001=-2046689279=SQLB_BADP "page is   *
* bad"                                                         *
*                                                              *
* If the above errors are seen during rollforward but the      *
* following message is also seen after the errors in the       *
* db2diag.log, the problem may have been resolved already.     *
* FUNCTION: DB2 UDB, index manager,                            *
* sqliMarkInxBadDuringUndoRedo, probe:2037                     *
* Unexpected error.  Index will be marked bad to let recovery  *
* continue.                                                    *
*                                                              *
* A trap may occur during rollforward such as the following    *
* edited/simplified stacks may occur:                          *
* 0x00007F2170178C1B sqloEDUCodeTrapHandler                    *
* 0x00007F21704AA88C _Z14sqlprFindQueue                        *
* 0x00007F2170494918 _Z15sqlpPRecProcLog                       *
* 0x00007F2170450E9E _Z20sqlpParallelRecovery                  *
* OR:                                                          *
* 0x00007FD122442423 sqloEDUCodeTrapHandler                    *
* 0x00007FD122E15340 sqlra_sqlWC_get_common                    *
* 0x00007FD122AA930D _Z20sqlrr_signal_handler                  *
* 0x00007FD122443F35 sqloExecuteEDUExitList                    *
* 0x00007FD12244170A sqloDumpDiagInfoHandler                   *
* 0x00007FD1222DA90F sqloWaitEDUWaitPost                       *
* 0x00007FD1205410D5 _ZN11sqeScoordCB10ScoordWaitEP            *
* 0x00007FD12270DBE2 _Z8sqlprecmP8sqeAgent                     *
* 0x00007FD12273A9F6 _Z19sqlprDoForwardPhaseP8sqeAgent         *
* 0x00007FD122737241 _Z19sqlpForwardRecoveryP8sqeAgent         *
*                                                              *
* Errors reported from rollforward may include:                *
* SQL1271W  Database "WSDB" is recovered but one or more table *
* spaces are                                                   *
* offline on members or nodes "0".                             *
* SQL1224N  The database manager is not able to accept new     *
* requests, has                                                *
* terminated all requests in progress, or has terminated the   *
* specified request                                            *
* because of an error or a forced interrupt.  SQLSTATE=55032   *
*                                                              *
* If the rollforward succeeded and did not automatically       *
* resolve the issue, the following errors may be seen.  It is  *
* possible other errors may be reported.                       *
* Select, update and other commands may get:                   *
* SQL0901N  The SQL statement or command failed because of a   *
* database system                                              *
* error. (Reason "unexpected error at                          *
* DatabasePageMapCursor.cpp:95".)                              *
* SQLSTATE=58004                                               *
* AssertionFailedException: An assertion 'pPageMapIXCB !=      *
* __null && pPageMapIXCB->itoken != 0 && (                     *
* (pPageMapIXCB->idxcb.pIndexDef->indexType) &                 *
* (0x0004000000000000UL) )' failed. Additional info:           *
* DatabasePageMapCursor: Page map index must have been set by  *
* now. IXCB = NULL itoken = -1 pagemap = Unknown               *
* Thrown at DatabasePageMapCursor.cpp : 95                     *
* DATA #2 : Function name in Library, 105 bytes                *
* ibm_cde::data::DatabasePageMapCursor::DatabasePageMapCursor( *
* const ibm_cde::data::DatabaseTableAccessor &)                *
* DATA #3 : File name, 25 bytes                                *
* DatabasePageMapCursor.cpp                                    *
* CALLSTCK:                                                    *
*   [2] 0x00007FF36EC0C8AF                                     *
* _ZN7ibm_cde8services24AssertionFailedException               *
*   [3] 0x00007FF36F9E8C4C                                     *
* _ZN7ibm_cde4data21DatabasePageMapCursor                      *
*   [5] 0x00007FF36F3D26B1                                     *
* _ZN7ibm_cde4data21DatabaseTableAccessor                      *
*   [13] 0x00007FF370A9EE27                                    *
* _ZN7ibm_cde5query9Scheduler19runSingleTableQueryEv           *
*   [16] 0x00007FF3716E6777 _ZN12cdeInterface10IUDExecute      *
*                                                              *
* How to know if the problem has happened if there were no     *
* rollforward errors?                                          *
* If you have done all the prerequisite actions listed above,  *
* then check for errors by doing a db2dart inspection of the   *
* table.                                                       *
****************************************************************
* RECOMMENDATION:                                              *
* Take a new backup and upgrade to the latest fix pack.        *
****************************************************************
Local-Fix:
To prevent the problem from occurring before the fix is applied,
take a new backup and do not restore/rollforward using an older
backup that may result in ther restore of an old loadcopy.
If a  "load .. copy yes" with indexing mode REBUILD needs to be
done before the fix is applied, the modification state index can
be dropped but this may result in some index plans not being
chosen.
Instructions for recreating the modification state index after
the fix is applied are included at the end of this section.
Example of a query to get the name of a modification state index
to drop.
db2 "select substr(indname,1,30) indname from syscat.indexes
where indextype = 'MDST' and tabname='T1'"

The following are actions that can be taken if a problem has
already occurred.

If rollforward worked but an error is encountered after
rollforward:

Query to see what tables have a modification state index and to
get the tbspaceid and index_objectid of the index object:
   db2 "select tabname, tabschema, indname, index_objectid,
tbspaceid from syscat.indexes where indextype = 'MDST'"
Query to get the tbspaceid and tableid of the table:
  db2 -v "select tbspaceid, tableid, substr(tabname, 1, 10) from
syscat.tables where tabname='' and
tabschema=''"
Use the output to do the following to check the table for
errors:
  db2dart $dbName /t /tsi  /oi 
If errors are reported, use the output from the syscat.indexes
query above in this db2dart command to mark the index object
invalid.
  db2dart $dbName /mi /tsi  /oi 
These indexes will be rebuilt according to the INDEXREC
configuration parameter.

If an error occurs during during rollforward and it does not
complete successfully some options are:
A) Get the fix for this defect which includes a support registry
variable setting to mark the index invalid after restoring the
load copy, allowing the rollforward to complete.
The index object will then be rebuilt according to the INDEXREC
config parameter setting.
B) db2 RESTORE DB  REBUILD WITH ALL TABLESPACES IN
DATABASE EXCEPT TABLESPACE .
When the fix is applied, restore the tablespace(s) that had the
problem using the support registry variable setting.
C) Do filtered recovery to avoid rollforward on the table in
question.   Unfortunately the table woud be left in drop pending
state.
The db could restored to a new db and rollforward to a point in
time before the load copies, to recover the data for the bad
table to be imported into a new table on the original db.
D) Rollforward to a point in time before the load copy(s), but
this would result in some updates being lost.

How to recreate the modification state if it was dropped, but a
regular index still exists:
In this example, the regular index is one associated a primary
key or unique constraint, but it could also be a user defined
index.
- Get the name of the index and verify that an index with type
MDST does not exist.
    db2 "select substr(indname,1,25) indname, indextype from
syscat.indexes where tabschema='TEST1' and tabname = 'T1' and
indextype in ('REG','MDST')"
    INDNAME                   INDEXTYPE
    SQL171120105642950        REG
- Get the column names in the index.
    db2 "select substr(indname,1,35) indname, substr(colname, 1,
10) colname, COLSEQ, COLORDER from syscat.indexcoluse where
indname = 'SQL171120105642950'"
    INDNAME                             COLNAME    COLSEQ
COLORDER
    SQL171120105642950                  COL2            1 A
    SQL171120105642950                  COL1            2 A
- Create an index that uses the same columns as the primary key
or unique constraint (or a user defined index).
    db2 "create index I1 on TEST1.T1 (col2,col1)"
    SQL0605W  The index was not created because an index
    "SYSIBM.SQL171120105642950" with a matching definition
already exists.
    SQLSTATE=01550
- Verify that the modification state index was created, but no
regular index was created by running the initial query again.
    INDNAME                   INDEXTYPE
    SQL171120105642950        REG
    SQL171120105649725388     MDST
Lösung
Workaround
If no problem has been encountered, take a new backup and do not
use load copy for column organized tables that have a
modification state index until the the fix is applied.

If rollforward completes successfully, but there are errors in
the index, use db2dart to mark the index invalid so it will be
rebuilt according to the INDEXREC configuration parameter.

If rollforward does not complete, then it is best to get the fix
and use the service  registry variable provided to allow
rollforward to complete.   If that is not feasible, options
include
- db2 RESTORE DB  REBUILD WITH ALL TABLESPACES IN DATABASE
EXCEPT TABLESPACE  and later restore the
problem one once you have the fix with the service registry
variable set.
- filtered recovery to avoid rollforward for the table that has
a problem, and try to recover that table separately as much as
possible
- rollforward to a point in time before the load copy.
Bug-Verfolgung
Vorgänger  : 
Nachfolger : IT30793 
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
12.04.2019
31.10.2019
29.11.2019
Problem behoben ab folgender Versionen (IBM BugInfos)
Problem behoben lt. FixList in der Version