db2 jdbc驱动_使用DB2通用JDBC驱动程序进行跟踪

简介-为什么要进行JDBC跟踪?

JDBC跟踪是一种为Java应用程序开发人员提供有价值的信息,以帮助他们进行数据库应用程序开发工作的方法。 以下是一些需要了解如何执行JDBC跟踪的实例示例:

  • 搜索程序逻辑或初始化错误-数据库连接可能由于URL错误而失败,一次又一次地调用预期要执行的查询,由于事务定义不正确而可能导致数据库不一致,并且以此类推。 在所有这些情况下,很有可能可以使用跟踪数据来发现问题的原因。
  • 性能调整-多层环境中的性能问题很难检测,因为必须首先确定负责的层-应用程序,网络或数据库。 通过分析跟踪数据流中函数调用的进入/退出时间戳,可以确定引起性能问题的层。
  • 了解第三方软件-当您使用第三方软件时,由于源代码不可用,通常难以确定问题。 因此,跟踪信息可能有助于更好地了解第三方软件如何实现数据库接口。

DB2旧版JDBC驱动程序与DB2通用JDBC驱动程序


DB2 Legacy JDBC驱动程序是旧的Type 2驱动程序,已在较旧的DB2版本中提供。 它建立在DB2 CLI(DB2本地C调用级别接口)之上,该接口本身也建立在其他几层之上。 作为2类驱动程序,它需要安装DB2客户机。 DB2旧版JDBC驱动程序包含在文件db2java.zip中。

在DB2版本8中,提供了一个新的JDBC驱动程序,即所谓的DB2通用JDBC驱动程序 。 它是从头开始编写的,并被构造为允许类型2和类型4连接的抽象JDBC处理器。 进行连接时,应用程序通过使用不同的URL语法选择所需的连接类型。 DB2通用驱动程序使用分布式关系数据库体系结构(DRDA)协议与DB2服务器进行通信,该驱动程序建立在Java客户机层之上,该客户机层替代了CLI和其下的许多层。 仅对于2类连接,才需要安装DB2客户机; 类型4不需要DB2客户机。 DB2通用JDBC驱动程序包含在文件db2jcc.jar中(JCC表示Java Common Connectivity)。 尽管仍支持DB2 Legacy Driver,但将来它将被DB2 Universal JDBC Driver完全替代。

使用DB2 Legacy JDBC Driver Type 2进行跟踪


基于CLI的DB2传统JDBC驱动程序类型2为应用程序开发人员提供了两种不同的跟踪可能性:

  • 在JDBC层进行跟踪-在这种情况下,将跟踪所有JDBC函数调用。 跟踪信息包括:函数调用顺序,输入和输出参数,返回码以及错误和警告消息。
  • 在CLI层进行跟踪-DB2 Legacy JDBC驱动程序类型2在内部将所有JDBC函数调用映射到CLI函数调用。 因此,使用此驱动程序的Java程序可以替代地在CLI层激活跟踪。 跟踪信息是相同的-函数调用,参数,返回代码和消息-但在CLI层上处于较低级别。

这两个跟踪变量都通过CLI初始化文件db2cli.ini进行控制。 在Windows系统上,文件db2cli.ini可以在目录%DB2PATH%中找到(缺省情况下为C:\ Program Files \ IBM \ SQLLIB)。 在UNIX / Linux系统上,可以在实例所有者的$ HOME目录中的sqllib / cfg下找到它。

要在JDBC层激活跟踪,请在文件db2cli.ini的[COMMON]部分下进行以下输入:

清单1.用于JDBC跟踪的CLI关键字
[COMMON]
JDBCTrace=1
JDBCTracePathName=<trace directory>

(可选)可以指定关键字JDBCTraceFlush=1 。 在这种情况下,每个跟踪条目都将分别写入跟踪文件。 之后,跟踪文件将关闭并再次打开。 这样可确保即使Java程序崩溃也不会丢失任何跟踪条目。 另一方面,此选项会极大地降低性能。

由于仅在首次建立数据库连接时才读取文件db2cli.ini中的条目,因此对db2cli.ini文件的更改不会影响现有的数据库连接。

当使用DB2传统JDBC驱动程序类型2时,可以使用以下样本程序来测试JDBC跟踪。 在本文的其余部分中,该示例程序还用于演示DB2通用JDBC驱动程序的跟踪功能。

清单2.使用传统驱动程序类型2进行跟踪测试的示例代码
public class LegacyTraceExample
{
    public static void main(String[] args) {
        try {
            // load driver
            Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();

            // set connection properties
            String databaseUrl = "jdbc:db2:sample";

            // get connection
            java.sql.Connection con =
                java.sql.DriverManager.getConnection(databaseUrl, "user", "password");

            // execute a query
            java.sql.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值