Run the following code at a point in the OpenEdge session where there should be few or no dynamic temp-tables:
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
OUTPUT TO "memdump.log" APPEND.
PUT UNFORMATTED SKIP
"** Dump: " TODAY STRING(TIME,'HH:MM:SS') SKIP
"** Dynamic temp-tables **" SKIP.
ASSIGN hBuffer = SESSION:FIRST-BUFFER.
DO WHILE VALID-HANDLE(hBuffer):
IF VALID-HANDLE((hBuffer:TABLE-HANDLE)) THEN DO:
PUT hBuffer:TABLE-HANDLE:NAME FORMAT "x(20)" AT 2
" ".
&IF PROVERSION BEGINS "1" &THEN
IF VALID-HANDLE(hBuffer:INSTANTIATING-PROCEDURE) THEN
PUT hBuffer:INSTANTIATING-PROCEDURE:FILE-NAME FORMAT "x(40)".
&ENDIF
PUT SKIP.
END.
hBuffer = hBuffer:NEXT-SIBLING.
END.
OUTPUT CLOSE.
The file memdump.log will contain the names of the dynamic temp-tables currently in memory. In OpenEdge 10.x and above, the name of the procedure that created the temp-table will also be included.
Another alternative, available in OpenEdge 10.x and later, is to activate the client logging with the
DynObjects.DB log entry type. The log will then report when each dynamic temp-table is created and when it is deleted. For further information refer to Articles: