【问题标题】:find the query per username查找每个用户名的查询
【发布时间】:2016-08-06 11:42:19
【问题描述】:

我想查找在一段时间内使用运行此查询的用户名运行的所有查询(用户名不是会话 ID) 我该怎么办?

【问题讨论】:

  • “查找所有查询”是什么意思?您需要什么 - 每个查询的全文?还是只是 query_id?
  • 查询全文
  • 我运行一个应用程序,我想找到这个应用程序运行的所有查询,然后找到这些查询使用多少 cpu

标签: sql oracle monitoring performance-testing


【解决方案1】:

您可能想要这样的东西(未经测试)。 WHERE 子句有两个绑定变量,一个用于您应用的用户名,另一个用于您要检查所有这些的时间段。

select s.last_active_time, u.username, s.sql_id, c.cpu_time_total, s.sql_text
from   v$sql s join all_users u        on s.parsing_user_id = u.user_id
               join dba_hist_sqlstat c on s.sql_id          = c.sql_id
where  username          = :app_username
  and  last_active_time >= :from_date;

【讨论】:

  • 谢谢。它显示的 cpu 时间,是该查询在上次运行中使用的 cpu 时间吗?还是它在所有运行中使用的所有 CPU 时间的总和?如果我想在一段时间内使用 cpu 时间,我可以清除特殊用户的表,然后运行我的应用程序并查看该应用程序使用的确切 cpu 时间吗?
  • 我不确定(我不做监控/调整,我只是提供了一些我认为可能对你有帮助的东西);如果我处于你的位置,我会阅读 dba_hist_sqlstat 的文档,它应该可以回答你的问题。
【解决方案2】:

从下面你可以通过模式获得整个查询列表。检查它。

SELECT V.SQL_TEXT,
           V.PARSING_SCHEMA_NAME,
           V.FIRST_LOAD_TIME,
           V.DISK_READS,
           V.ROWS_PROCESSED,
           V.ELAPSED_TIME,
           V.SERVICE
      FROM V$SQL V
WHERE TO_DATE(V.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss')>(TRUNC(SYSDATE)) 
AND PARSING_SCHEMA_NAME ='schema_name'

【讨论】:

  • 它有错误:引用的字符串没有正确终止
  • 你用的是什么数据库?
  • SELECT V.SQL_TEXT, V.PARSING_SCHEMA_NAME, V.FIRST_LOAD_TIME, V.DISK_READS, V.ROWS_PROCESSED, V.ELAPSED_TIME, V.SERVICE FROM V$SQL V WHERE TO_DATE(V.FIRST_LOAD_TIME,'YYYY -MM-DD hh24:mi:ss')>(TRUNC(SYSDATE))
  • 只需运行上面的查询..它会列出你需要的所有内容
  • 会显示用户名吗?在哪里?此外,OP 在哪里询问有关 disk_reads、rows_processed 等的信息?这是什么,涂鸦?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2017-05-15
  • 1970-01-01
相关资源
最近更新 更多