TOAD或其他工具是否有办法监控您的网络应用正在执行的查询?
我想检查一下Web应用查询的解释/执行计划。
我正在调试为什么webapp查询比从sqlplus运行时慢。
答案 0 :(得分:2)
通常,您可以从三个点跟踪和分析。 首先是SQL,主要是通过v $ sql视图。 其次是通过会话(从v $ session开始)。 最后通过时间(通常在系统或会话级别测量一段时间)。
如果执行特定的SQL语句(例如SELECT * FROM表WHERE type =:val),则数据库将对其进行快速哈希,并查看缓存中是否存在匹配的语句。该语句不仅要匹配文本,还要在某些环境设置上匹配(例如解析用户,优化器目标,绑定变量类型,NLS设置......)。
如果没有匹配的语句,则数据库会将其提供给优化器以提出查询计划。如果匹配,则将使用已为该语句确定的计划。
所以我建议你的第一步是采用一个已经由web-app和sqlplus执行的SQL,看看它是否使用相同的计划。您应该能够在v $ sql中查找感兴趣的语句并查看它出现的次数。
如果您有多次出现,特别是使用不同的MODULE / ACTION / SERVICE值,那么您可以查看计划以查看它们是否不同(DBMS_XPLAN.DISPLAY_CURSOR)。如果只有一次出现,则SQL正在共享,您需要采用不同的方法将Web应用程序执行与sqlplus执行隔离开来。
这样做的一种方法是通过web-app会话和sqlplus会话(DBMS_MONITOR)跟踪SQL的执行。然后在跟踪文件上使用tkprof或类似文件并查找差异。
无法帮助您通过TOAD完成此操作,但您在了解底层工具和技术方面不会出错。
答案 1 :(得分:1)
是。有一种方法可以监视Web应用程序调用以查询Oracle TOAD中的数据库。
START -> All Programs -> Quest Software -> TOAD for Oracle -> Tools -> SQL Monitor
使用此工具,您可以选择进程(在这种情况下[TOAD, Web_dev (I dont remember the name of debug)]
“运行”,“调试”也是如此)。此工具显示正在调用应用程序的存储过程或函数。