You are on page 1of 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 Need to get Dead Locks. Holding Session and Waiting Session. 400741.1

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.

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

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, Tra ce 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_na me , Status : ||decode(phase_code, R', Running ) || '||decode(status_code, R', Normal ), SID Serial: ||ses.sid|| ,'|| ses.serial#, Module : ||ses.module fro m fnd_concurrent_requests req, v$session ses, v$process proc, v$parameter dest, v$parameter dbnm, fn d_concurrent_programs_vl prog, fnd_executables execname where req.request_id = &request and req.o racle_process_id=proc.spid(+) and proc.addr = ses.paddr(+) and dest.name= user_dump_dest and db nm.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.execut able_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 (This query displays Process Id) SELECT * FROM V$PARAMETER WHERE NAME='user_dump_dest' Ls ltr *oracle_processid*.trc request_id='2768335'

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 UTF8 Takes US7ASCII Takes 1 byte... instchkc.txt and instchkc.out

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

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 Step Step Step Step Step

1 2 3 4 5 6

: : : : : :

Check Concurrent Request ID of long running concurrent request from front end Find SID, SERIAL# and SPID by running SQL (given below) Enable event 10046 trace with level 12 using oradebug ( for 15-20 minute) Disable trace (once you are happy with trace size) Convert raw trace to TKPROF using various sort options like fchela, prsela, execpu 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 2355 514 . SID SERIAL# OSUSER 28 applmgr PROCESS 17794 SPID

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

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

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 PENDING Status Normal Standby Scheduled Waiting Description Request is waiting for the next available manager. Program to run request is incompatible with other program(s) currently running. Request is scheduled to start at a future time or date. 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. Request is running normally. 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. All requests submitted by the same parent request have completed running. The Parent request resumes running.

RUNNING

Normal Paused Resuming

Terminating Request is terminated by choosing the Cancel Request button in Requests window. COMPLETED Normal Error Warning Cancelled Terminated INACTIVE Disabled On Hold No Manager Table 1 - 38. (Page 1 of 1) Request completed successfully. Request failed to complete successfully. Request completed with warnings. For example, a request is generated successfully but fails to print. Pending or Inactive request is cancelled by choosing the Cancel Request button in the Requests window. Request is terminated by choosing the Cancel Request button in the Requests window. Program to run request is not enabled. Contact your system administrator. Pending request is placed on hold by choosing the Hold Request button in the Requests window. 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.

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.

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,

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,

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 ==========================================================

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 De tails

) 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

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

,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';

You might also like