【问题标题】:TKProf (Oracle event 10046) on Spring Boot/JDBCSpring Boot/JDBC 上的 TKProf(Oracle 事件 10046)
【发布时间】:2019-06-15 03:31:55
【问题描述】:

我正在尝试通过调用直接 JDBC 调用来启动 oracle 跟踪。我正在从 Spring (boot/jdbc) 获得我的连接。然后我通过语句运行 TKProf 命令...执行查询并打印到日志。

以下 3 个语句返回 false。如果我通过 Intellij 的控制台使用相同的语句,我将得到预期的结果,并且我的 *.trc 文件会正确生成。

try (final Connection connection = DataSourceUtils.getConnection(dataSource)) {
        log.debug(query);
        final Long maxCount = findMaxCount();
        boolean traceIdSet = connection.createStatement().execute("ALTER SESSION SET TRACEFILE_IDENTIFIER = '" + traceId + "'");
        boolean traceEnabled = connection.createStatement().execute("ALTER SESSION SET EVENTS '10046 trace name context forever, level 8'");
        final PreparedStatement stmt = connection.prepareStatement(query);
        map(consumer, stmt.executeQuery(query));
        boolean traceIdOff = connection.createStatement().execute("ALTER SESSION SET EVENTS '10046 trace name context off'");
        log.debug("|" + traceIdSet + "|" + traceEnabled + "|" + traceIdOff + "| ____________________ DONE __________________________");
    } catch (SQLException e) {
        log.error("Error Performing the Query", e);
    }

它必须在我的配置中...我的意思是,java 瘦驱动程序可以做到这一点,因为我可以通过 IDE 做到这一点......所以我必须错过一些其他的东西,也许是 Spring Boot 约定我应该改变。

您能帮忙吗,任何意见都很有价值。

谢谢!

【问题讨论】:

  • 错误是正确的; from the docs 它返回“如果第一个结果是 ResultSet 对象,则返回 true;如果是更新计数或没有结果,则返回 false”。 alter 没有结果。查询是否实际运行,您确定在正确的位置查找跟踪文件吗?
  • 下一步是摆脱代理连接并使用真正的 Oracle 连接调用 ALTER 语句。见getTargetConnection
  • 谢谢你们...我会尝试 getTargetConneciton 并回复。
  • 也没有用。粉扑。

标签: oracle spring-boot jdbc oracle10g spring-jdbc


【解决方案1】:

我的错,真正的问题是我没有得到适当的回应……

从 v$diag_info 中选择值

我找不到跟踪文件,但只有一些其他的......

不过 trc 文件已经就位,所以 Spring Boot/JDBC 启用 TKProf 没有问题。

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2020-08-07
    • 2021-12-14
    • 2019-12-26
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多