专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » oracle进程:教你如何收集Oracle进程中SQL跟踪信息 »正文

oracle进程:教你如何收集Oracle进程中SQL跟踪信息

来源: 发布时间:星期四, 2009年2月5日 浏览:1次 评论:0
="t18"> 在诊断数据库系统性能过程中总会涉及到跟踪效率低下SQL语句现在就如何跟踪SQL语句来做个简单整理总结 假如我们可以修改应用系统源代码则可以直接在中加入如下语句: 1)alter session timed_statistics=true;
/*适用于Oracle 7.3以后版本*/ 2)alter session max_dump_file_size=unlimited ;
/*适用于Oracle 7.3以后版本*/ 3)alter session tracefile_identier='POX20031031a';
/*适用于Oracle 8.1.7以后版本*/ 4)alter session events '10046 trace name context forever level 8'; /*在这里编写应用代码*/ 小虫网络技术http://www.chinaccna.com 5)alter session events '10046 trace name context off';
在上述语句中语句1)是把该会话时间统计打开该参数默认为false.在Oracle 7.3的前版本中不能在会话级设置该参数只能修改化文件然后重新启动数据库这样将在例子级打开时间统计 语句2)是把跟踪文件大小设置成操作系统所答应最大尺寸这样可以防止跟踪文件在完成所需要跟踪的前被填布满此外需要注重是确保存放跟踪文件目录要有足够空间否则将会收到“文件系统已满” 语句3)作用是使生成跟踪文件名称中包含'POX20031031a'这样可以使你很轻易找到所需跟踪文件该参数在Oracle 8.1.7的后可用 语句4)和语句5)作用分别是打开和关闭跟sql跟踪你可以在这两个语句的间写入应用代码这些代码执行情况都将被跟踪需要注重是语句4)level要害字它用来指定跟踪级别共有0124812 6个级别可以设置0相当于关闭跟踪;1是输出跟踪信息不包括绑定变量和等待信息;2和1相同;4是在级别1基础上增加绑定变量信息;8是在级别1基础上增加等待信息;级别12是输出包含级别148所有信息 假如应用代码无法修改或者是不想去修改则可以在其他会话中打开对特定会话跟踪思路方法如下:
1)sys.dbms_system._bool_param_in_session (:sid :serial'timed_statistics' true); 2)sys.dbms_system.__param_in_session ( :sid :serial'max_dump_file_size' 2147483647);
打开和关闭跟踪种思路方法(Oracle推荐):
3.1)sys.dbms_support.start_trace_in_session (:sid :serialwaits=>true binds=>false); /* 在此期间运行要跟踪应用*/
4.1)sys.dbms_support.stop_trace_in_session (:sid :serial);
打开和关闭跟踪第 2种思路方法:
3.2)sys.dbms_system._ev (:sid :serial 10046 8 '');
/*在此期间运行要跟踪应用*/
3.2)sys.dbms_system._ev (:sid :serial 10046 0 '');
以上语句中:sid和:serial分别代表所要跟踪会话ID和序列号这些信息可以从V$SESSION视图SID和SERIAL#列获得打开关闭跟踪中第种思路方法好处是你不用自己写10046这个事件号这样可以减少但是dbms_support包在你数据库中可能会不存在这样就只有用第 2种思路方法了 到现在为止我们已经生成了所需要跟踪文件然后我们需要找到该文件来进行分析跟踪文件存放位置只有两种可能Oracle参数USER_DUMP_DEST 或者BACKGROUND_DUMP_DEST指定目录;文件名称根据区别平台会有所区别但是在文件名中都会包含会话所对应操作系统进程(线程)号也就是V$PROCESSSPID列(V$PROCESS.SPID) 该信息可以通过 v$process.addr和v$session.paddr做表连接查询得到例如:select spid from v$process pv$session s where p.addr=s.paddr and s.sid=:sid and s.serial#=:serial.

本文只对Oracle在使用专用服务器进程(Dedicated Server)模式做了整理总结至于共享服务器(Shared Server)模式和在应用级使用连接池情况下收集SQL跟踪信息思路方法会比较复杂希望有相关经验高手来整理总结

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: