15
CONCURRENT PROGRAMME: INACTIVE >> No Manager 1. Concurrent Manager is Busy with processing other Requests. 2. FND_CONCURRENT_QUEUES may have wrong entries. 3. DISPLAY variable not set correctly. Completed >> ERROR Concurrent Managers Not Started. 1. Wrong entries in FND_CONCURRENT_QUEUES. Select node_name, target_node from FND_CONCURRENT_QUEUES; 2. FNDLIBR may be corrupted. $FND_TOP/bin 3. Recompile $IAS_ORACLE_HOME/bin/adlnkiAS.sh Script to relink iAS web home after install/clone Some times there may be live processes due to improper shut down of Concurrent managers Some times need to Run Non Destructive script to Clean Concurrent Manager Tables cmclean.sql 134007.1 SQL> exec FND_CONC_CLONE.SETUP_CLEAN Update apps.FND_CONCURRENT_QUEUES Set phase_code = 'C', status_code = 'D', hold_flag =‘Y’ where phase_code! = 'C'; LONG RUN CONCURRENT REQUESTS: One or more concurrent requests are not getting processed successfully. They remain in Phase Running and Status Normal and will never Complete. In the end all the concurrent manager processes are hanging an any new concurrent request will remain pending. Random Concurrent Requests Remain Running Due to Database Locks 400741.1 Need to get Dead Locks. Holding Session and Waiting Session. How To Fix The Forms Timeout Issue In Oracle Applications 11i 269884.1 Tips and Queries for Troubleshooting Forms Session Timeout Issues 402674.1 How to Kill Inactive Sessions Based on the Information in the Monitor User Form 103516.1 Purge Concurrent Request and/or Manager Data REQUEST, Age, 1, , RCRUZPER, , , , , , , N, Y Purge Concurrent Request Concurrent Program Use the following tables: 1) FND_CONCURRENT_REQUESTS: Contains a complete history of all concurrent requests (both past history and those scheduled to run in the future). 2) FND_RUN_REQUESTS: Stores information about the reports in a report set that a user submits including the report set’s parameter values. 3) FND_CONC_REQUEST_ARGUMENTS: Records all arguments passed by Concurrent Managers to concurrent requests as those requests are running. 4) FND_DUAL: Records when a request does not update any database tables.

Concurrent Programme

Embed Size (px)

Citation preview

Page 1: Concurrent Programme

CONCURRENT PROGRAMME: INACTIVE >> No Manager

1. Concurrent Manager is Busy with processing other Requests. 2. FND_CONCURRENT_QUEUES may have wrong entries. 3. DISPLAY variable not set correctly. Completed >> ERROR

Concurrent Managers Not Started.

1. Wrong entries in FND_CONCURRENT_QUEUES. Select node_name, target_node from FND_CONCURRENT_QUEUES;

2. FNDLIBR may be corrupted. $FND_TOP/bin 3. Recompile $IAS_ORACLE_HOME/bin/adlnkiAS.sh

Script to relink iAS web home after install/clone Some times there may be live processes due to improper shut down of Concurrent managers Some times need to Run Non Destructive script to Clean Concurrent Manager Tables cmclean.sql 134007.1 SQL> exec FND_CONC_CLONE.SETUP_CLEAN Update apps.FND_CONCURRENT_QUEUES Set phase_code = 'C', status_code = 'D', hold_flag =‘Y’ where phase_code! = 'C'; LONG RUN CONCURRENT REQUESTS: One or more concurrent requests are not getting processed successfully. They remain in Phase Running and Status Normal and will never Complete. In the end all the concurrent manager processes are hanging an any new concurrent request will remain pending. Random Concurrent Requests Remain Running Due to Database Locks 400741.1 Need to get Dead Locks. Holding Session and Waiting Session. How To Fix The Forms Timeout Issue In Oracle Applications 11i 269884.1 Tips and Queries for Troubleshooting Forms Session Timeout Issues 402674.1 How to Kill Inactive Sessions Based on the Information in the Monitor User Form 103516.1 Purge Concurrent Request and/or Manager Data REQUEST, Age, 1, , RCRUZPER, , , , , , , N, Y Purge Concurrent Request Concurrent Program Use the following tables: 1) FND_CONCURRENT_REQUESTS: Contains a complete history of all concurrent requests (both past history and those scheduled to run in the future). 2) FND_RUN_REQUESTS: Stores information about the reports in a report set that a user submits including the report set’s parameter values. 3) FND_CONC_REQUEST_ARGUMENTS: Records all arguments passed by Concurrent Managers to concurrent requests as those requests are running. 4) FND_DUAL: Records when a request does not update any database tables.

