search 2013 adfgs
作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明
链接:http://isky000.com/software/oracle-web_trace%e6%94%b9%e9%80%a0 | del.icio.us | Twitter it

最近着手开发Team里面的一个Web_Trace系统,主要功能就是让公司里面开发“应用”的工程师们通过Web系统来监控自己的应用程序中连接到Oracle上执行的Sql的执行情况,以方便查找自己程序中sql方面的性能瓶颈。

系统主要功能如下: 通过连接到Oracle的中的session信息来进行标识。当开发人员需要Trace自己的应用程序中的sql的时候,只需要通过浏览器访问Web_Trace页面,选中自己连接的Session然后标记之,同时可以设定跟踪的Level,系统就会通知Oracle对标记的几个连接Session所进行的操作进行跟踪并Trace,应用程序执行结束后开发者就可以浏览刚才自己所跟踪的系统中Sql执行情况的原始Trace文件和tkprof格式化后的Trace文件。 当开发人员需要对自己的应用系统进行分功能模块的跟踪时,在跟踪过程中还可以通过Web_Trace系统进行标记来通知Oracle将跟踪文件进行按模块分割Trace文件,以方便分开查阅不同模块的执行情况。

同时为了解决当用户应用程序通过连接池连接数据库的时候出现一个应用有多个连接的情况,系统提供了可以一次跟踪多个连接Session的功能,同时对多个连接Session产生的Trace文件进行拼接,产生一个Trace文件,使开发人员不会漏掉任何一个Sql操作。同样在借宿跟踪后提供原始Trace文件和tkprof文件的在线浏览或者下载分析,当然如果想要没有合并的Trace文件的话系统也是会提供的。

其实系统的原理很简单,由最基本的Jsp+Servlet+Java Bean开发。首先通过Oracle的V$session和v$process中的信息将系统的连接到Oracle的session展示出来,用户想要跟踪里面的某一个或几个session的时候就对其进行标记,然后头通过sys.dbms_system包的set_ev()函数来通知Oracle对这几个session的sql执行情况进行Trace,结束的时候再通过跟踪的session的的信息将oracle产生的原始的Trace文件(trc文件)取出,然后通过Oracle提供的tkprof工具对Trace文件进行分析并格式化,产生更容易理解的Trace结果报告文件,并将两者展示给Web_Trace系统的应用者。

看完了要说点啥么?