IBM Support

Database marked bad with ZRC=0x870F00F2 on Windows

Question & Answer


Question

This document describes possible causes for a database that is marked bad and a series of messages beginning with one like this in the db2diag.log: DIA0001E An internal error occurred. Report the following error code : "ZRC=0x870F00F2".

Cause

This problem can occur if the Windows® file system cache is exhausted.

The Windows file system cache might be exhausted after DB2® repeatedly reads from large file system containers.
The database is then marked bad because the DB2® database gets a Windows error code ERROR_NO_SYSTEM_RESOURCES when reading from a database container.

When the database is marked bad, the next time it is activated it will automatically undergo crash recovery.

Problem details
The db2diag.log message will have the following format:

xxxx-xx-xx-xx.xx.xx.xxxxxx Instance:xxx Node:xxx
PID:xxxx(db2syscs.exe) TID:xxxx Appid:xxxxxxxxxxxxxxxxxxxxxxx
buffer pool services sqlbReadPageFromContainer Probe:20
Database:xxxxxxxx

DIA0001E An internal error occurred. Report the following error code :
"ZRC=0x870F00F2".

Answer

The error can be prevented from occurring--at least temporarily--by rebooting the machine, thereby clearing the Windows file system cache.

You can use the DB2 registry variable DB2NTNOCACHE to avoid use of the Windows file system cache. Follow these steps to set it:
db2stop
db2set DB2NTNOCACHE=ON
db2start

The DB2NTNOCACHE registry variable specifies whether DB2 on Windows opens
database files with a NOCACHE option. If DB2NTNOCACHE=ON, file system
caching is eliminated. If DB2NTNOCACHE=OFF, the operating system caches
DB2 files. This applies to all data except for files that contain long
fields or LOBs. Eliminating system caching allows more memory to be
available to the database so that the buffer pool or sortheap can be
increased.

In DB2 UDB Version 8.2 and DB2 9 you can achieve everything that this registry variable was designed to do by using the CREATE TABLESPACE and ALTER TABLESPACE SQL statements.
Functionality previously achieved through DB2NTNOCACHE can be achieved
at the table space level by specifying the NO FILE SYSTEM CACHING clause
on the CREATE TABLESPACE or the ALTER TABLESPACE statement. Refer to SQL
Reference for details on usage. The DB2NTNOCACHE registry variable will
be removed in a future release.

You may also reduce DB2's use of the Windows file system cache by reducing the size of your containers.

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Database Objects\/Config - Tablespaces","Platform":[{"code":"PF033","label":"Windows"}],"Version":"9.7;9.5;9.1","Edition":"Enterprise Server;Express;Personal;Personal Developer's;Workgroup Server","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21223949