我有一个带有JPA and eclipse link
后端的Java应用程序。我想在应用程序运行时找到要执行的特定查询的explain plan
。我知道我可以通过sql developer查看它,但我想在应用程序调用它时找到查询的解释计划。有办法吗?
我尝试添加explain plan for select 1 from dual
,但它一直在抛出异常。
答案 0 :(得分:1)
您没有太多选择。由于某些未知原因,hibernate和enclipselink都不支持类似的内容,请参阅setting-context-in-a-jpa
所以你必须使用纯Oracle解决方案
LOGON TRIGGER ON SCHEMA
并在其中启用会话跟踪。运行应用程序并分析跟踪文件,然后v$SQL_PLAN
视图的内容,并检查查询的真实执行计划。如果您坚持从Eclipse链接执行此操作,则必须以某种方式启动事务,以避免将会话返回到池中。查询v$mystat
和v$session
以获取SID
,SERIAL#
(以获取唯一会话标识符)。然后执行您的查询。从SQL_ID
获取PREV_SQL_ID
和v$session
。检查v$sql_plan
和v$sql_text
以获取查询sql text和exec plan。