使用oracle的10046事件跟踪SQL语句
原文地址:http://www.blogjava.net/xingcyx/archive/2007/01/09/92638.html
使用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使用时间等数据。
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
非常少的情况下,我们会感觉我们的库”Hang”了,加了隐号的意思是说有时真的是Hang了,有一些则不是,是由于性能的问题引起的。我遇到过几次Hang的情况,结合着网上一些文章,把可能的原因、当时我们应该做的一些操作进行了如下的总结,不对的地方大家可以发Mail给我:crane@storren.net 。
一、数据库Hang时可能的现象
......
-- 查询某表的数据字典
SELECT A.TABLE_NAME AS "表名",A.COLUMN_NAME AS "字段名",
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as "字段类型1",A.DATA_TYPE AS "字段 ......
一、 oracle基础知识
a、 CRUD操作 create read update delete
b、 数据库对象
c、 数据库设计
d、 数据库结构体系优化(DBA)
oracle中存在四张练习表 emp dept slmgad bonus 这四张表,还有一张dual表练习表表中只有一个字段一个数 ......