Page 2: Concurrent Programme

5) FND_CONCURRENT_PROCESSES: Records information about Oracle Applications processes and OS processes. 6) FND_CONC_STAT_LIST: Collects runtime performance statistics for concurrent requests. 7) FND_CONC_STAT_SUMMARY: Contains Concurrent Program performance statistics generated by the Purge Concurrent Request program or the manager data program. These programs use the data in FND_CONC_STAT_LIST to compute these statistics. Define New Concurrent Manager Concurrent > Managers > Define Enter the new manager’s name, example: MRP STD MGR Enter a short name, example: MRPSTD Select the application: Application Object Library Description: Standard Manager for MRP Type: Concurrent Manager Program Library name: FNDLIBR Leave all other fields blank. Select the Work Shifts button Choose Standard work shift and enter the number of processes desired. MRP requires the number of process to be a minimum of: 2 * <Value of profile MRP: Snapshot Workers> + 2 Select the Specialization Rules button Setup the following rules: Include - Program - Oracle Master Scheduling/MRP Exclude - Program - Oracle Master Scheduling/MRP - Planning Manager Save your work. Now query the Standard Manager to change the Specialization Rules Select the Specialization Rules button Setup the following rules: Exclude - Program - Oracle Master Scheduling/MRP Concurrent LOG Files: $COMMON_TOP/admin/log/SID hostname/ $APPLCSF/$APPLLOG

How to Trace a Concurrent Request And Generate TKPROF File

Enable Tracing For The Concurrent Manager Program

· Responsibility: System Administrator

· Navigate: Concurrent > Program > Define

· Query Concurrent Program

Page 3: Concurrent Programme

· Select the Enable Trace Checkbox

Turn On Tracing

· Responsibility: System Administrator

· Navigate: Profiles > System

· Query Profile Option Concurrent: Allow Debugging

· Set profile to Yes

Run Concurrent Program With Tracing Turned On

· Logon to the Responsibility that runs the Concurrent Program

· In the Submit Request Screen click on Debug Options (B)

· Select the Checkbox for SQL Trace

Run the following SQL to find out the Raw trace name and location for the concurrent program. The SQL prompts the user for the request id

SELECT ’Request id: ’||request_id , ‘Trace id: ’||oracle_Process_id, ‘Trace Flag: ’||req.enable_trace, ‘Trace Name: ‘||dest.value||’/'||lower(dbnm.value)||’_ora_’||oracle_process_id||’.trc’, ‘Prog. Name: ’||prog.user_

