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

How to find EBS URL in R12.2

How to Grant Privileges in Oracle EBS R12.2 Using AD_ZD.GRANT_PRIVS