让我先说一句,我对这种事情完全是新手。总之...
我试图连接到一个DB2数据库,服务器运行在Ubuntu 12.04和Apache Tomcat 7上。服务器运行在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.comsupportdocview.wss?uid=swg21443723。
它提到了使用目标目录名,通过发出的 db2 list dcs directory
命令。
在服务器上,我的最初是空白的,但我使用了 db2 catalog dcs database DB2INST1 as INST1
命令,现在我使用db2 list dcs目录`的输出如下:
现在我使用db2 list dcs目录`的输出如下。
数据库连接服务(DCS)目录
目录中的条目数=1
DCS 1条目。
本地数据库名称=DB2INST1
目标数据库名称=INST1
申请人姓名=
DCS参数=
评论=
DCS目录发布级别=0x0100
我通过以下方式重置数据库 db2stop
和 db2start
最后,我跑 netstat -tulpn
并看到数据库在60000端口监听。输出如下。
tcp 0 0 0 0.0.0.0:60000 0.0.0.0:* LISTEN.
2949db2sysc
这是我得到的最多的信息。据我所知,我使用的是目标数据库名称,并试图连接到正确的端口号。
我是否在这里找对了树?任何帮助都是非常感激的。
** 编辑:对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
已经有一段时间了,但是对于其他正在寻找解决这个db2连接问题的人来说。 如果大家想测试自己的开发机与db2服务器的物理连接,可以使用db2驱动自带的CLPPlus,然后手动输入连接参数,确保你有物理连接。 我的环境和上面Garret的环境很不一样,但我想再提供一条线索,也许能帮助大家连接。 我当时使用的是VS 2015企业版与SSIS。 我使用CLPPlus确认物理连接,然后开始尝试连接和ADO.Net源到db2。 我不得不为我的服务器凭证db2server.mydomain.com:523覆盖端口到523。 然后有趣的事情发生了。 SSIS对连接大惊小怪,我开始看参数。 其中一个参数是Authentication,你也许可以用jdbc来编码。 我把DB2(而不是ldap或其他钱包)作为Authentication的值,结果成功了。