concurrent_program_name, ‘File Name: ’||execname.execution_file_name|| execname.subroutine_name , ‘Status : ’||decode(phase_code,’R',’Running’) ||’-'||decode(status_code,’R',’Normal’), ‘SID Serial: ’||ses.sid||’,'|| ses.serial#, ‘Module : ’||ses.module from fnd_concurrent_requests req, v$session ses, v$process proc, v$parameter dest, v$parameter dbnm, fnd_concurrent_programs_vl prog, fnd_executables execname where req.request_id = &request and req.oracle_process_id=proc.spid(+) and proc.addr = ses.paddr(+) and dest.name=’user_dump_dest’ and dbnm.name=’db_name’ and req.concurrent_program_id = prog.concurrent_program_id and req.program_application_id = prog.application_id and prog.application_id = execname.application_id and prog.executable_id=execname.executable_id;

$tkprof raw_trace_file.trc output_file explain=apps/apps sort=(exeela,fchela) sys=no

The trace file by default is post fixed with oracle Process_id which helps us to identify which trace file belongs to which concurrent request. The below SQL Query returns the process_id of the concurrent request:

Select oracle_process_id from fnd_concurrent_requests where request_id='2768335'

(This query displays Process Id)

SELECT * FROM V$PARAMETER WHERE NAME='user_dump_dest'

Ls –ltr *oracle_processid*.trc

Page 4: Concurrent Programme

To Identify which ConcurrentManager is processing a Request:

set lines 1000 pages 100 col USER_CONCURRENT_PROGRAM_NAME for a19 col USER_CONCURRENT_QUEUE_NAME for a14 col REQUEST_ID for a10 col REQUEST_ID for 99999999 select ptl.user_concurrent_program_name,qtl.user_concurrent_queue_name,t.request_id from Fnd_Concurrent_Requests t, FND_CONCURRENT_PROCESSES k, Fnd_Concurrent_Queues_TL QTL, Fnd_Concurrent_Programs_TL PTL where k.concurrent_process_id = t.controlling_manager and QTL.Concurrent_Queue_Id = k.concurrent_queue_id and ptl.concurrent_program_id=t.concurrent_program_id and qtl.language='US' and ptl.user_concurrent_program_name like '%PTO SPF Load Orders%'; Charecter set Conversion: 1. Install the ccscan tool 1c. run csminst.sql 2. Check if you have no invalid code points in the current character set: 2a. csscan parfile=parfile1 FULL=Y FROMCHAR=WE8ISO8859P1 TOCHAR=al32utf8 LOG=WE8check CAPTURE=Y ARRAY= 1000000 PROCESS=2 5. Export the Convertible data using NLS_LANG instchkc.txt and instchkc.out UTF8 Takes US7ASCII Takes 1 byte... usrns214:/d01/oracle/ptchora/10.2.0/rdbms/admin> echo $NLS_LANG American_America.US7ASCII 6 . Functional Index(not present) 7. Change the database charecter set.

ICX: Limit Time is the profile option which makes users to kicked out.

ICX: Session Timeout=3600000 mille seconds

OPERATING SYSTEM:

SOLARIS no.Of CPU psrinfo Memory Conf /usr/sbin/prtconf Swap /usr/sbin/swap -s Bit Version /usr/bin/isainfo -kv Extensible uname -X

Page 5: Concurrent Programme

AIX No.Of CPU lscfg -vs|grep proc | wc -l Bit version ls -l /unix LINUX No.Of CPU /proc/meminfo, /proc/cpuinfo cd $ORACLE_HOME/bin file oracl*

select dbms_metadata.get_ddl('TABLE','FND_LOGINS','APPLSYS') from dual;

select 'alter system kill session ''' || sid||','||serial#||''' IMMEDIATE ' || ';' from v$session where status ='INACTIVE';

Templates for httpd.conf files $FND_TOP/admin/template/

How to troubleshoot long running concurrent request in Oracle Apps 11i/R12

Step 1 : Check Concurrent Request ID of long running concurrent request from front end Step 2 : Find SID, SERIAL# and SPID by running SQL (given below) Step 3 : Enable event 10046 trace with level 12 using oradebug ( for 15-20 minute) Step 4 : Disable trace (once you are happy with trace size) Step 5 : Convert raw trace to TKPROF using various sort options like fchela, prsela, execpu Step 6 : Check TKPROF out file to find root cause of slow concurrent request

Step 1 : Check Request ID from Find Concurrent request screen (In my case Request ID is 2355)

Step 2 : Run below command to find SPID, provide concurrent request ID (2355 in my case) when prompted

SELECT a.request_id, d.sid, d.serial# ,d.osuser,d.process , c.SPID FROM apps.fnd_concurrent_requests a, apps.fnd_concurrent_processes b, v$process c, v$session d WHERE a.controlling_manager = b.concurrent_process_id AND c.pid = b.oracle_process_id AND b.session_id=d.audsid AND a.request_id = &Request_ID AND a.phase_code = ‘R’;

REQUEST_ID SID SERIAL# OSUSER PROCESS SPID —————- 2355 514 28 applmgr 17794 1633. .

Step 3.1 : Check and confirm SPID on Database Node oraclevis11i@onlineappsdba>ps-ef | grep 1633 ovis11i 1633 1 0 13:30:43 ? 0:03 oraclevis11i (LOCAL=NO)

Step 3.2 : Set OSPID (1633 in my case) for ORADEBUG SQL> oradebug setospid 1633 — Oracle pid: 68, Unix process pid: 1633, image: oraclevis11i@onlineappsdba —

Page 6: Concurrent Programme

Step 3.3 : Enable trace for 10046 event with level 12 SQL> oradebug event 10046 trace name context forever, level 12 Step 3.4 : Locate Trace file as SQL>oradebug tracefile_name

/oracle/apps/vis11idb/10.2.0/admin/vis11i_onlineappsdba/udump/vis11i_ora_1633.trc

Wait for 15-20 minutes

Step 4 : Disable trace SQL> oradebug event 10046 trace name context off Step 5: Create tkprof file like tkprof ‘/oracle/ apps/ vis11idb/ 10.2.0/ admin/ vis11i_onlineappsdba/ udump/ vis11i_ora_1633.trc’ ’/oracle/ apps/ vis11idb/ 10.2.0/ admin/ vis11i_onlineappsdba/ udump/ tkprof_1633.txt’ explain=apps/[apps_passwd] fchela …

Step 6 : Check TKPROF file to find root cause of slow concurrent requet

. References

• 39817.1 Interpreting Raw SQL_TRACE and DBMS_SUPPORT.START_TRACE output • 32951.1 Tkprof Interpretation • ORADEBUG event tracing from dba-oracle • dbaanswers.blogspot.com script for slow concurrent request

How to interpret TKPROF to find potential performance issues, coming soon

Troubleshooting Concurrent Managers

Pending - Normal, Standby, Schedules, Waiting Running - Normal, Paused, Resuming, Terminating Completed - Normal, Error, Warning, Cancelled, Terminated, Disabled Inactive - Disabled , On Hold, No Manager

A. Pending Standby - Phase Pending and Status Standby means Program to run request is incompatible with other program(s) currently running .

B. Inactive - No Manager

i) No manager is defined to run the request or ii) All managers are locked by run-alone requests or iii) Concurrent Manager Service is down or iv) No concurrent manager process because of workshift

