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或其它什么工具,很多地方不适应。

原文地址:https://www.cnblogs.com/liuyouying/p/6649033.html