【问题标题】:How to collect trace in oracle 11g and 12c?如何在 oracle 11g 和 12c 中收集跟踪信息?
【发布时间】:2016-09-23 20:45:18
【问题描述】:

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

【问题讨论】:

    标签: oracle11g oracle12c


    【解决方案1】:

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

    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。

    【讨论】:

    • 如果有太多后台线程正在执行,如何过滤?我们如何只获取那些使用用户登录执行的语句?
    • 如果你想跟踪一个特定的会话,那么你可以使用链接中的一种方法,否则你会得到所有人。您可以使用 sort=userid 对 tkprof 输出进行排序,以将每个用户的查询分组在一起,这可能会有所帮助。
    • 当我们通过应用程序登录时,我们不确定正在使用的会话 ID 以及您所说的用户 ID 是数据库用户还是应用程序?问题是用户也被其他进程使用,所以在这种情况下,很难确定在登录过程中正确使用了哪个查询。
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 2014-10-03
    • 2015-05-05
    • 1970-01-01
    • 2017-07-31
    • 2019-10-02
    • 2016-05-20
    • 2021-03-20
    相关资源
    最近更新 更多