【问题标题】:Connecting to Remote DB2 Database (JSP)连接到远程 DB2 数据库 (JSP)
【发布时间】:2014-03-07 02:32:19
【问题描述】:

让我先说我对这种事情完全陌生。反正..

我正在尝试连接到 DB2 数据库。 服务器正在运行 Ubuntu 12.04 和 Apache Tomcat 7。驱动程序 db2jcc.jar 包含在构建路径中。

这是我的 JSP 代码:

<%@ page import="java.sql.*" %>
<% Class.forName("com.ibm.db2.jcc.DB2Driver");%>
<HTML>
<HEAD>
<TITLE>db2 connection</TITLE>
</HEAD>
<BODY>
<%
  String url = 
  "jdbc:db2://IP_ADDR:60000/INST1" +
  ":user=USERNAME;password=PASSWORD;" +
  "traceLevel=" +
  (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL) + ";";
  Connection con = java.sql.DriverManager.getConnection(url);
%>
</BODY>
</HTML>

我收到的错误消息:

应用服务器拒绝建立连接。 试图访问数据库 INST1,但未找到或不支持事务。 ERRORCODE=-4499,SQLSTATE=08004

我在这里查看了有关该问题的 IBM 支持页面: http://www-01.ibm.com/support/docview.wss?uid=swg21443723

它提到使用目标目录名称,通过发出db2 list dcs directory 命令找到。

在服务器上,我的最初是空白的,但我使用db2 catalog dcs database DB2INST1 as INST1 命令创建了一个条目。

现在我使用 db2 list dcs directory` 的输出如下:

数据库连接服务 (DCS) 目录

目录中的条目数 = 1

DCS 1 条目:

本地数据库名称 = DB2INST1

目标数据库名称 = INST1

申请者姓名 =

DCS 参数 =

评论=

DCS 目录发布级别 = 0x0100

我通过执行db2stopdb2start 重置数据库

最后,我运行netstat -tulpn 并看到数据库正在侦听端口 60000。输出如下:

tcp 0 0 0.0.0.0:60000 0.0.0.0:* 听

2949/db2sysc

这是我所知道的。据我所知,我正在使用目标数据库名称并尝试连接到正确的端口号。

我在这里吠叫正确的树吗?任何帮助是极大的赞赏。

** 编辑:mustaccio 回复的格式化答案**

在服务器上,我在 ssh 开启后会下降一个级别。我得到了 4 个名为 &lt;USERNAME&gt;, dasusr1, db2fenc1, db2inst1 的目录

从那里我做了sudo su db2inst1 然后运行db2 list dcs directory command 得到:

Database Connection Services (DCS) Directory
Number of entries in the directory = 1

DCS 1 entry:

Local database name                = DB2INST1
Target database name               = INST1
Application requestor name         =
DCS parameters                     =
Comment                            =
DCS directory release level        = 0x0100

【问题讨论】:

  • 首先,DCS 目录用于 z/OS 上的 DB2(在您包含的链接中说明),因此更改它不会对您的情况产生太大影响。其次,您可能混淆了 DB2 实例名称和数据库名称。你能在服务器上显示db2 list db directory 的输出吗?
  • 在服务器上,我在 ssh 开启后下降了一个级别。我得到 4 个名为 &lt;USERNAME&gt;, dasusr1, db2fenc1, db2inst1 的目录 从那里我做了 sudo su db2inst1 然后运行 ​​db2 list dcs directory command 得到:数据库连接服务 (DCS) 目录 目录中的条目数 = 1 DCS 1 条目:本地数据库名称 = DB2INST1 目标数据库名称 = INST1 应用程序请求者名称 = DCS 参数 = 注释 = DCS 目录发布级别 = 0x0100 `
  • 一切都很好,但是,正如我所说,DCS 目录与您的情况无关。现在试试db2 list db directory
  • 哦,对不起。这是输出: System Database Directory 目录中的条目数 = 1 数据库 1 条目: 数据库别名 = SAMPLE 数据库名称 = SAMPLE 本地数据库目录 = /home/db2inst1 数据库版本级别 = d.00 注释 = 目录条目类型 = 间接目录数据库分区号 = 0 备用服务器主机名 = 备用服务器端口号 =
  • 好的,这就是你的答案。您的数据库名称是 SAMPLE,而不是 INST1 或 DB2INST1。将其放入您的 JDBC URL。

标签: database jsp db2


【解决方案1】:

已经有一段时间了,但是其他人正在寻找这个 db2 连接问题的解决方案。如果人们想测试他们的开发机器到 db2 服务器的物理连接,请使用 DB2 驱动程序附带的 CLPPlus 并手动输入连接参数以确保您具有物理连接。我的环境与上述 Garret 的环境完全不同,但我想再提供一条线索来帮助人们建立联系。我在 SSIS 中使用 VS 2015 企业版。我使用 CLPPlus 确认物理连接,然后开始尝试将 ADO.Net 源连接到 db2。我必须覆盖我的服务器凭据 db2server.mydomain.com:523 的端口才能将端口覆盖为 523。然后发生了一些有趣的事情。 SSIS 对连接大惊小怪,我开始查看参数。其中一个参数是身份验证,您可能可以在 jdbc 中对其进行编码。我将 DB2(而不是 ldap 或其他钱包)作为 Authentication 的值,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多