发博文
望向白陀山

ok2ok.blog.chinaunix.net

没事的时候我会望向白陀山,我清楚的记的曾经有个女人在那里等我,其实,醉生梦死不过是她跟我开的一个玩笑,你越是想知道自己是否忘记,你反而记的越清楚。当你已经不能再拥有,你唯一可以做的,就是令自己不要遗忘   
个人资料
  • 博客访问:269850
  • 博文数量:70
  • 博客积分:6055
  • 博客等级:准将
  • 注册时间:2006-05-17 02:15:42
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
分类: Oracle


在SQL*PLUS里,可以通过set timing on显示执行SQL操作的时间。如:
SQL> set timing on
SQL> select count(*) from dba_objects;
COUNT(*)
----------
15923
Elapsed: 00:00:01.02

有人问到这个时间的单位:
以上数字输出分别是:Hours:Minutes:Seconds.Milliseconds
Milliseconds 即 1 / 1000 秒。
注意有的版本,Seconds 秒位进位到分钟未减掉60,是Bug
 
使用oracle的10046事件跟踪SQL语句
我们在分析应用程序性能问题的时候,更多地需要关注其中SQL语句的执行情况,因为通常应用程序的性能瓶颈会在数据库这边,因此数据库的sql语句是我们优化的重点。利用Oracle的10046事件,可以跟踪应用程序所执行的SQL语句,并且得到其解析次数.执行次数,CPU使用时间等信息。这对我们分析、定位数据库性能问题是非常有用的。
具体的方法如下:
1、首先获得spid、sid、serial#,machine为连接oracle的机器名
SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr =
b.addr and a.machine='SYS_F85';
SPID                SID    SERIAL#   MACHINE
----------------------------------------------------------------
24722                15        196 SYS_F85

2、利用10046事件开始跟踪
SQL>execute sys.dbms_system.set_ev(15,196,10046,1,'');
PL/SQL procedure successfully completed.
参数说明:
15:SID
196:SERIAL#
注意这里必须以sysdba登录。

3、在应用程序中执行对数据库的操作,比如性能较差的一些查询、插入、删除操作等。
4、关闭事件结束跟踪
SQL>execute sys.dbms_system.set_ev(15,196,10046,0,'');
PL/SQL procedure successfully completed.
5、获得产生的跟踪文件所在的目录
SQL> select value from v$parameter where name = 'user_dump_dest';
VALUE
--------------------------------------------------------------------------------
/oracle/admin/ora9i/udump
转到该目录下可以看到生成了一个ora9i_ora_24722.trc文件,此处的24722即SPID的值。
6、在命令行下执行oracle的tkprof命令,将ora9i_ora_24722.trc转化为文本文件。如:
$ tkprof  ora9i_ora_24722.trc ora9i_ora_24722.sql
此时在ora9i_ora_24722.sql文件中,就可以看到刚才执行应用程序时所执行的sql语句的执行次数、
CPU使用时间等数据。
 

亲,您还没有登录,请[登录][注册]后再进行评论