Вы находитесь на странице: 1из 6

REM

REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM

HEADER
$Header: atg_supp_wfbkgrnd.sql v1.0 AXGONZAL $

set
set
set
set
SET
SET

arraysize 1
heading off
feedback off
verify off
CONCAT ON
CONCAT .

MODIFICATION LOG:
Created: Dec 30th, 2008
7-FEB-2009 AXGONZAL modified queries
This script was created to collect the required information
to analyze wf background engine problems
How to run it?
sqlplus apps/<password>
@atg_supp_wfbkgrnd.sql
Parameter:
None
Output file
wf_bkgrnd.html

set lines 120


set pages 9999
def outputfile = "wf_bkgrnd.html"
spool &&outputfile
prompt <FONT SIZE=3 FACE=ARIAL>
alter session set NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
prompt </FONT>
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt

<HTML>
<HEAD>
<TITLE>Workflow Backgroun Engine Diagnostic Script </TITLE>
<STYLE TYPE="text/css">
<!-- TD {font-size: 8pt; font-family: arial; font-style: normal} -->
</STYLE>
</HEAD>
<BODY>

prompt <P><P>

prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt

<TABLE BORDER=1>
<TR><TD COLSPAN=5 BGCOLOR==BLUE><FONT COLOR=WHITE FACE=ARIAL>
<B>Workflow Backgroun Engine
<BR>Quick Links to Tables</B></TD></TR>
<TR>
<TD><A HREF="#dbp">Database Parameters</A></TD>
<TD><A HREF="#dbaq">DBA_QUEUES</A></TD>
<TD><A HREF="#wfd">WF_DEFERRED_TABLE_M</A></TD>
<TD><A HREF="#wfa">Activities in Deferred Status</A></TD>
</TR>
<TR>
<TD><A HREF="#wfiav">WF_ITEM_ATTRIBUTE_VALUES</A></TD>
<TD><A HREF="#wfas">WF_ITEM_ACTIVITY_STATUSES</A></TD>
<TD><A HREF="#fndcp">FND_CONCURRENT_PROGRAMS</A></TD>
<TD><A HREF="#pkg">PACKAGE_VERSIONS</A></TD>
</TR>
</TABLE><P><P>

