1. 生成跟踪文件
对并发程序启用跟踪功能
选择“启用跟踪”选项
注意: 在并发程序中选择启动跟踪选项提供的是事件10046,级别8的跟踪。所以即使在提交请求的时候选择了绑定变量和等待事件,跟踪依然会被重新设置成级别8,所以在跟踪文件中不会有绑定变量。
启用跟踪
- 职责:系统管理员
- 浏览器: 配置文件> 系统
- 查询配置文件选项:Concurrent: Allow Debugging
- 选择 “是“
提交启用跟踪的并发请求
- 登录进含有该并发请求的职责
- 在提交请求界面点击调试选项(B)
- 选择 SQL跟踪
2.找到跟踪文件的文件名
运行下面的一段SQL代码来找到并发请求的原始跟踪文件的文件名以及存放的目录。运行时会弹出选项让用户输入请求的ID。
prompt
accept request prompt 'Please enter the concurrent request id for the appropriate concurrent program:'
prompt
column traceid format a8
column tracename format a80
column user_concurrent_program_name format a40
column execname format a15
column enable_trace format a12
set lines 80
set pages 22
set head off
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_application_id = execname.application_id
and prog.executable_id=execname.executable_id;
查看请求运行的时间:
SELECT request_id, TO_CHAR( request_date, 'DD-MON-YYYY HH24:MI:SS' )
request_date, TO_CHAR( requested_start_date,'DD-MON-YYYY HH24:MI:SS' )
requested_start_date, TO_CHAR( actual_start_date, 'DD-MON-YYYY HH24:MI:SS' )
actual_start_date, TO_CHAR( actual_completion_date, 'DD-MON-YYYY HH24:MI:SS' )
actual_completion_date, TO_CHAR( sysdate, 'DD-MON-YYYY HH24:MI:SS' )
current_date, ROUND( ( NVL( actual_completion_date, sysdate ) - actual_start_date ) * 24, 2 ) duration
FROM fnd_concurrent_requests
WHERE request_id = TO_NUMBER('&p_request_id');
你也可以根据文档Note:187504.1 bde_request.sql Process and Session info for one Concurrent Request(11.5)和请求的ID来生成完整的报告
3. TKPROF 跟踪文件
当你得到了原始跟踪文件的时候,你需要通过TKPROF来转换它的格式。
$ tkprof raw_trace_file.trc output_file explain=apps/apps sort=(exeela,fchela) sys=no
$ tkprof PROD1_ora_122629_DEHETU.trc PROD1_ora_122629_DEHETU.txt explain=apps/apps sys=no sort=exeela,prsela,fchela
Where:
raw_trace_file.trc: Name of trace file
output_file: tkprof out file
explain: This option provides the explain plan for the sql
statements
sort: This provides the sort criteria in which all sql
statements will be sorted. This will bring the bad sql at
the top of the outputfile.
sys=no: Disables sql statements issued by user SYS
另一个例子:下列命令会生成一个按照运行时间的长短进行排序,并且结果只含有运行时间最长的10个查询语句的跟踪文件。
$ tkprof <filename.trc> <output_filename> sys=no explain=apps/<password> sort='(prsela,exeela,fchela)' print=10
注意:在11g之前的数据库版本中,使用下列语句查询原始跟踪文件保存的目录:
select value from v$parameter where name = 'user_dump_dest';
在11g数据库中,使用下列语句:
select value from v$diag_info where name = 'Diag Trace';
4. 基于fnd_log_messages之上的调试
如果你需要做更多的调试从而得到更详细的错误信息,请让客户执行下列的步骤
1) 登录进系统管理员职责并设定下列系统配置文件选项:
FND: Debug Log Enabled - Yes
FND: Debug Log Level - Statement
FND: Debug Log Module - %
FND: Message Level Threshold to low level
[ 以上配置请设置在用户层上 ] 2) 运行下列查询语句:
SELECT MAX(log_sequence) FROM fnd_log_messages;
得到最大的日志序列号,也就是在第五步中使用的log_seq1 3) 通过第一步中设置配置文件的用户来重现问题。
4) 运行下列查询语句:
SELECT MAX(log_sequence) FROM fnd_log_messages;
得到最大的日志序列号,也就是在第五步中使用的log_seq2。 5) 运行下列语句得到日志信息:
SELECT LOG_SEQUENCE, MESSAGE_TEXT, USER_ID FROM fnd_log_messages WHERE
log_sequence > log_seq1-1 and log_sequence < log_seq2+1 ;
NOTE:967966.1 – How to find the Trace file generated for a concurrent program?
NOTE:791049.1 – R12 SLA/FAH: How to Improve Performance in Subledger Accounting & Financials Accounting Hub
NOTE:421245.1 – E-Business Suite Diagnostics References for R12
NOTE:187504.1 – Concurrent Processing – bde_request.sql – Process and Session info for one Concurrent Request (11.5)
NOTE:1536264.1 – 如何跟踪并发请求并生成TKPROF文件
NOTE:1674024.1 – Oracle E-Business SQL Trace and TKPROF Guide
最新评论
这个牛
放下欲望,男人从来不醉,充分且必要
勇气、责任、自信、创新,为天下先!
软件即数据,软件即服务,软件即管理,软件就是对人类各种社会活动的仿真和记录。软件很重要,但软件不可能凌驾于业务之上,尤其不可能高人一等。