EBS获取并发程序Trace File
2016-01-13 10:00
218 查看
http://blog.itpub.net/16832682/viewspace-1249765/
最近因为项目上出现了PL/SQL性能的问题,因此需要对已经开发好的并发程序进行调优的工作。调优有个很重要的步骤就是获取并发程序的trace file,从而才能知道是哪一段SQL出现了问题。
下面就针对如何获取并发程序的trace file做个归纳:
1.在并发程序注册页面启动跟踪功能;
2.提交并发,待并发跑完之后获取trace 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 || '_ANONYMOUS.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_ID
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
在sql执行完获取Trace Name列的值,进入对应目录下:
3.利用tkprof文件解析trc文件:
tkprof erpprd_ora_10481_2510.trc /tmp/2510.trc
4.用Filezilla等FTP工具登陆到对应的目录下,并将生成的tkp文件down到本地
5.用记事本或者Notepad++等文档编辑工具打开下载下来的tkp文件:
最后的事情,那就是一句句的查看sql,看具体哪一段sql消耗比较大。
最近因为项目上出现了PL/SQL性能的问题,因此需要对已经开发好的并发程序进行调优的工作。调优有个很重要的步骤就是获取并发程序的trace file,从而才能知道是哪一段SQL出现了问题。
下面就针对如何获取并发程序的trace file做个归纳:
1.在并发程序注册页面启动跟踪功能;
2.提交并发,待并发跑完之后获取trace 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 || '_ANONYMOUS.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_ID
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
在sql执行完获取Trace Name列的值,进入对应目录下:
3.利用tkprof文件解析trc文件:
tkprof erpprd_ora_10481_2510.trc /tmp/2510.trc
4.用Filezilla等FTP工具登陆到对应的目录下,并将生成的tkp文件down到本地
5.用记事本或者Notepad++等文档编辑工具打开下载下来的tkp文件:
最后的事情,那就是一句句的查看sql,看具体哪一段sql消耗比较大。
相关文章推荐
- 写给IOS开发工程师的网页前端入门笔记
- 【React Native开发】React Native应用设备运行(Running)以及调试(Debugging)(3)
- Controlling course creation rights
- java面试一二三
- 5.Error running All Tests: Gradle project sync failed. Please fix your project and try again. 怎样解决?
- 自动备份mysql 数据库的方法
- 1G 内存如何优化mysql
- 在VS2010中创建和调用动态链接库和静态链接库
- 怎么招聘程序员
- java 线程
- 【剑指offer】5.2时间效率——面试题29:数组中出现次数超过一半的数字
- 【剑指offer】5.2时间效率——面试题30:最小的k个数
- Unity3D-深入剖析NGUI的游戏UI架构
- uniqid,md5,microtime
- android requestLayout的流程介绍
- 精讲哈夫曼压缩算法
- 一些js的用法
- 如何应对高并发 —— 动态网站静态化
- 快速Android开发系列网络篇之Retrofit
- Android中BroadCastReceiver详解