1. Before you start, make sure that the appropriate checkboxes are enabled in Server GUI, Admin Tool, Enable logging ( possibly include db session stacktrace ) This is needed to add additional logging to the database sessions we are interested in. 2. When the application server is hanging, open a SQL session using a SYSDBA account and execute the following query. It will show the open connections and some logging info we can use. Mainly how long sessions are waiting, the sql statement and the originator in the server code. SELECT V.SID, V.MODULE, V.CLIENT_IDENTIFIER, V.ACTION, V.CLIENT_INFO, SQL.SQL_TEXT, V.STATE, V.SECONDS_IN_WAIT FROM V$SESSION V, V$SQLAREA SQL WHERE V.SQL_ADDRESS=SQL.ADDRESS AND V.MODULE LIKE 'ABS%' ORDER BY V.SECONDS_IN_WAIT If you cannot use a sys adm account, you can use the following statement, but it will not list the actual sql statement, only the ids. SELECT V.SID, V.MODULE, V.CLIENT_IDENTIFIER, V.ACTION, V.CLIENT_INFO, V.STATE, V.SECONDS_IN_WAIT FROM V$SESSION V WHERE V.MODULE LIKE 'ABS%' ORDER BY V.SECONDS_IN_WAIT You do not necessary need to wait til the app server is hanging, It can be executed before as well to see if sessions are waiting. 3. To check for blocking sessions, here are a couple of useful queries 1. See if sessions are blocking other sessions select l1.sid, ' IS BLOCKING ', l2.sid from v$lock l1, v$lock l2 where l1.block =1 and l2.request > 0 and l1.id1=l2.id1 and l1.id2=l2.id2