首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle查询历史

Oracle查询历史
EN

Stack Overflow用户
提问于 2016-12-27 02:58:22
回答 2查看 7.7K关注 0票数 0

这个Java应用程序仍然通过JDBC代码与Oracle 11g通信。尽管如此,如果该查询已经存在,则希望检查Oracle历史记录上对此应用程序所做的查询。

查看关键项的

  1. ?**),完整查询(带有参数值(已解析而非)通过** java.sql.PreparedStatement**)**
  2. 查询时间
  3. 所用模式
  4. 用户启动查询

预期结果:

  • 通过(有SYSDBA权限或不具有SYSDBA权限)使用返回的所有键项运行SQL查询

尝试使用下面的查询,但它没有返回上面列出的关键项:

代码语言:javascript
运行
复制
select * from v$sql order by last_load_time desc
EN

回答 2

Stack Overflow用户

发布于 2016-12-27 05:56:38

正如其他成员已经指出的那样,V$SQLV$SQL_BIND_CAPTUREV$SQLAREA应该为您提供大量由Java触发的查询的信息。

请注意,这可能不是完整的年代史。假设Java应用程序对数据库进行了大量的查询,可能并不是所有的查询都存在于V$SQL中(例如:解析失败的查询、只使用过一次而不再缓存的查询等等)。此外,如果查询被触发两次(使用相同或不同的绑定变量集),您将只在V$SQL中找到最新的执行项。

如果您的目标是以完美的时间顺序查找所有查询(作为对Java应用程序的某种黑匣子研究),那么我建议您启用对特定会话的跟踪(由SID, SERIAL#V$SESSION中标识)。这将提供多个方面的信息,包括查询火顺序、绑定变量、查询的性能等。有关更多信息,请查看链接。可以进行不同类型和级别的信息收集。此外,它的性能开销,如果您计划在任何生产系统上使用它,请考虑这个因素。

票数 0
EN

Stack Overflow用户

发布于 2016-12-27 07:24:25

下面的查询应该返回您需要的信息

代码语言:javascript
运行
复制
    select vsql.sql_text, vses.SCHEMANAME, vsql.ELAPSED_TIME, vses.USERNAME
    from v$session vses join v$sql vsql
    on vses.sql_id=vsql.sql_id
    where contdition;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41338462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档