0

我有一个使用 DB2 作为数据库的旧 EJB 2.1 项目。
我想看看程序发送到数据库的 sql 查询。我怎样才能做到这一点。我正在使用 DB2。持久性是容器管理的持久性。( CMP)

在 Hibernate 中,<property name="hibernate.show_sql" value="true"/>我想要达到同样的效果。:-)

4

1 回答 1

0

如果您没有找到从持久层捕获 SQL 的合适选项,那么 DB2 在驱动程序级别和数据库服务器上提供了一些强大的跟踪选项。每种方法都有其优点和缺点。

由于您已将 EJB 项目描述为旧项目,因此您的持久层可能正在使用 IBM 的 JDBC Type 2 驱动程序,该驱动程序本质上是围绕 DB2 的调用级接口的包装器,在这种情况下,您将考虑通过以下方式启用跟踪选项db2cli.ini 文件。

更新和更流行的驱动程序是 JDBC Type 4“通用驱动程序”,db2jcc.jar,它通过可以附加到连接字符串和/或在运行时由应用程序设置的属性来处理跟踪。

由于我更多地使用数据库而不是应用程序服务器,因此我个人对捕获 SQL 的偏好是定义一个语句事件监视器,它将 SQL 语句和详细统计数据捕获到一个平面文件或一组专用表中。事件监视器提供了多种过滤机制,可以仅收集总工作量的一小部分的详细跟踪记录。事件监视器的另一个吸引人的方面是 DBA 可以在不中断应用程序服务器的情况下启动或停止它们。由于事件监视器可以快速收集大量数据,因此我更喜欢使用表作为事件监视器目标,因为我可以通过一些 SQL 查询轻松分析结果。

于 2012-03-07T22:46:04.970 回答