如何在 oracle 11g 和 12c 中收集跟踪?

How to collect trace in oracle 11g and 12c?

您好,我正在使用 Oracle 11g12c。我们正在尝试实现场景导航,并希望收集后台 oracle 查询。假设我正在做 activity 登录应用程序,现在我想知道在登录 activity 期间使用了哪些查询。像这样我们有多个场景并且必须捕获它背后的查询。有人可以帮我得到这个吗?

有多种生成跟踪文件的方法,但由于您想捕获所有内容,您可以在数据库级别启用它:-

ALTER SYSTEM SET sql_trace = true SCOPE=MEMORY;

完成测试后将其关闭(尽快)

ALTER SYSTEM SET sql_trace = false SCOPE=MEMORY;

输出将放在诊断目录中。像

$ORACLE_BASE/diag/rdbms/sid/SID/trace

您可以通过 运行 通过 tkprof

使输出更易于阅读
tkprof trace.trc trace.txt

还有其他您可能更喜欢的用于跟踪会话的选项(这些选项大多已审核 here)。

这对 11g 和 12c 都有效。