如何跟踪 Java Web 应用程序中的连接池 - DBMS_APPLICATION_INFO

5 java oracle logging hibernate application-pool

我需要提高通常在固定数据库用户上运行的 Web 应用程序的可追溯性。DBA 应该能够快速访问有关导致数据库性能下降的大量用户的信息。

5 年前,我实现了一个 .NET ORM 引擎,它使用 DBMS_APPLICATION_INFO 包生成用户和服务器的日志。使用连接管理器之上的包装器并使用以下代码:

DBMS_APPLICATION_INFO.SET_MODULE('" + User + " - " + appServerMachine + "','');

每次连接从池中获取连接时,都会执行该包以将信息记录在 V$SESSION 中。

有没有人使用 Toplink 或 Hibernate 发现或实现了这个问题的解决方案?这个问题有默认实现吗?

我在这里找到了 5 年前实施的解决方案,但我想知道是否有人有更好的解决方案并与 ORM 集成。

将 DBMS_APPLICATION_INFO 与 Jboss 一起使用

我的应用程序位于 Spring 之上,DAO 是使用 JPA(使用 hibernate)实现的,并且实际上直接在 Tomcat 中运行,计划(明年)迁移到 SAP Netwevare Application Server。

谢谢。

Dav*_*son 0

您应该能够在连接池上配置记录器(例如 log4j)。您可能需要一个自定义附加程序来拉回用户 ID。

需要考虑两点:

  1. 在繁忙的系统上,这将生成一个大的日志文件。
  2. 频繁的连接不一定表示会降低数据库性能的行为。