Page 7: Concurrent Programme

To check Work Shift for any Concurrent Manager From System Administrator responsibility > Concurrent > Manager > Define > Work Shifts > Processes

For Description of other Concurrent Request Phase/Status click here

Concurrent Request Phase and Status

Phase Status Description

PENDING Normal Request is waiting for the next available manager.

Standby Program to run request is incompatible with other program(s) currently running.

Scheduled Request is scheduled to start at a future time or date.

Waiting A child request is waiting for its Parent request to mark it ready to run. For example, a request in a request set that runs sequentially must wait for a prior request to complete.

RUNNING Normal Request is running normally.

Paused Parent request pauses for all its child requests to finish running. For example, a request set pauses for all requests in the set to complete.

Resuming All requests submitted by the same parent request have completed running. The Parent request resumes running.

Terminating Request is terminated by choosing the Cancel Request button in Requests window.

COMPLETED Normal Request completed successfully.

Error Request failed to complete successfully.

Warning Request completed with warnings. For example, a request is generated successfully but fails to print.

Cancelled Pending or Inactive request is cancelled by choosing the Cancel Request button in the Requests window.

Terminated Request is terminated by choosing the Cancel Request button in the Requests window.

INACTIVE Disabled Program to run request is not enabled. Contact your system administrator.

