1.併發程序定義界面,勾選啓用跟蹤選項;
2.提交該併發請求;
3.使用請求號查詢生成的trace文件路徑,生成的文件在數據庫服務器上,需要用數據庫服務器賬號登錄;
路徑使用以下sql查詢,對應trace1和trace2字段,我所在的項目DEV環境的trace取自trace2:
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' "trace_1", 'Trace Name: ' || dest.value || '/' || dbnm.value || '_ora_' || oracle_process_id || '_SYSADMIN_CR' || req.request_id || '.trc' "trace_2", --'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 apps.fnd_concurrent_requests req, v$session ses, v$process proc, v$parameter dest, v$parameter dbnm, apps.fnd_concurrent_programs_vl prog, apps.fnd_executables execname WHERE req.request_id = 12560569 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; |
4.將trace文件下載到本地,在trace文件本地路徑上,shif+右鍵,打開命令窗口
使用tkprof命令解析trc文件爲更易讀懂的txt文件。
tkprof XXX.trc output= XXX.txt |
當然也可以在trc文件和txt文件名前面加上路徑
tkprof f:\oracle\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_1160.trc output=c:\aa.txt |
5.打開生成的txt文件,建議使用EditPlus打開,更好讀一些;
trace文件主要的參數:
********************************************************************************
count = number of times OCI procedure wasexecuted
cpu = cpu time in secondsexecuting ,cpu執行使用的時間
elapsed = elapsed time in secondsexecuting,整個sql執行的時間,包括cpu時間
disk = number of physical reads of buffers fromdisk
query = number of buffers gotten for consistentread
current = number of buffers gotten in current mode(usually for update)
rows = number of rowsprocessed by the fetch or execute call,返回的行數
********************************************************************************
查找txt文件裏面的call count cpu elapsed disk query current rows參數,
主要查找cpu和elapsed時間最大的sql,查看其執行計劃並對其進行分析優化;