【问题标题】:Trace all activity of an oracle session跟踪 oracle 会话的所有活动
【发布时间】:2017-06-13 00:50:18
【问题描述】:

我遇到了一个小问题,如果你有时间,我需要你的帮助:)

我正在尝试设置一种审计来跟踪某些特定会话执行的所有 SQL 语句

所以我创建了一个触发器AFTER LOGON,为这些会话启用跟踪事件(10046(所有级别测试)或使用 DBMS_MONITOR)。

脚本给了我正确的结果,但另外,它用大量统计数据和 oracle 内部查询填充跟踪,所以我认为它会影响数据库性能并占用太多磁盘空间。

有没有办法只收集用户查询?可能是一个特定的跟踪可以让我这样做吗?

感谢您的建议:)

【问题讨论】:

    标签: sql oracle session trace


    【解决方案1】:

    通过使用tkprof 标志sys=no 格式化文件,从跟踪文件中过滤递归查询:

    tkprof input_file.trc  output_file.txt sys=no
    

    输出文件应该比原始跟踪文件更小且更易于阅读。该文件可能仍会包含一些您不关心的语句,例如 Spatial/SDO 触发器。但大部分幕后陈述都会被排除在外。

    要仅查看会话中执行的查询,并排除所有统计信息和内部查询,请使用 record 标志生成单独的文件:

    tkprof input_file.trc output_file.tk sys=no record=record.txt
    

    【讨论】:

    • 谢谢!输出更好:) 无论如何要删除统计信息或删除内部查询?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多