AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 310429
Accepted
folow
folow
Asked: 2022-04-02 02:47:45 +0800 CST2022-04-02 02:47:45 +0800 CST 2022-04-02 02:47:45 +0800 CST

无法建立从 db2 客户端到 db2 服务器 v11.5 的连接

  • 772
  1. 我在 Windows 10 上使用 VirtualBox 在我的虚拟 PC 内的 Linux/x86_64 上安装了 Db2 v11.5.7.0。
  2. 我创建了名为 TEST1 的数据库
  3. 我使用 Unix 套接字连接到数据库: db2 connect to TEST1 并且连接成功完成。
  4. 检查 DB2COMM 设置: db2set DB2COMM 输出为 DB2COMM=TCPIP
  5. 只是为了确保 TCP/IP 连接对 Db2 有效,我创建了本地节点和目录数据库:
db2 catalog tcpip node loctcp remote localhost server 50000
db2 catalog database test1 as tcptest1 at node loctcp
db2 terminate
db2 connect to tcptest1 user db2inst1 using <password>

并成功完成连接。

  1. 现在在我的 PC VirtualBox Windows 10 主机上,我设置端口转发主机端口:60127 和访客端口:50000。
  2. 在我的 Windows PC 上: netstat -an -p tcp | find ":60127" 我可以看到连接处于 LISTENING 状态。
  3. 在我的 Windows PC 上:
db2 catalog tcpip node remtcp remote localhost server 60127
db2 catalog database test1 as tcptest1 at node remtcp
db2 terminate
  1. 在我的 Windows PC 上连接到数据库

db2 connect to tcptest1 user db2inst1 using <password>

问题:看起来连接挂起。几分钟后,我在 Db2 客户端中遇到错误:

SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“127.0.0.1”。检测错误的通信功能:“recv”。协议特定错误代码:“10054”、“*”、“0”。SQLSTATE=08001

  1. 试图理解问题。在 Linux 服务器上:a) 我已经检查了防火墙并且它被禁用了。b) IPv6 已禁用 c) Db2 正在使用 IPv4 侦听 50000 端口
  2. Windows 上的 Wireshark 监听 60127 端口。a) TCP 连接已建立 b) Db2 DRDA 连接从未出现。
  3. Linux 服务器上的 Tcpdump 捕获 50000 端口网络流量。a) TCP 连接已建立 b) Db2 DRDA 连接从未出现。

Linux 虚拟机内部似乎出现了问题,但第 4 步和第 5 步对于 Db2 TCP/IP 连接应该一切正常。

知道还有什么可以检查为什么 Db2 客户端连接不起作用吗?

PS 我与 Db2 v11.1 安装完全相同,我的 PC 上的 Db2 连接工作正常。

db2 connectivity
  • 1 1 个回答
  • 381 Views

1 个回答

  • Voted
  1. Best Answer
    folow
    2022-04-04T23:00:52+08:002022-04-04T23:00:52+08:00

    我已经解决了这个问题。这是防火墙问题。

    我对第 10 步的假设是错误的。我只检查了 iptables 规则:

    sudo iptables -nvL
    

    允许所有策略,所以我假设防火墙被禁用(或没有效果)。

    但是启用并运行了另一个防火墙firewalld服务:

    sudo systemctl status firewalld
    

    我已停止并禁用它:

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    sudo systemctl mask firewalld
    

    或者,我可以添加防火墙异常来允许我的 Db2 服务的 50000 端口,而不是上述三个命令:

    firewall-cmd --add-port=50000/tcp
    

    注意:我的步骤 11 和 12 是错误的假设。我已经更详细地分析了网络数据包。我看到仅从 Db2 Windows 客户端收到 TCP SYN 数据包,并且没有从 Db2 服务器机器返回客户端的 TCP SYN/ACK 响应。没有建立 TCP 连接(因为它被防火墙阻止了),显然不能建立任何 DRDA 协议,因为依赖于 TCP 连接。

    • 0

相关问题

  • 从 DB2 迁移到 MySQL

  • 解释计划中的 TBSCAN GERROW 是什么意思?

  • 在 DB2 SQL 中模拟类似 REGEXP 的行为

  • z/OS 上 DB2 v9 上的 BLOB

  • 解释计划中的 HSJOIN 是什么意思?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve