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

41zrol4v  于 2022-11-03  发布在  Oracle
关注(0)|答案(2)|浏览(276)

我在找所有(可用)Oracle 11g数据库中用户的SQL历史记录。我尝试使用一些视图(如v$sql_monitorv$sqlareadba_hist_active_sess_history)来获取用户名,及其执行的SQL语句(加入SID和序列号),但我没有任何运气。我们的高级DBA和DBE说他们“我以前做过,但只是告诉我在sqlarea中查找,因为它拥有最长的SQL历史记录。我没有任何运气。在Oracle中可以这样做吗?
编辑:我们使用SQL Developer。我知道TOAD可能内置了此功能,也可能没有,但我还没有在SQL Developer中找到任何可以实现此功能的功能(除了查看当前会话和当前SQL)。

bvjxkvbb

bvjxkvbb1#

如果您有查询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#;
rt4zxlrg

rt4zxlrg2#

我认为获取用户的确切SQL执行(我想你指的是会话?)的唯一方法是启用跟踪。我认为这篇文章(https://oracle-base.com/articles/misc/sql-trace-10046-trcsess-and-tkprof)给了你一个很好的指导如何使用它。

相关问题