不确定这是否可行.我10克.最终结果如下:
Username | Date/Time | sqltext
jdoe | 3/21/11 10:32:27 | select sum(total) from sales where in_date > '08-JAN-11'
jdoe | 3/21/11 10:32:21 | delete from products_old
jdoe | 3/21/11 10:32:18 | select item, description from products where item = 'blah'
jdoe | 3/21/11 10:32:06 | select count(item) from products
jdoe | 3/21/11 10:31:44 | describe products
Run Code Online (Sandbox Code Playgroud)
看起来v $ sql几乎(?)存储了所有已发送的sql查询,但我加入了什么来获取用户名和日期?
如果你有企业版和性能和调优包(否则查询AWR表违反了你的许可证),V$ACTIVE_SESSION_HISTORY视图将是你得到的最接近的.这将每秒捕获每个活动会话正在执行的内容.如果您的用户每秒执行许多SQL语句,或者您的SQL语句足够快以至于它们在特定的第二个边界内不活动,则不会捕获每个查询.如果您只是尝试对特定用户已完成的最后10件事进行一般性抽样(偏向于捕获更长时间运行的查询),那么AWR应该足够了.但是,如果您尝试执行某些操作,例如跟踪用户在其会话中执行的操作,则AWR将不合适.
如果要捕获用户所做的一切,您需要跟踪会话.这将导致在服务器上生成相当庞大的跟踪文件,您可以使用该tkprof实用程序进行汇总.但这要求您在执行感兴趣的SQL之前启用特定会话的跟踪 - 这不是可以追溯执行的操作.
如果您只对会话所做的更改感兴趣,可以使用LogMiner浏览重做日志以查看用户正在执行的操作.这可以追溯完成,但由于SELECT语句不生成REDO,因此它们不会写入重做日志,并且对LogMiner不可见.
| 归档时间: |
|
| 查看次数: |
15021 次 |
| 最近记录: |