【问题标题】:DB2 can't connect to the serverDB2 无法连接到服务器
【发布时间】:2016-01-07 12:05:03
【问题描述】:

我想在 Windows 7 机器上设置一个 db2 服务器,但我无法从远程连接到数据库,只能从本地连接。我想我可能会错过一些配置。

1) 我关闭了防火墙 2)我的数据库信息是:

数据库 2 条目:

 Database alias                       = SAMPLE
 Database name                        = SAMPLE
 Local database directory             = C:
 Database release level               = f.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

netstat -a 命令的部分输出是:

  TCP    [::]:49155             WIN-whatever:0      LISTENING
  TCP    [::]:49164             WIN-whatever:0      LISTENING
  TCP    [::]:49165             WIN-whatever:0      LISTENING
  TCP    [::]:50000             WIN-whatever:0      LISTENING

如果我 ping 我的服务器,客户端没有响应 另外,如果我用nmap -sV <server_ip_address> 扫描它,它不会返回我打开的端口和使用它的服务

为了连接,我从客户端运行以下命令:

db2 list node directory
SQL1027N  The node directory cannot be found.

catalog tcpip node <i am not sure what does here> remote <server_ip_address> server <port_number> 

no output

这意味着有问题。我为节点尝试了几件事,但没有任何效果 我不知道发生了什么以及如何解决它。

感谢您的帮助

【问题讨论】:

    标签: database db2 database-connection


    【解决方案1】:

    首先,您无法 ping 服务器并且nmap 看不到打开的端口这一事实意味着您的问题,至少在这一点上,出在 DB2 之外。解决网络问题后,您可以按照以下过程通过 TCP/IP 设置到 DB2 数据库的远程连接。

    1) 可选。您可以使用服务名称或端口号来配置 DB2 实例。如果要使用服务名称,在服务器上/etc/services 中添加类似于db2c_db2inst1 50000/tcp 的行,将服务名称“db2c_db2inst1”分配给端口 50000。

    2) 在服务器上 更新 DB2 实例配置:db2 update dbm cfg using svcename db2c_db2inst1(或 db2 update dbm cfg using svcename 50000,如果不使用服务名称)。验证:db2 get dbm cfg | grep SVCENAME

    3) 在服务器上更新 DB2 注册表变量:db2set DB2COMM=TCPIP。验证:db2set DB2COMM

    4) 在服务器上重启实例:发出db2stop force,然后发出db2start

    5) 在远程客户端,假设已安装 DB2 客户端软件,请发出 db2 catalog tcpip node whatever remote &lt;your server IP address&gt; service &lt;your DB2 port number&gt;。请注意,节点名称(本例中为“whatever”)限制为 8 个 ASCII 字符。

    6) 在远程客户端 issue db2 catalog database &lt;your database name&gt; at node whatever,指的是您在步骤 5 中定义的节点名称(“随便”)。

    7) 在远程客户端验证连接:db2 connect to &lt;your database name&gt; user &lt;user name&gt; using &lt;password&gt;

    【讨论】:

    • 非常感谢您的详细回答。它在我的 MacOS 上运行良好。 (一个小问题是可能需要打开 50000 端口)
    • 有一点需要注意:“whatever”的最大长度为 8 个字符。我尝试了一个 10 个字符的名称,并不断收到 SQL0104N An unexpected token "..." was found following "NODE".
    【解决方案2】:

    尝试在实例端口上执行 telnet 以检查从客户端到服务器的一切是否正确

    telnet DB2-Server-name 50000
    

    其中 DB2-Server-name 是服务器名称或 IP 地址。确保您可以获取服务器。 50000 是最常用的 DB2 端口,但您必须检查配置。

    连接到服务器后,您可以使用之前的答案配置节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 2018-05-31
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      相关资源
      最近更新 更多