使用 Jooq 的 Oracle 端到端指标
Oracle End To End metrics with Jooq
我正在开发一个批处理应用程序,其中 DAO 层使用 jooq 与 oracle 数据库进行交互。我已将 setClientInfo
配置为具有所有必需的 OCSID 密钥的 oracle 连接。我正在使用扩展 DelegatingDataSource
的包装器 class 在批处理应用程序的不同阶段动态更改模块、操作、ecid 和 client_id,例如我将 action
设置为当前步骤名称和 module
作为当前作业名称等。我还设置了 action
和过程名称。
我想从这些指标中追踪到 job/step/procedure 存在性能问题。我观察到在批处理应用程序 运行 期间,一些指标保存在 v$session
table 中。批量申请完成后,我只能看到 V$ACTIVE_SESSION_HISTORY
中的一些条目。我也尝试过使用 APEX_UTIL.PAUSE(120)
让程序休眠超过 2 分钟,但是在批处理应用 运行 之后我无法在 V$ACTIVE_SESSION_HISTORY
table 中找到所有条目.即使在批处理应用程序 运行 期间有超过 10 到 15 个数据库调用,我也只能在 V$ACTIVE_SESSION_HISTORY
中看到 3 到 4 个条目。这些指标如何保存在 V$ACTIVE_SESSION_HISTORY
中?我怎样才能跟踪批处理应用程序中使用的 job/step/procedure 的性能?
如果您将 DataSource
与 jOOQ 的 DataSourceConnectionProvider
一起使用,jOOQ 将始终在每个语句的末尾调用 Connection.close()
,这可能会根据您的配置将连接回到池中,也许会释放一些资源。如果你想确保你的“会话”持续更长时间,请确保连接池不会释放这些资源,或者甚至将 JDBC Connection
传递给 jOOQ 而不是 DataSource
,在jOOQ 不会调用的情况 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 .
我正在开发一个批处理应用程序,其中 DAO 层使用 jooq 与 oracle 数据库进行交互。我已将 setClientInfo
配置为具有所有必需的 OCSID 密钥的 oracle 连接。我正在使用扩展 DelegatingDataSource
的包装器 class 在批处理应用程序的不同阶段动态更改模块、操作、ecid 和 client_id,例如我将 action
设置为当前步骤名称和 module
作为当前作业名称等。我还设置了 action
和过程名称。
我想从这些指标中追踪到 job/step/procedure 存在性能问题。我观察到在批处理应用程序 运行 期间,一些指标保存在 v$session
table 中。批量申请完成后,我只能看到 V$ACTIVE_SESSION_HISTORY
中的一些条目。我也尝试过使用 APEX_UTIL.PAUSE(120)
让程序休眠超过 2 分钟,但是在批处理应用 运行 之后我无法在 V$ACTIVE_SESSION_HISTORY
table 中找到所有条目.即使在批处理应用程序 运行 期间有超过 10 到 15 个数据库调用,我也只能在 V$ACTIVE_SESSION_HISTORY
中看到 3 到 4 个条目。这些指标如何保存在 V$ACTIVE_SESSION_HISTORY
中?我怎样才能跟踪批处理应用程序中使用的 job/step/procedure 的性能?
如果您将 DataSource
与 jOOQ 的 DataSourceConnectionProvider
一起使用,jOOQ 将始终在每个语句的末尾调用 Connection.close()
,这可能会根据您的配置将连接回到池中,也许会释放一些资源。如果你想确保你的“会话”持续更长时间,请确保连接池不会释放这些资源,或者甚至将 JDBC Connection
传递给 jOOQ 而不是 DataSource
,在jOOQ 不会调用的情况 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 .