Oracle学习 第25天 Oracle版的Profiler
平时Sql Server经常用到Profiler,主要是两大用处:一个是查看SQL执行时间,看哪段脚本最耗时。另一个就是跟踪当前操作所执行的SQL语句,这个最常用。
平时项目中经常要用到别人的CS程序,或者BS站点,也可能是自已项目里的一个点击事件,要跟踪SQL到底执行了什么,这时用SQL Profiler就非常方便,可以选择库,过滤掉一些不要的,虽然还有一些杂项出来,但基本上能看到当前所操作的事件。
换到PL/SQL,就没找到相应的功能,Session里有个SQL跟踪可以勾起来,但勾了也不知怎么用,什么都没发生,可能是记在后台哪里了
网上找了一圈,很多人都在问,有些行不通,有些巨复杂,好不容易找到一句,改进了一下,现在很好用了
SELECT SQL_TEXT, SQL_FULLTEXT, LAST_ACTIVE_TIME FROM SYS.V_$SQL S,SYS.ALL_USERS U WHERE S.PARSING_USER_ID=U.USER_ID AND UPPER(U.USERNAME) IN ('当前用户') AND MODULE = 'w3wp.exe' AND Last_Active_Time > SYSDATE-(30/24/60/60) ORDER BY S.LAST_LOAD_TIME DESC;
1、SQL_TEXT最长1000字,超过的要在SQL_FULLTEXT里看
2、把当前用户名填进去,只查当前操作
3、MODULE = 'w3wp.exe' 这是查IIS的操作,如果是其它程序,要写程序名
4、Last_Active_Time > SYSDATE-(30/24/60/60),表示最后操作时间在当前时间之前30秒,一般点击完,就会切换过来查,30秒足够了
习惯了SQL的SSMS,要换到PLSQL或其它什么工具,很多地方不适应。