awr 报告中 查看sql 的所属用户?

请教下 在oracle awr 报告中 如何查看 SQL ordered by Elapsed Time 模块下 这些sql 所属的用户 这里只有sql_id,但是 v$sql q, v$session s 中已经没有记录了。
也问过 GPT  全是错误回答。

参与12

3同行回答

AcdanteAcdante技术总监SHFY
v$sql, v$session 没有记录,比较困难。 DBA_HIST_SQLTEXT可以再尝试一下。建议还是做定期监控,定期收集相关性能数据,有条件上数据库运维平台,做好日常数据记录。实在没有,可以从数据表和SQL语句去推断。...显示全部

v$sql, v$session 没有记录,比较困难。 DBA_HIST_SQLTEXT可以再尝试一下。建议还是做定期监控,定期收集相关性能数据,有条件上数据库运维平台,做好日常数据记录。实在没有,可以从数据表和SQL语句去推断。

收起
互联网服务 · 2023-07-05
wenwen123wenwen123项目经理MM
在 Oracle AWR(Automatic Workload Repository)报告中,查看 SQL ordered by Elapsed Time 模块下的 SQL 语句所属的用户,可以使用以下方法:使用 SQL_ID 进行关联查询: 在 AWR 报告中,SQL ordered by Elapsed Time 模块中列出了 SQL_ID 列,可以使用该 SQL_ID 进行关联查询,从其他视...显示全部

在 Oracle AWR(Automatic Workload Repository)报告中,查看 SQL ordered by Elapsed Time 模块下的 SQL 语句所属的用户,可以使用以下方法:

  1. 使用 SQL_ID 进行关联查询: 在 AWR 报告中,SQL ordered by Elapsed Time 模块中列出了 SQL_ID 列,可以使用该 SQL_ID 进行关联查询,从其他视图中获取相应的用户信息。例如,您可以执行以下查询语句:

sqlCopy code

SELECT s.username, a.sql_id, a.sql_text

FROM v$sqlarea a
JOIN v$session s ON (a.address = s.sql_address AND a.hash_value = s.sql_hash_value)
WHERE a.sql_id = 'Your_SQL_ID';

这将返回与指定 SQL_ID 关联的用户名(用户),以及 SQL 语句的文本。

  1. 使用 DBA_HIST_SQLTEXT 视图: 如果您无法在当前的 v$sqlarea 或 v$session 视图中找到相应的记录,可以尝试访问历史数据。AWR 报告会收集历史性能数据,可以使用 DBA_HIST_SQLTEXT 视图获取 SQL 语句的详细信息,包括用户信息。例如:

sqlCopy code

SELECT h.username, h.sql_id, h.sql_text

FROM dba_hist_sqltext h
WHERE h.sql_id = 'Your_SQL_ID';

这将返回与指定 SQL_ID 关联的用户名(用户)以及 SQL 语句的文本。

通过上述方法,您应该能够在 AWR 报告中的 SQL ordered by Elapsed Time 模块中找到 SQL 语句所属的用户信息。请注意,确保查询的用户具有足够的权限来访问相关视图或表。

收起
互联网服务 · 2023-07-04
浏览384
zftangzftang其它小白一枚
select * from v$sql  where sql_id= 'XXX'这里记录显示全部

select * from v$sql  where sql_id= 'XXX'这里记录

收起
互联网服务 · 2023-07-04
浏览418
宗鬼 邀答

ChatGPT 回答

在Oracle AWR报告中,可以通过以下步骤查看SQL ordered by Elapsed Time模块下的SQL所属的用户:

  1. 找到SQL ordered by Elapsed Time模块下的SQL ID,记录下来。
  2. 在Oracle数据库中执行以下SQL语句,将SQL ID替换为上一步记录的SQL ID:

    SELECT s.username, s.sid, s.serial#, s.machine
    FROM v$sqlarea a, v$session s
    WHERE a.sql_id = 'SQL ID'
    AND a.parsing_user_id = s.user#

    这将返回执行该SQL的会话的用户名、会话ID、序列号和机器名。

    如果该SQL已经不在缓存中,则可以通过AWR报告中的“SQL ordered by Elapsed Time”模块中的“SQL Text”列中的SQL语句来确定该SQL所属的用户。

提问者

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2023-07-04
  • 关注会员:4 人
  • 问题浏览:1232
  • 最近回答:2023-07-05
  • X社区推广