On Hold Pending request is placed on hold by choosing the Hold Request button in the Requests window.

No Manager

No manager is defined to run the request. Check with your system administrator. A status of No Manager is also given when all managers are locked by run-alone requests.

Table 1 - 38. (Page 1 of 1)

Page 8: Concurrent Programme

A concurrent request has a life cycle consisting of the following phases: pending, running, completed, and inactive.

During each phase, a concurrent request has a specific condition or status. lists each phase/status combination and describes its meaning in relation to a request.

If a request is pending, you can determine when it will start by using the Concurrent Managers For the Request window from the Requests window to review the request’s position in the queues of current managers that can run that request.

The database tables that are affected by running the Purge Concurrent Request and/or Manager Data program are:

REQUEST, Age, 3, , , , , XXINV, XXINV_REMITOS_ARG, , , Y, Y

FND_CONCURRENT_REQUESTS This table contains a complete history of all concurrent requests.

Page 9: Concurrent Programme

FND_RUN_REQUESTS When a user submits a report set, this table stores information about the reports in the report set and the parameter values for each report.

FND_CONC_REQUEST_ARGUMENTS This table records arguments passed by the concurrent manager to each program it starts running.

FND_DUAL This table records when requests do not update database tables.

FND_CONCURRENT_PROCESSES This table records information about Oracle Applications and operating system processes.

FND_CONC_STAT_LIST This table collects runtime performance statistics for concurrent requests.

FND_CONC_STAT_SUMMARY This table contains the concurrent program performance statistics generated by the Purge Concurrent Request and/or Manager Data program. The Purge Concurrent Request and/or Manager Data program uses the data in FND_CONC_STAT_LIST to compute these statistics.

SQL Query to list running concurrent requests

col user_name format a20 word_wrapped

col ProgName format a25 word_wrapped

col requestId format 99999999

col StartDate format a20 word_Wrapped

col OS_PROCESS_ID format a6

col ETime format 99999999 word_Wrapped

col sid format 99999 word_Wrapped

set lines 200

Select sess.sid,sess.serial#, oracle_process_id OS_PROCESS_ID, fusr.description user_name ,

fcp.user_concurrent_program_name progName,

to_char(actual_Start_date,'DD-MON-YYYY HH24:mi:ss') StartDate,

request_id RequestId, (sysdate - actual_start_date)*24*60*60 ETime

from fnd_concurrent_requests fcr, fnd_concurrent_programs_tl fcp,

Page 10: Concurrent Programme

fnd_user fusr, v$session sess

where fcp.concurrent_program_id = fcr.concurrent_program_id

and fcr.program_application_id = fcp.application_id

and fcp.language = 'US'

and fcr.phase_code = 'R'

and fcr.status_code = 'R'

and fcr.requested_by = fusr.user_id

and fcr.oracle_session_id = sess.audsid (+)

order by 5 DESC

/

Useful Queries Related to Concurrent Requests in 11i Applications

