We had some new DB2 AUTHIDs added to the system, and began receiving excessive messages like the following:
ACF04056 ACCESS TO RESOURCE rsc TYPE DTBL BY
lid NOT AUTHORIZED
ACF04056 ACCESS TO RESOURCE rsc TYPE DTBL BY
lid NOT AUTHORIZED
We then started receiving the following message:
CAS9810E - ENF/DB2 Thread table full for DSNP
This caused some batch jobs to fail. By the time we issued the DB2STAT command the usage had dropped.
The DB2STAT command returned the following information:
F ENF,DB2STAT
CAS9214I - CA-ENF Command: DB2STAT 483
CAS9808I - DB2 TOTAL STRINGS % % HWM
CAS9808I - SUBS ALLOC FREE IN USE IN USE
CAS9809I - DSNP 2,100 1,436 31.61 98.38
CAS9240I - DB2STAT - Command complete
Product: Common Components and Services for z/OS
Component: ENF/DB2
Release : 15.0
Based on the information it appears as though the situation was temporary and had resolved itself.
When ENF/DB2 initializes in a DB2 region, a thread table is built. The size of the thread table is based on the MAXTHRD value. If not defined in ENFPARMS, the default allows 2100 entries in the table.
If ENF/DB2 is unable to add an entry to the thread table because it is full, ENF/DB2 passes back a non-zero return code on the request. This will result in the security request failing, as witnessed by the failed batch jobs.
An entry is placed in the thread table the first time a particular token is "seen"(at the first security call for the thread) and is cleaned up when the DB2 thread completes.
The most likely reason for the table filling up is that a volume of work is occurring at a high rate, and new threads are starting at a faster rate than they are completing.
The ENF/DB2 thread table entries consist of:
It may be possible that no action is warranted if this is a one-off situation. However, if the CAS9810E message is seen regularly, it is recommended that the size of the thread table be increased.
You may increase the value up to a max 9999. While this value can be dynamically changed, you would have to recycle the DB2 region(s) to actually make a difference as the thread table is built during initialization.
The command to dynamically increase the size is - F ENF,DB2(MAXTHRD,nnnn)
Note: Remember to make the update in the ENFPARMS member so that the setting is picked up when ENF normally starts up.
Related Documentation: CAIENF/DB2 Control Options
Additionally, see published PTF LU08834