如何通过eclipse链接查找查询的解释计划

时间:2013-12-20 05:41:05

标签: java jpa oracle11g eclipselink

我有一个带有JPA and eclipse link后端的Java应用程序。我想在应用程序运行时找到要执行的特定查询的explain plan。我知道我可以通过sql developer查看它,但我想在应用程序调用它时找到查询的解释计划。有办法吗?

我尝试添加explain plan for select 1 from dual,但它一直在抛出异常。

1 个答案:

答案 0 :(得分:1)

您没有太多选择。由于某些未知原因,hibernate和enclipselink都不支持类似的内容,请参阅setting-context-in-a-jpa

所以你必须使用纯Oracle解决方案

  • 创建LOGON TRIGGER ON SCHEMA并在其中启用会话跟踪。运行应用程序并分析跟踪文件,然后
  • 检查v$SQL_PLAN视图的内容,并检查查询的真实执行计划。

如果您坚持从Eclipse链接执行此操作,则必须以某种方式启动事务,以避免将会话返回到池中。查询v$mystatv$session以获取SIDSERIAL#(以获取唯一会话标识符)。然后执行您的查询。从SQL_ID获取PREV_SQL_IDv$session。检查v$sql_planv$sql_text以获取查询sql text和exec plan。