Technical Blog Post
75 ways to demystify DB2 #53: What does the 4470 error tell us?
The 4470 “Object closed” message is returned when the object that the application attempted to use was already closed. The message covers many types of objects from connections to LOBs. The object closed error is a little different than other error messages in that it occurs after the error causing event. When the IBM Data Server Driver for JDBC and SQLJ (also called the JCC driver) is asked to close an object it marks it as closed. When an object is referenced by an application, the driver checks to see if its status is closed. If the object is closed a 4470 object closed error returns. The 4470 error message only indicates what type of object was closed and does not provide any insight into the event that closed the object. Often there will be an earlier error message in the application log that will provided insight into the reason the object was closed.
If the type of object that is closed is a connection then most likely a JDBC 4499 error message will have been logged and investigating this message should provide some insight into the issue. For additional information on the JDBC 4499 error please see the following Blog:
In the case where the object referred to is a LOB, the most common cause is that the LOB value has gone out of scope. This error commonly occurs when Progressive Streaming is in use (it is on by default). When Progressive Streaming is used, a variable that has retrieved a LOB object will go out of scope and no longer be accessible after the cursor moves to the next row (by calling the “next” method). The point where the LOB goes out of scope is not logged, so there is no earlier error message to provide further insight. This issue can be resolved either by modifying the application to access the object while it is in scope or by setting the progressiveStreaming property for the IBM Data Server Driver for JDBC and SQLJ to 2. This setting will turn off Progressive Streaming and cause the driver’s LOB behavior to be governed by the fullyMaterializeLobData property.
Further information on Progressive Streaming and application timing can be found at the following URL.
Additional Information on the progressiveStreaming and fullyMaterializeLobData properties can be found at this URL.
The 4470 error is always caused by an application accessing an object which the driver knows to be closed. This Blog covers the most common objects and reasons for their closure, but there can be other reasons as to why an object has been marked as closed, and if these messages persist you may wish to contact Technical Support for further assistance.