如何识别 DB2 端口号
Posted
技术标签:
【中文标题】如何识别 DB2 端口号【英文标题】:How to identify DB2 port number 【发布时间】:2012-01-04 18:52:32 【问题描述】:我必须使用端口号在 java 中建立 DB2 连接。 DB2中是否有任何命令或任何方式可以获得DB2端口号?
在进行 DB2 连接时,我没有使用默认端口 50000,因为此端口可以在 DB2 安装期间更改。 请建议任何 DB2 命令或任何其他替代方法。
【问题讨论】:
如果您使用的是 linux 机器,您可以尝试netstat -pn | grep -i db
列出 DB2 正在侦听的所有端口。
我认为 Windows 也会有类似的东西。
【参考方案1】:
转到 DB2 命令提示符。
发出命令获取db2实例
命令:db2 获取实例
发出命令查找 TCP/IP 服务名称
命令:db2 get dbm cfg | grep SVCE
示例
db2 获取 dbm 配置文件 | grep SVCE
TCP/IP 服务名称 (SVCENAME) = db2c_db2inst9 TCP/IP 服务名称是“db2c_db2inst9”
使用 TCP/IP 服务名在 /etc/services 文件中查找端口号
命令:grep TCP/IPservicename /etc/services
将 TCP/IPservicename 更改为当前服务名称。
示例
grep db2c_db2inst9 /etc/services
db2c_db2inst9 50090/tcp
DB2 实例在端口号 50090
上运行【讨论】:
这对我有用,只是使用:db2 get dbm cfg。然后往下看,我看到了我的端口,它是 50000。【参考方案2】:在 Linux/Unix DB2 服务器上,打开 shell 终端并使用实例所有者登录。执行以下命令:
db2 "get dbm cfg"|grep -i svce
就像 Ian Bjorhvde 的回答一样,您显示了 TCP/IP 服务名称, SVCENAME 可以在文件 /etc/service 中查看。
【讨论】:
这仅适用于当前实例。如果需要更改每个实例以获取服务名称,并在服务文件中匹配它。【参考方案3】:这将给出机器上安装的所有 db2 实例的端口(对于 Linux 或 AIX 系统)
netstat -aan | grep -i db2
【讨论】:
就我而言,它在 AIX 上不返回任何内容。字符串 'db2' 与正在侦听的端口无关。【参考方案4】:您的服务器中可能有不同的实例,这意味着 DB2 正在侦听不同的端口。 首先,您必须列出服务器中的实例
db2ilist
您将获得一组实例名称。对于每一个,您都必须获取端口名称
窗户
set DB2INSTANCE=instname
db2 get dbm cfg
Linux
export DB2INSTANCE=instname
db2 get dbm cfg
如果不更改实例,则只会获取当前实例的服务名称。 从客户端获取该信息的另一种方法是通过配置助手 (db2ca)。在高级视图中,您右键单击一个实例,然后您将获得该实例的详细信息:端口号、服务名称等。
【讨论】:
【参考方案5】:在 Windows DB2 服务器上,打开 DB2 命令窗口并执行命令
db2 get database manager configuration | findstr /i svce
这应该提供一些输出,例如:
TCP/IP Service name (SVCENAME) = db2c_DB2
SSL service name (SSL_SVCENAME) =
SVCENAME 是 DB2 正在侦听的端口。要将此名称解析为实际端口号,您需要参考位于%SystemRoot%\system32\drivers\etc\services
的服务文件。
【讨论】:
这仅适用于当前实例。有必要附加到服务器中的每个实例,以便了解“服务”文件中定义的 DB2 实例的所有端口。 @DurgadasKamath 需要详细说明吗? 在 DB2 命令编辑器中,该命令给了我一个错误,但“获取数据库管理器配置”(没有前导“db”并且没有管道命令)有效。在那里我可以手动搜索 svcename。以上是关于如何识别 DB2 端口号的主要内容,如果未能解决你的问题,请参考以下文章