使用Jooq的Oracle端到端指标

问题描述

我正在处理一个批处理应用程序,其中DAO层使用jooq与oracle数据库进行交互。我已使用所有必需的OCSID密钥将setClientInfo配置到oracle连接。我正在使用扩展了DelegatingDataSource的包装器类,以在批处理应用程序的不同阶段动态更改模块,操作,ecid和client_id,例如示例,我将action设置为当前步骤名称,将{{1 }}作为当前职位名称,依此类推。我还为module设置了过程名称。

我想从这些指标中跟踪哪个作业/步骤/过程存在性能问题。我观察到,在批处理应用程序运行期间,某些度量标准保存在action表中。批处理申请完成后,我只能在v$session中看到一些条目。我还尝试通过使用V$ACTIVE_SESSION_HISTORY使过程休眠2分钟以上,但是运行批处理应用程序后,无法在APEX_UTIL.PAUSE(120)表中找到所有条目。即使在运行批处理应用程序期间有超过10到15个DB调用,我在V$ACTIVE_SESSION_HISTORY中也只能看到3到4个条目。这些指标如何保存在V$ACTIVE_SESSION_HISTORY中?如何针对批处理应用程序中使用的作业/步骤/过程实现绩效跟踪?

解决方法

如果您将DataSource与jOOQ的DataSourceConnectionProvider一起使用,jOOQ将始终在每个语句的末尾调用Connection.close(),这可能取决于您的配置,将连接放回原处。在游泳池里,也许会释放一些资源。如果要确保“会话”持续更长的时间,请确保连接池不会释放这些资源,甚至在jOOQ情况下甚至将JDBC Connection传递给jOOQ而不是DataSource将不会呼叫Connection.close()。你会的。

也许,如果您适合使用较低精度的采样,则可能更希望查询DBA_HIST_ACTIVE_SESS_HISTORY,请参阅:https://oracle-base.com/articles/10g/active-session-history

,

我已通过删除APEX_UTIL.PAUSE解决了这一问题。经过这个https://jonathanlewis.wordpress.com/2015/03/27/ash/后,我知道如果会话进入睡眠状态,它将在v $ session中显示为status ='ACTIVE'和state ='WAITING',但不会记录在v $ active_session_history中。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...