The below query will return all the concurrent requests which are scheduled using any of the above methods: ========================================================== SELECT cr.request_id, DECODE (cp.user_concurrent_program_name, 'Report Set', 'Report Set:' cr.description, cp.user_concurrent_program_name ) NAME, argument_text, cr.resubmit_interval, NVL2 (cr.resubmit_interval, 'PERIODICALLY', NVL2 (cr.release_class_id, 'ON SPECIFIC DAYS', 'ONCE') ) schedule_type, DECODE (NVL2 (cr.resubmit_interval, 'PERIODICALLY', NVL2 (cr.release_class_id, 'ON SPECIFIC DAYS', 'ONCE') ), 'PERIODICALLY', 'EVERY ' cr.resubmit_interval ' ' cr.resubmit_interval_unit_code ' FROM ' cr.resubmit_interval_type_code ' OF PREV RUN', 'ONCE', 'AT :' TO_CHAR (cr.requested_start_date, 'DD-MON-RR HH24:MI'), 'EVERY: ' fcr.class_info ) schedule, fu.user_name, requested_start_date FROM apps.fnd_concurrent_programs_tl cp, apps.fnd_concurrent_requests cr, apps.fnd_user fu, apps.fnd_conc_release_classes fcr WHERE cp.application_id = cr.program_application_id AND cp.concurrent_program_id = cr.concurrent_program_id AND cr.requested_by = fu.user_id AND cr.phase_code = 'P' AND cr.requested_start_date > SYSDATE AND cp.LANGUAGE = 'US' AND fcr.release_class_id(+) = cr.release_class_id AND fcr.application_id(+) = cr.release_class_app_id; ========================================================== Note: The "SCHEDULE" column in the above query returns a string of zeros and ones for the requests which are scheduled on specific days of the month or week. Positions 1 through 31: Specific day of the month. Position 32: Last day of the month Positions 33 through 39: Sunday through Saturday Checking the duplicated schedules of the same program with the same arguments: The below query can be used to check the duplicated schedule of the same program with the same arguments. This can be used to alert the users to cancel these duplicated schedules. Note: This query will return even though the request was submitted using a different responsibility. ========================================================== SELECT request_id, NAME, argument_text, user_name FROM (SELECT cr.request_id, DECODE (cp.user_concurrent_program_name, 'Report Set', 'Report Set:' cr.description, cp.user_concurrent_program_name ) NAME, argument_text, fu.user_name FROM apps.fnd_concurrent_programs_tl cp, apps.fnd_concurrent_requests cr,

Page 11: Concurrent Programme

apps.fnd_user fu WHERE cp.application_id = cr.program_application_id AND cp.concurrent_program_id = cr.concurrent_program_id AND cr.requested_by = fu.user_id AND cr.phase_code = 'P' AND cr.requested_start_date > SYSDATE AND cp.LANGUAGE = 'US' AND fu.user_name NOT LIKE 'PPG%') t1 WHERE EXISTS ( SELECT 1 FROM (SELECT cr.request_id, DECODE (cp.user_concurrent_program_name, 'Report Set', 'Report Set:' cr.description, cp.user_concurrent_program_name ) NAME, argument_text, fu.user_name FROM apps.fnd_concurrent_programs_tl cp, apps.fnd_concurrent_requests cr, apps.fnd_user fu WHERE cp.application_id = cr.program_application_id AND cp.concurrent_program_id = cr.concurrent_program_id AND cr.requested_by = fu.user_id AND cr.phase_code = 'P' AND cr.requested_start_date > SYSDATE AND cp.LANGUAGE = 'US' AND fu.user_name NOT LIKE 'PPG%') t2 WHERE t1.NAME = t2.NAME AND t1.argument_text = t2.argument_text AND t1.user_name = t2.user_name GROUP BY NAME, argument_text, user_name HAVING COUNT (*) > 1) ORDER BY user_name, NAME ========================================================== Average pending time per request: This is a very useful query to check the performance of the concurrent managers. Average pending time for a request is calculated like below: ("Highest of Requested_start_date or Date_submitted" - Actual_start_date ) / Total requests A Request can be in Pending state for variety of reasons like conflict with other requests, improperly tuned managers (sleep seconds / cache size / number of managers etc) We can schedule this script to gather data regularly for historical analysis as we normally purge the concurrent requests regularly. ========================================================== SELECT TO_CHAR (actual_start_date, 'DD-MON-YYYY') DAY, concurrent_queue_name, (SUM ( ( actual_start_date - (CASE WHEN requested_start_date > request_date THEN requested_start_date ELSE request_date END ) ) * 24 * 60 * 60 ) ) / COUNT (*) "Wait_Time_per_Req_in_Secs" FROM apps.fnd_concurrent_requests cr, apps.fnd_concurrent_processes fcp, apps.fnd_concurrent_queues fcq WHERE cr.phase_code = 'C' AND cr.actual_start_date IS NOT NULL AND cr.requested_start_date IS NOT NULL AND cr.controlling_manager = fcp.concurrent_process_id AND fcp.queue_application_id = fcq.application_id AND fcp.concurrent_queue_id = fcq.concurrent_queue_id GROUP BY TO_CHAR (actual_start_date, 'DD-MON-YYYY'), concurrent_queue_name ORDER BY 2 ========================================================== Note: Depending on the purging schedules some requests might miss if the corresponding data in fnd_concurrent_processes is purged. Checking which manager is going to execute a program: The below query identifies the manager which will be executing a given program. This query is based on the specialization rules set for the managers. ========================================================== SELECT user_concurrent_program_name, user_concurrent_queue_name FROM apps.fnd_concurrent_programs_tl cp, apps.fnd_concurrent_queue_content cqc, apps.fnd_concurrent_queues_tl cq WHERE cqc.type_application_id(+) = cp.application_id AND cqc.type_id(+) = cp.concurrent_program_id AND cqc.type_code(+) = 'P' AND cqc.include_flag(+) = 'I' AND cp.LANGUAGE = 'US' AND cp.user_concurrent_program_name = '&USER_CONCURRENT_PROGRAM_NAME' AND NVL (cqc.concurrent_queue_id, 0) = cq.concurrent_queue_id AND NVL (cqc.queue_application_id, 0) = cq.application_id AND cq.LANGUAGE = 'US' ========================================================== To see all the pending / Running requests per each manager wise: ========================================================== SELECT request_id, phase_code, status_code, user_name, user_concurrent_queue_name FROM apps.fnd_concurrent_worker_requests cwr, apps.fnd_concurrent_queues_tl cq, apps.fnd_user fu WHERE (cwr.phase_code = 'P' OR cwr.phase_code = 'R') AND cwr.hold_flag != 'Y' AND cwr.requested_start_date <= SYSDATE AND cwr.concurrent_queue_id = cq.concurrent_queue_id AND cwr.queue_application_id = cq.application_id AND cq.LANGUAGE = 'US' AND cwr.requested_by = fu.user_id ORDER BY 5 ==========================================================

