【发布时间】: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