EBS併發請求生成trace及分析

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,查看其執行計劃並對其進行分析優化;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章