考生通行证 注册|考生通|忘记密码 使用帮助·加入收藏

 首页 > 计算机 > 正文
诊断数据库系统性能Oracle中跟踪sql语句
发布时间:2008-09-27 10:33:59   主站: www.kaosheng.com

  在诊断数据库系统性能的过程中,总会涉及到跟踪效率低下的sql语句,Oracle数据库10g包含一种新的实用程序trcsess,它可以让您基于会话ID或模块名称之类的条件,有选择地从大量跟踪文件中抽取出跟踪数据,并将它们保存到一个文件中。该实用程序在共享服务器配置中特别有用,因为调度程序可能把每一个用户请求传递给不同的共享服务器进程,从而为任何给定的会话产生多个跟踪文件。与通过大量跟踪文件发掘信息不同,Oracle数据库10g的trcsess可以让您获得关于单一用户会话的整合后的跟踪信息。现在就如何跟踪sql语句来做一个简单的总结。权做抛砖引玉之用。
  如果我们可以修改应用系统的源代码,则可以直接在程序中加入如下的语句:
  1)alter session set timed_statistics=true; /*适用于Oracle 8.1.7以后的版本*/
  2)alter session set max_dump_file_size=unlimited ; /*适用于Oracle 9i以后的版本*/
  3)alter session set tracefile_identifier=’POX20031031a’; /*适用于Oracle 9i以后的版本*/
  4)alter session set events ’10046 trace name context forever, level 8’;
  /*在这里编写应用程序的代码*/
  5)alter session set events ’10046 trace name context off’;
  在上述语句中,语句1)是把该会话的时间统计打开,该参数默认为false.在Oracle 9i之前的版本中,不能在会话级设置该参数,只能修改初始化文件然后重新启动数据库,这样将在实例级打开时间统计。
  语句2)是把跟踪文件的大小设置成操作系统所允许的最大尺寸,这样可以防止跟踪文件在完成所需要的跟踪之前被填充满,此外需要注意的是确保存放跟踪文件的目录要有足够的空间,否则将会收到“文件系统已满”错误。
  语句3)的作用是使生成的跟踪文件名称中包含’POX20031031a’字符串,这样可以使你很容易的找到所需的跟踪文件,该参数在Oracle 9i之后可用。
  语句4)和语句5)的作用分别是打开和关闭跟sql跟踪,你可以在这两个语句之间写入应用程序的代码,这些代码的执行情况都将被跟踪。需要注意的是语句4)的level关键字,它用来指定跟踪级别,一共有0,1,2,4,8,12六个级别可以设置,0相当于关闭跟踪;1是输出一般的跟踪信息,不包括绑定变量和等待信息;2和1相同;4是在级别1的基础上增加绑定变量信息;8是在级别1的基础上增加等待信息;级别12是输出包含级别1,4,8的所有信息。

  如果应用程序的代码无法修改或者是不想去修改,则可以在其他会话中打开对特定会话的跟踪,方法如下:
  1)sys.dbms_system.set_bool_param_in_session(:sid, :serial,’timed_statistics’, true);
  2)sys.dbms_system.set_int_param_in_session( :sid, :serial,’max_dump_file_size’, 2147483647);
  打开和关闭跟踪的第一种方法(oracle推荐):
  3.1)sys.dbms_support.start_trace_in_session(:sid, :serial,waits=>true, binds=>false);
  /* 在此期间运行要跟踪的应用程序*/
  4.1)sys.dbms_support.stop_trace_in_session(:sid, :serial);
  打开和关闭跟踪的第二种方法:
  3.2)sys.dbms_system.set_ev(:sid, :serial, 10046, 8, ’’);
  /*在此期间运行要跟踪的应用程序*/
  3.2)sys.dbms_system.set_ev(:sid, :serial, 10046, 0, ’’);
  以上语句中的:sid和:serial分别代表所要跟踪的会话的ID和序列号,这些信息可以从V$SESSION视图的SID和SERIAL#列获得。打开关闭跟踪中第一种方法的好处是你不用自己写10046这个事件号,这样可以减少错误,但是dbms_support程序包在你的数据库中可能会不存在,这样就只有用第二种方法了。
  到现在为止,我们已经生成了所需要的跟踪文件,然后我们需要找到该文件来进行分析。跟踪文件的存放位置只有两种可能,Oracle参数USER_DUMP_DEST 或者BACKGROUND_DUMP_DEST指定的目录;文件名称根据不同的平台会有所不同,但是在文件名中都会包含会话所对应的操作系统进程(线程)号,也就是V$PROCESS的SPID列(V$PROCESS.SPID) ,该信息可以通过 v$process.addr和v$session.paddr做表连接查询得到。例如:
  select spid from v$process p,
  v$session s where p.addr=s.paddr and s.sid=:sid and s.serial#=:serial.
  青年人网提示:本文只对Oracle在使用专用服务器进程(Dedicated Server)模式做了总结,至于的共享服务器(Shared Server)模式和在应用级使用连接池的情况下,收集sql跟踪信息的方法会比较复杂。

 
  现在有 人对本文发表评论 查看所有评论 用户名: 密码: 匿名



 
 
资料中心
推荐学校 推荐课程
wqer
沈阳橙色学校
北文学校
新动力教育
北京中大英才教育咨询中心
上海郎恩进修学校
环球友好国际教育
北京联合大学广告学院
上海荐才职业技能培训中心
上海恩波学校
知识交流  
试题下载  
在Oracle9i中,如何监...
拥有归档日志如何恢复一个丢失...
批量删除Oracle数据库的...
批量删除Oracle数据库的...
分析Oracle数据库日志文...
分析Oracle数据库日志文...
sql.bsq与数据库的创建
精彩资讯  
中国首台“超级计算机”诞生 紧随美国
黑龙江省审计厅加大计算机审计中级人才培养
工业控制计算机行业座谈 积极应对金融危机
新年好彩头 买曙光PHPC100计算机赠送G...
宏正推出首款笔电型USB KVM多计算机切换...
廖了以赴桃园机场了解计算机修复后通关情况
硬盘巨无霸希捷急需瘦身
计算机病毒预报
中国诞生世界十强百万亿次超级计算机
物竞天择适者生存 找寻IT产业耐寒基因
about us | 网站简介 | 广告服务 | 联系我们 | 版权&免费声明 | 网站地图 | 合作加盟 | 申请友情链接 | 网站帮助 | 友情联盟 | 意见留言
版权所有:中国考生网    互联网证书:辽ICP证020145号