How to Clear OACORE WARNING WebLogic Stuck Threads in Oracle EBS R12.2
Overview
In Oracle E-Business Suite R12.2, sometimes the OACORE managed server goes into WARNING state in the WebLogic console. This usually happens because of stuck threads.
A stuck thread means a request is running for a long time and not completing.
When this happens:
- OACORE server shows WARNING status
- Users may face slow performance
- Some pages may take a long time to load
As an Oracle Apps DBA, we must identify the stuck thread and the related database session.
Common Reasons for Stuck Threads
- Long running SQL queries
- Blocking sessions
- Large data processing
- Unoptimized queries
- Heavy concurrent requests
Step 1 – Check WebLogic Console
Login to WebLogic Admin Console.
http://hostname:7002/console
Navigate to:
Environment → Servers
Example:
oacore_server7 WARNING
Step 2 – Check Stuck Threads
Navigate to:
Environment → Servers → oacore_server → Monitoring → Threads
Find ECID value from stuck thread.
ECID-Context: 1.005ZMgd6^_57q2OayhmZMG0003hc0001wX;
Final ECID value:
005ZMgd6^_57q2OayhmZMG0003hc0001wX
METHOD 1 – Identify Sessions Using OACORE Server Name
Use the below query to identify sessions behind stuck threads.
Example for OACORE_SERVER1:
select sid, serial#, program, trunc(last_call_et/60) last_call_et_minutes, module, action, ecid, username, schemaname, client_identifier, process, machine, sql_id, status, blocking_session_status, event, state from v$session where program like 'oacore_server1' --and ecid like '%%' --and action like '%%' order by program,last_call_et desc;
Step 3 – Find Database Session Using ECID
select * from v$session where ecid='005ZMgd6^_57q2OayhmZMG0003hc0001wX';
Method 2 – Using Multiple ECID from OACORE Logs
Check OACORE log location:
$EBS_DOMAIN_HOME/servers/oacore_server1/logs
select * from v$session where ecid in ( '005Zh4t9oXM7q2OayhmZMG000AtS00028p', '005Zh4qsWVK7q2OayhmZMG000AtS0002Hf' );
Method 3– Identify Session Using OACORE Process ID
ps -ef | grep -i oacore_server3
select sid, serial#, last_call_et, machine, process, module, client_identifier, status from gv$session where program like '%JDBC%' and machine='cl12805' and process='33359' order by last_call_et desc;
Killing the Problematic Session
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
Best Practices
- Identify long running sessions
- Kill inactive sessions only
- Check SQL query before killing session
- Confirm with application team before terminating active sessions
Thank you for sharing this valuable information
ReplyDelete