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

Comments

Post a Comment

Popular posts from this blog

How to troubleshoot long running concurrent request in R12.2

JSP Compilation in R12.2

How to run Gather Schema Statistics in R12.2