在 Red Hat 8.8 上,我安装了 Db2 v11.5.8.0 并且数据库工作正常。
- 今天我下载了v11.5.9.0并解压了tar文件。
- 我执行了
db2prereqcheck
并且满足了所有先决条件。成功的。 - 使用
db2_install
命令安装 Db2。成功的。 - 使用命令升级实例
db2iupdt
。成功的。 - 然后我尝试启动一个实例,并
db2start
出现错误:db2start:加载共享库时出错:libaws-cpp-sdk-transfer.so:无法打开共享对象文件:没有这样的文件或目录
看起来有些库丢失了。我尝试在网上搜索,但找不到如何安装该库。任何想法?
确保已安装 libxml2 和 libcurl。这些包是必需的,但未使用 db2prereqcheck 进行验证。
我已经找出问题所在并解决了问题。
实际上,我在这台测试机上的 Linux 发行版是 Rocky Linux 8.8。我使用 Rocky Linux 已经有几年了,在 Db2 服务器上没有任何问题。但是...在 v11.5.9.0 中,这就是问题的根源。尽管 Rocky Linux 与 Red Hat 8.8 的 bug 兼容,但仍然可能存在问题。例如,因为 /etc/os-release 中写入了发行版的名称和版本,所以 Rocky Linux 和 Red Hat 之间仍然有所不同。
不针对问题。看起来 Db2 v11.5.9.0 在安装中添加了一些 Amazon 库,但它们取决于 Linux 发行版名称和版本!
要检查返回错误的库:
返回以下路径(在 Red Hat 8.8 或 Red Hat 9.3 上的 Db2 v11.5.9.0 上)。
以上文件是由 Db2 v11.5.9.0 安装创建的!请注意,路径名包含 Linux 发行版名称。问题在于最后一个文件,实际上它是 Linux 符号链接,在不同的 Linux 发行版上指向不同的上述文件路径。在 Red Hat 8.8 上,它指向 awssdk/RHEL/8.1/libaws-cpp-sdk-transfer.so 路径,在 Red Hat 9.3 上,它指向路径 awssdk/RHEL/9.2/libaws-cpp-sdk-transfer.so。
但在 Rocky Linux 8.8 和 Rocky Linux 9.2 上,此符号链接不是由 Db2 v11.5.9.0 安装创建的。它不见了。
我还检查了其他 libaws*.so 库,但发现其中很少。
在使用 Db2 v11.5.9.0 的 Rocky Linux 8.8 上,我创建了以下符号链接:
在 Rocky Linux 9.3 上,使用 Db2 v11.5.9.0 我创建了以下符号链接
然后使用 db2start 命令启动 Db2 实例,数据库实例启动没有问题。
注意:几天后,我在以下发行版上安装了 Db2 v11.5.9.0:Red Hat 8.8、Red Hat 9.3、Rocky Linux 8.8 和 Rocky Linux 9.3,现在 Db2 已在所有发行版上正常运行。
有两点很有趣: