按用户查看SQL历史记录[Oracle]

时间:2017-09-21 12:25:48

标签: oracle oracle11g

我正在尝试在Oracle 11g数据库中找到用户的所有(可用)SQL历史记录。我尝试使用某些视图,例如v$sql_monitorv$sqlareadba_hist_active_sess_history来尝试获取用户名及其执行的SQL语句(在SID和Serial#上加入),但我是没有运气。我们的高级DBA和DBE说他们之前已经完成了它,但只是告诉我查看sqlarea,因为它拥有最长的SQL历史。我对此没有任何好运。这可以在Oracle中做吗?

编辑:我们使用SQL Developer。我知道TOAD可能有也可能没有内置的这个功能,但我无法在SQL Developer中找到任何可以实现此功能的内容(除了查看当前会话和当前SQL)。

2 个答案:

答案 0 :(得分:0)

如果您具有查询dba_hist_active_sess_history的正确许可,您可以尝试类似的东西,您需要诊断包的许可证:

select trunc(hist.sample_time,'DD'),u.name,hist.sql_id,sql.sql_text
from dba_hist_active_sess_history hist,
     dba_hist_sqltext sql,
     user$ u
where hist.sql_id = sql.sql_id
and   hist.user_id = u.user#;

答案 1 :(得分:0)

我认为获取用户的确切SQL执行(我认为你的意思是会话?)的唯一方法是通过启动跟踪。 我认为这篇文章(https://oracle-base.com/articles/misc/sql-trace-10046-trcsess-and-tkprof)为您提供了如何使用它的良好说明。