prompt </FONT>
REM
REM ******* DATABASE PARAMETERS *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=12 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="dbp"> DB PARAMETERS </A></B></TD></TR>
prompt <TD><B>NAME</B></TD>
prompt <TD><B>VALUE</B></TD></TR>
select
'<TR><TD>'||NAME||'</TD>'||chr(10)||
'<TD>'||VALUE||'</TD>'||chr(10)||'</TD></TR>'
from v$parameter
where upper(name) in ('AQ_TM_PROCESSES','JOB_QUEUE_PROCESSES','JOB_QUEUE_INTERVA
L')
order by name;
prompt </TABLE><P><P>
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=2 BGCOLOR=Beige><font color=maroon face=arial>
prompt If aq_tm_processes value is equal to zero, please contact the DBA to chan
ge it to 1 or higher.</TD></TR>
prompt </TABLE><P><P>
REM
REM ******* DBA_QUEUES *******
REM
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt
prompt

<TABLE BORDER=1>
<TR><TD COLSPAN=9 BGCOLOR=BLUE><font color=white face=arial>
<B><A NAME="dbaq"> DBA_QUEUES </A></B></TD></TR>
<TR>
<TD><B>OWNER</B></TD>
<TD><B>QUEUE_NAME</B></TD>
<TD><B>ENQUEUE</B></TD>
<TD><B>DEQUEUE</B></TD>
<TD><B>RETRIES</B></TD>
<TD><B>RETENTION</B></TD>
<TD><B>DELAY</B></TD>

select
'<TR><TD>'||q.OWNER||'</TD>'||chr(10)||
'<TD>'||q.NAME||'</TD>'||chr(10)||
'<TD>'||q.ENQUEUE_ENABLED||'</TD>'||chr(10)||
'<TD>'||q.DEQUEUE_ENABLED||'</TD>'||chr(10)||
'<TD>'||to_char(q.MAX_RETRIES)||'</TD>'||chr(10)||
'<TD>'||q.RETENTION||'</TD>'||chr(10)||
'<TD>'||to_char(q.RETRY_DELAY)||'</TD></TR>'
from ALL_QUEUES q
where (q.NAME like '%WF_DEFERRED_%')
order by q.NAME;
prompt </TABLE><P><P>
REM
REM ******* WF_DEFERRED_TABLE_M *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=12 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="wfd">WF_DEFERRED_TABLE_M - All Event Information</A></B></TD>
</TR>
prompt <TR>
prompt <TD>ITEM_TYPE</TD>
prompt <TD>ITEM_KEY</TD>
prompt <TD>STATE</TD>
prompt <TD>PRIORITY</TD>
prompt <TD>w.ENQ_TIME</TD>
prompt <TD>w.DEQ_TIME</TD>
prompt <TD>w.MSGID</TD>
select
'<TR><TD>'||w.user_data.itemtype||'</TD>'||chr(10)||
'<TD>'||decode(w.state, 0, '0 = Ready',1, '1 = Delayed',2, '2 = Retained/Process
ed',3, '3 = Exception',to_char(w.state))||'</TD>'||chr(10)||
'<TD>'||count(*)||'</TD>'||chr(10)||'</TD></TR>'
from wf_deferred_table_m w
group by w.user_data.itemtype, w.state;
prompt </TABLE><P><P>
prompt
prompt
prompt
prompt
prompt
prompt
prompt

<TABLE BORDER=1>
<TR><TD COLSPAN=2 BGCOLOR=Beige><font color=maroon face=arial>
Ready = Activity is ready to be processed </B><br>
Delayed = Activity will be processed later<br>
Retained = Activity was already processed<br>
Exception = Activity had an error </TD></TR>
</TABLE><P><P>

REM
REM ******* WF_ITEM_ACTIVITY_STATUSES *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=12 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="wfa">WF_ITEM_ACTIVITY_STATUSES - Activities in Deferred Statu
s</A></B></TD></TR>
prompt <TR>
prompt <TD>ITEM_TYPE</TD>
prompt <TD>ITEM_KEY</TD>
prompt <TD>ROOT_ACTIVITY</TD>
prompt <TD>ROOT_ACTIVITY_VERSION</TD>

prompt <TD>ITEM_BEGIN_DATE</TD>
prompt <TD>END_DATE</TD>
prompt <TD>ACTIVITY_LABEL</TD>
prompt <TD>ACTIVITY_STATUS</TD>
prompt <TD>ACTIVITY_RESULT_CODE</TD>
prompt <TD>ERROR_NAME</TD>
prompt <TD>ACTIVITY_BEGIN_DATE</TD>
select
'<TR><TD>'||wi.item_type||'</TD>'||chr(10)||
'<TD>'||wi.item_key||'</TD>'||chr(10)||
'<TD>'||wi.root_activity||'</TD>'||chr(10)||
'<TD>'||wi.root_activity_version||'</TD>'||chr(10)||
'<TD>'||wi.begin_date||'</TD>'||chr(10)||
'<TD>'||wi.end_date||'</TD>'||chr(10)||
'<TD>'||PRA.INSTANCE_LABEL||'</TD>'||chr(10)||
'<TD>'||was.activity_status||'</TD>'||chr(10)||
'<TD>'||was.ACTIVITY_RESULT_CODE||'</TD>'||chr(10)||
'<TD>'||was.error_name||'</TD>'||chr(10)||
'<TD>'||was.begin_date||'</TD>'||chr(10)||'</TD></TR>'
from wf_items wi, wf_item_activity_statuses was, wf_process_activities PRA
where wi.item_type = was.item_type
and wi.item_key = was.item_key
and wi.end_date is null
and was.end_date is null
and was.activity_status = 'DEFERRED'
and was.item_type = wi.item_type
and was.item_key = wi.item_key
and PRA.instance_id(+) = was.process_activity
order by wi.item_key;
prompt </TABLE><P><P>
REM
REM ******* WF_ITEM_ATTRIBUTE_VALUES *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=9 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="wfiav">WF_ITEM_ATTRIBUTE_VALUES table - Items with more than
1000 rows</A></B></TD></TR>
prompt <TR>
prompt <TD><B>ITEM_TYPE</B></TD>
prompt <TD><B>COUNT</B></TD>
select
'<TR><TD>'||ITEM_TYPE||'</TD>'||chr(10)||
'<TD>'||COUNT(*)||'</TD></TR>'
from WF_ITEM_ATTRIBUTE_VALUES
group by item_type
having count(*) > 1000
order by COUNT(*) desc;
prompt </TABLE><P><P>
REM
REM ******* WF_ITEM_ACTIVITY_STATUSES *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=9 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="wfas">WF_ITEM_ACTIVITY_STATUSES table - Items with more than
1000 rows</A></B></TD></TR>
prompt <TR>

prompt <TD><B>ITEM_TYPE</B></TD>
prompt <TD><B>COUNT</B></TD>
select /*+ parallel(ITEM_TYPE,4)*/
'<TR><TD>'||ITEM_TYPE||'</TD>'||chr(10)||
'<TD>'||COUNT(*)||'</TD></TR>'
from WF_ITEM_ACTIVITY_STATUSES
group by item_type
having count(*) > 1000
order by COUNT(*) desc;
prompt </TABLE><P><P>
REM
REM ******* FND_CONCURRENT_PROGRAMS *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=9 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="fndcp"> Workflow Background Programs Executed Today </A></B><
/TD></TR>
prompt <TR>
prompt <TD><B>REQUEST_ID</B></TD>
prompt <TD><B>PROGRAM_NAME</B></TD>
prompt <TD><B>REQUEST_DATE</B></TD>
prompt <TD><B>PARAMETERS</B></TD>
prompt <TD><B>PHASE</B></TD>
prompt <TD><B>STATUS</B></TD>
select
'<TR><TD>'||r.request_id||'</TD>'||chr(10)||
'<TD>'||p.concurrent_program_name||'</TD>'||chr(10)||
'<TD>'||r.request_date||'</TD>'||chr(10)||
'<TD>'||r.argument_text||'</TD>'||chr(10)||
'<TD>'||a.meaning||'</TD>'||chr(10)||
'<TD>'||b.meaning||'</TD></TR>'
from fnd_concurrent_programs p, fnd_concurrent_requests r, fnd_lookups a, fnd_lo
okups b
where p.concurrent_program_id = r.concurrent_program_id
and p.concurrent_program_name like 'FNDWFBG'
and a.LOOKUP_TYPE = 'CP_PHASE_CODE'
and a.LOOKUP_CODE = r.phase_code
and b.LOOKUP_TYPE = 'CP_STATUS_CODE'
and b.LOOKUP_CODE = r.status_code
and to_char(r.request_date,'MM-DD-YYYY') >= to_char(sysdate,'MM-DD-YYYY')
order by 1 desc;
prompt </TABLE><P><P>
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=2 BGCOLOR=Beige><font color=maroon face=arial>
prompt Development has provided recommendations about how to run this program in
order to avoid performance with it.</B><br>
prompt The recommendation is to run three separate background engines at differe
nt intervals:</B><br>
prompt .</B><br>
prompt a. Run a background engine to handle only deferred activities every 5 to
60 minutes. </B><br>
prompt b. Run a background engine to handle only timed out activities every 1 to
24 hours as needed.</B><br>
prompt c. Run a background engine to handle only stuck processes once a week to
once a month, when the load on the system is low. </B><br>
prompt .</B><br>
prompt For more information refer to Note 266614.1 and Oracle Workflow Administr

ator s Guide on chapter 2. </B><br>


prompt </TABLE><P><P>
REM
REM ******* PACKAGE_VERSIONS *******
REM
prompt <TABLE BORDER=1>
prompt <TR><TD COLSPAN=12 BGCOLOR=BLUE><font color=white face=arial>
prompt <B><A NAME="pkg"> Package Versions </A></B></TD></TR>
prompt <TD><B>PACKAGE_NAME</B></TD>
prompt <TD><B>TEXT</B></TD></TR>
select
'<TR><TD>'||NAME||'</TD>'||chr(10)||
'<TD>'||TEXT||'</TD>'||chr(10)||'</TD></TR>'
from dba_source
where name in ('WF_ENGINE')
and line = 2;
prompt </TABLE><P><P>
spool off
set heading on
set feedback on
set verify on
exit

Вам также может понравиться