请教下 在oracle awr 报告中 如何查看 SQL ordered by Elapsed Time 模块下 这些sql 所属的用户 这里只有sql_id,但是 v$sql q, v$session s 中已经没有记录了。
也问过 GPT 全是错误回答。
v$sql, v$session 没有记录,比较困难。 DBA_HIST_SQLTEXT可以再尝试一下。建议还是做定期监控,定期收集相关性能数据,有条件上数据库运维平台,做好日常数据记录。实在没有,可以从数据表和SQL语句去推断。
收起在 Oracle AWR(Automatic Workload Repository)报告中,查看 SQL ordered by Elapsed Time 模块下的 SQL 语句所属的用户,可以使用以下方法:
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 语句的文本。
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 语句所属的用户信息。请注意,确保查询的用户具有足够的权限来访问相关视图或表。
收起在Oracle AWR报告中,可以通过以下步骤查看SQL ordered by Elapsed Time模块下的SQL所属的用户:
在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所属的用户。