连接到远程DB2数据库(JSP)

时间:2014-02-09 22:08:38

标签: database jsp db2

让我先说这是我对这种事情的全新。不管怎么说..

我正在尝试连接到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:* LISTEN

     

2949 / db2sysc

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

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

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

在服务器上,我在ssh后进入了一个级别。我得到4个名为<USERNAME>, 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

1 个答案:

答案 0 :(得分:0)

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