【发布时间】: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
我通过执行db2stop 和db2start 重置数据库
最后,我运行netstat -tulpn 并看到数据库正在侦听端口 60000。输出如下:
tcp 0 0 0.0.0.0:60000 0.0.0.0:* 听
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
【问题讨论】:
-
首先,DCS 目录用于 z/OS 上的 DB2(在您包含的链接中说明),因此更改它不会对您的情况产生太大影响。其次,您可能混淆了 DB2 实例名称和数据库名称。你能在服务器上显示
db2 list db directory的输出吗? -
在服务器上,我在 ssh 开启后下降了一个级别。我得到 4 个名为
<USERNAME>, 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。