Page 12: Concurrent Programme

Note: The same information can be seen in Administer Concurrent Manager form for each manager. Checking the incompatibilities between the programs: The below query can be used to find all incompatibilities in an application instance. ========================================================== SELECT a2.application_name, a1.user_concurrent_program_name, DECODE (running_type, 'P', 'Program', 'S', 'Request set', 'UNKNOWN' ) "Type", b2.application_name "Incompatible App", b1.user_concurrent_program_name "Incompatible_Prog", DECODE (to_run_type, 'P', 'Program', 'S', 'Request set', 'UNKNOWN' ) incompatible_type FROM apps.fnd_concurrent_program_serial cps, apps.fnd_concurrent_programs_tl a1, apps.fnd_concurrent_programs_tl b1, apps.fnd_application_tl a2, apps.fnd_application_tl b2 WHERE a1.application_id = cps.running_application_id AND a1.concurrent_program_id = cps.running_concurrent_program_id AND a2.application_id = cps.running_application_id AND b1.application_id = cps.to_run_application_id AND b1.concurrent_program_id = cps.to_run_concurrent_program_id AND b2.application_id = cps.to_run_application_id AND a1.language = 'US' AND a2.language = 'US' AND b1.language = 'US' AND b2.language = 'US'

The table apps.fnd_concurrent_program_serial has the information about incompatibilities

