"Shawn" <fa************ ***@yahoo.com> wrote in message
news:ab******** *************** ***@posting.goo gle.com...
We are on IBM DB2 7.1 ON WINDOWS. The db2diag.log is not working and
no new line written into it for few days. The last lines in
db2diag.log shows:
Warning: active log held by dirty pages.
Decrease softmax and/or increase num_iocleaners.
repeatedly . What is the problem? How can resolve it quickly? The
applicatipna dnLDAP is up and running though.
If you click on Start/Programs/IBM DB2/Information/DB2 Information, you
should get a combined book index and search engine. Go to the search engine
and enter "num_iocleaners " (without the quotes) and click the Search button.
Assuming your documentation is similar to mine - I'm running DB2 V7.2, FP9 -
your first hit should be an article in the Administration Guide called
"Managing the Database Buffer Pool". If you read that, you will get a good
explanation of what is happening within your system; "dirty pages",
"num_iocleaners ", and "softmax" are all explained.
You haven't said what level of experience you or your shop have had with DB2
so I'm going to take a wild guess that you don't have a lot of experience.
(Forgive me if I've guessed wrong!). Is it possible that your applications
haven't issued a COMMIT in a while? That would be the most obvious reason
why you have too many dirty pages. Remember, your applications need to issue
COMMIT statements occasionally to confirm to DB2 that you really want to
keep the updates, inserts and deletes you've been making; otherwise, DB2
only makes the changes in the applications work area and the bufferpool but
doesn't make them to the database proper in case you want to ROLLBACK (undo)
the changes. This causes an accumulation of dirty pages (data that has been
changed but not committed) which will eventually bring the system to its
knees if not handled.
Please note that there are a variety of events which cause COMMITs to happen
other than explicit COMMIT statements within your applications. For example,
a program that ends normally will issue its own commit automatically.
However, you could have a situation where a program is stuck for some
reason - waiting for input? waiting for a file to be released? - that has
kept it from getting to the end. Therefore, waiting until the automatic
COMMIT point may not be an option for you. Or maybe it is; if you give the
input or file the application is waiting for, you may solve the problem.
It is also possible that you have misconfigured NUM_IOCLEANERS or SOFTMAX so
that they aren't appropriate for your system. Both are parameters associated
with a specific database - as opposed to DB2 in its entirety - so you can
see your values with the command:
db2 get db config for <database-name> | more
You can issue this command from a DB2 Command Window. Then, if the values
are inappropriate (the article I mentioned should help you set appropriate
values), you can modify the values with the UPDATE DB CONFIG command. For
example:
db2 update db config for <database-name> using softmax 150
[See the Command Reference for details of the GET DATABASE CONFIGURATION and
UPDATE DATABASE CONFIGURATION commands.]
Rhino