Apps User Connection Details

) 1st sql - OA Framework screens (login screen, iSupport etc...) 2) 2nd sql - Responsibility connection details (for Java Applet) 3) 3rd sql - Forms connection details select usr.user_name "Apps Username" ,i.first_connect "First Connect Date" ,ses.sid ,ses.serial# ,ses.module ,v.spid "Oracle Server Process" ,ses.process "Application Server Process" ,rsp.responsibility_name "Responsibility Name" ,null "Responsibility Start Time" ,fuc.function_name "Function Name" ,i.function_type "Function Type" ,i.last_connect "Function Start Time" from icx_sessions i ,fnd_logins l ,fnd_appl_sessions a ,fnd_user usr ,fnd_responsibility_tl rsp ,fnd_form_functions fuc ,gv$process v ,gv$session ses where i.disabled_flag = 'N' and i.login_id = l.login_id and l.end_time is null and i.user_id = usr.user_id and l.login_id = a.login_id and a.audsid = ses.audsid and l.pid = v.pid

Page 13: Concurrent Programme

and l.serial# = v.serial# and i.responsibility_application_id = rsp.application_id(+) and i.responsibility_id = rsp.responsibility_id(+) and i.function_id = fuc.function_id(+) and i.responsibility_id not in (select t1.responsibility_id from fnd_login_responsibilities t1 where t1.login_id = l.login_id) and rsp.language(+) = 'US' and usr.user_name like '&APPS_USER_NAME' and ses.sid like '&SID' union select usr.user_name ,l.start_time ,ses.sid ,ses.serial# ,ses.module ,v.spid ,ses.process ,rsp.responsibility_name ,r.start_time ,null ,null ,null form_start_time from fnd_logins l ,fnd_login_responsibilities r ,fnd_user usr ,fnd_responsibility_tl rsp ,gv$process v ,gv$session ses where l.end_time is null and l.user_id = usr.user_id and l.pid = v.pid and l.serial# = v.serial# and v.addr = ses.paddr and l.login_id = r.login_id(+) and r.end_time is null and r.responsibility_id = rsp.responsibility_id(+) and r.resp_appl_id = rsp.application_id(+) and rsp.language(+) = 'US' and r.audsid = ses.audsid and usr.user_name like '&APPS_USER_NAME' and ses.sid like '&SID' union select usr.user_name ,l.start_time ,ses.sid ,ses.serial# ,ses.module ,v.spid ,ses.process ,null ,null ,frm.user_form_name ,ff.type ,f.start_time from fnd_logins l

Page 14: Concurrent Programme

,fnd_login_resp_forms f ,fnd_user usr ,fnd_form_tl frm ,fnd_form_functions ff ,gv$process v ,gv$session ses where l.end_time is null and l.user_id = usr.user_id and l.pid = v.pid and l.serial# = v.serial# and v.addr = ses.paddr and l.login_id = f.login_id(+) and f.end_time is null and f.form_id = frm.form_id(+) and f.form_appl_id = frm.application_id(+) and frm.language(+) = 'US' and f.audsid = ses.audsid and ff.form_id = frm.form_id and usr.user_name like '&APPS_USER_NAME' and ses.sid like '&SID';

Which FND_USER is locking that table SELECT c.owner ,c.object_name ,c.object_type ,fu.user_name locking_fnd_user_name ,fl.start_time locking_fnd_user_login_time ,vs.module ,vs.machine ,vs.osuser ,vlocked.oracle_username ,vs.sid ,vp.pid ,vp.spid AS os_process ,vs.serial# ,vs.status ,vs.saddr ,vs.audsid ,vs.process FROM fnd_logins fl ,fnd_user fu ,v$locked_object vlocked ,v$process vp ,v$session vs ,dba_objects c WHERE vs.sid = vlocked.session_id AND vlocked.object_id = c.object_id AND vs.paddr = vp.addr AND vp.spid = fl.process_spid(+) AND vp.pid = fl.pid(+) AND fl.user_id = fu.user_id(+) AND c.object_name LIKE '%' || upper('&tab_name_leaveblank4all') || '%' AND nvl(vs.status,'XX') != 'KILLED';