
简介DB2 V11.1 是 IBM 面向大型企业推出的企业级关系型数据库管理系统本资源为专为 Linux 环境打包的完整安装介质适合需要在 Linux 服务器上搭建数据库服务的运维工程师、DBA 及数据库学习者使用。压缩包共 405 个文件约 772.77MB涵盖 cat 消息目录、gz 压缩组件、mo 多语言资源、so 动态库、java 与 jar 工具、db2setup 与 db2_install 安装脚本、db2prereqcheck 环境预检程序以及 expc 系列多语言帮助文件等结构完整覆盖安装、配置、卸载与升级各环节。目前已有 2644 人学习下载。借助该资源读者可完成从系统预检、实例创建到数据库日常运维的完整实践并借助 db2pd、db2look、db2top 等工具深入理解性能调优、备份恢复与跨平台迁移思路是 Linux 下部署 DB2 V11.1 的实用参考。1. DB2 V11.1 下载前的环境账为什么你装完连实例都起不来很多人以为 DB2 V11.1 下载完、双击安装包、一路下一步就完事了结果装到一半报依赖缺失或者装完连实例都创建不了。我见过最典型的一次翻车是在一台 Windows 10 上装完 DB2服务列表里能看到实例但db2start死活起不来日志里只丢一句模糊的通信错误。折腾半天才发现系统补丁版本和安装包要求的运行库对不上。DB2 这东西不像某些轻量数据库它对操作系统版本、内核参数、用户权限、文件系统都有硬性要求装之前不把环境账算清楚后面全是玄学问题。这篇笔记面向的是需要在 Linux 或 Windows 10 上把 DB2 V11.1 跑起来的开发者尤其是第一次接触 DB2、被安装过程卡住的人。我会把下载、依赖检查、安装、实例创建、验证这条链路拆开每一步都给出可抄的命令和参数说明最后再讲怎么确认它真的能连、能用。2. 下载与版本选择DB2 V11.1 在 Linux 和 Windows 10 上的安装包差异2.1 先确认你要的是哪种安装形态DB2 V11.1 的安装包按平台和用途分好几种选错了后面全是返工。常见的有三类服务器版Server、客户端版Client、以及开发者版Developer Edition。服务器版用来跑实例、建库客户端版只用来连远程实例开发者版功能接近服务器版但授权限制在开发测试场景。如果你只是本地学习或者做开发联调开发者版够用如果要模拟生产环境直接上服务器版。Linux 上还要再分发行版和架构。DB2 V11.1 对 RHEL、SLES、Ubuntu 都有对应包x86_64 和 ppc64le 的包也不一样。Windows 10 上相对简单主要是一个可执行安装文件但要注意 32 位和 64 位的区别现在基本都用 64 位。提示下载前先确认操作系统版本在 IBM 官方支持列表里。DB2 V11.1 对内核版本、glibc 版本有最低要求版本太低装不上版本太高也可能出兼容问题。2.2 Linux 下的依赖检查与安装包获取Linux 上装 DB2 V11.1第一步不是急着解压安装包而是把依赖补齐。我一般会先跑一遍依赖检查脚本这个脚本在安装包解压后的目录里名字类似db2prereqcheck。它会告诉你缺哪些库、哪些内核参数不达标。# 解压安装包以 tar.gz 为例 tar -zxvf v11.1_linuxx64_server_dec.tar.gz # 进入解压后的目录 cd server_dec # 执行依赖检查-l 表示只检查当前系统-v 输出详细结果 ./db2prereqcheck -l -vdb2prereqcheck会逐项检查内核参数、内存、磁盘空间、rpm 包依赖。输出里标 FAIL 的必须解决标 WARN 的看情况处理。常见 FAIL 包括缺少libaio、libstdc版本过低、semmni或shmmax内核参数不达标。缺 rpm 包就用yum install或apt install补内核参数要改/etc/sysctl.conf。# 以 RHEL/CentOS 为例补常见依赖 yum install -y libaio libstdc numactl # 调整内核参数追加到 /etc/sysctl.conf echo kernel.sem 250 32000 32 1024 /etc/sysctl.conf echo kernel.shmmax 68719476736 /etc/sysctl.conf echo kernel.shmall 4294967296 /etc/sysctl.conf # 生效 sysctl -pkernel.sem四个值分别是信号量集合上限、系统级信号量上限、每个信号量的最大操作数、信号量集合最大数。kernel.shmmax是单个共享内存段最大字节数DB2 建实例时会用到。这些值不是随便写的要结合物理内存来算内存大的机器可以适当调高。Windows 10 上不需要手动调这些内核参数但要注意关闭或放行防火墙对 DB2 端口默认 50000的限制否则后面客户端连不上。2.3 Windows 10 下的安装包获取与前置检查Windows 10 上获取 DB2 V11.1 安装包后先别双击。右键看属性确认文件没有被打上“来自网络”的锁定标记有的话勾选解除锁定。然后检查系统盘剩余空间DB2 服务器版装完加上实例、数据库至少留 20GB 以上。内存建议 4GB 起步8GB 更稳。还要确认当前登录用户有管理员权限DB2 安装过程要写注册表、装服务、创建用户组。如果公司电脑有安全软件拦截服务安装提前加白名单不然装到一半服务注册失败回滚都回不干净。注意Windows 10 家庭版和专业版对 DB2 的支持有差异家庭版缺少某些组策略和用户管理功能装服务器版可能遇到权限问题。开发用途建议用专业版或企业版。3. Linux 下安装 DB2 V11.1从解压到实例创建3.1 用 db2setup 还是静默安装Linux 下装 DB2 V11.1 有两种方式图形化db2setup和静默安装db2_install。有图形界面的机器可以用db2setup但服务器上一般没图形环境我习惯用静默安装可控、可重复、出问题好排查。# 进入安装包目录 cd server_dec # 静默安装-t 指定安装路径-l 指定日志文件 ./db2_install -t /opt/ibm/db2/V11.1 -l /tmp/db2_install.log-t是安装目标路径不指定的话默认装在/opt/ibm/db2/V11.1。-l是安装日志装完一定要看一眼确认没有 ERROR。静默安装不会自动创建实例实例要单独建。安装完成后需要把 DB2 的环境变量引入当前 shell。DB2 提供了一个脚本db2profile在实例用户的家目录下。# 切换到实例用户通常用 db2inst1 su - db2inst1 # 引入 DB2 环境变量 . ~/sqllib/db2profile # 验证 db2 命令可用 db2leveldb2level会输出当前 DB2 的版本和补丁级别能正常输出说明环境变量生效了。3.2 创建实例和数据库实例是 DB2 的运行单元一个实例下可以建多个数据库。创建实例用db2icrt命令需要 root 权限或者有 sudo 权限的用户来执行。# 创建实例-u 指定实例用户的家目录 /opt/ibm/db2/V11.1/instance/db2icrt -u db2inst1 db2inst1db2icrt第一个参数是实例名-u指定实例所有者的家目录。执行前要确保db2inst1用户已经存在且家目录路径正确。创建完实例后用db2start启动实例。# 切换到实例用户 su - db2inst1 # 启动实例 db2start # 创建数据库指定字符集和 territory db2 CREATE DATABASE testdb USING CODESET UTF-8 TERRITORY CNdb2start启动实例后db2 list db directory能看到实例下的数据库列表。建库时USING CODESET UTF-8指定字符集TERRITORY CN指定区域影响日期格式、排序规则等。建完库用db2 connect to testdb测试连接。3.3 配置远程连接和端口默认情况下 DB2 只监听本地连接要让其他机器连过来需要配置 TCP/IP 服务。# 查看当前实例的 TCP/IP 配置 db2 get dbm cfg | grep -i svcename # 设置服务名和端口 db2 update dbm cfg using svcename db2c_db2inst1 # 在 /etc/services 里注册端口 echo db2c_db2inst1 50000/tcp /etc/services # 重启实例使配置生效 db2stop force db2startsvcename是服务名要和/etc/services里的条目对应。端口默认用 50000也可以改成其他未被占用的端口。改完必须重启实例否则配置不生效。远程客户端连接时用db2 catalog tcpip node命令把服务端节点信息登记到本地。4. Windows 10 下安装 DB2 V11.1图形界面与响应文件4.1 图形化安装的关键选项Windows 10 上双击安装包后会进入图形化安装向导。前面几步是许可协议、安装类型选择关键是“安装类型”这一步。选“典型”会装默认组件选“自定义”可以去掉不需要的功能比如 Spatial Extender、pureXML 这些用不上的可以取消省空间也省安装时间。安装路径默认在C:\Program Files\IBM\SQLLIB如果 C 盘空间紧张可以改到其他盘。但路径里不要有中文和空格DB2 对路径字符比较敏感中文路径可能导致实例创建失败。向导最后会问是否创建实例。如果勾选“创建实例”安装完会自动建一个默认实例实例名通常是DB2。我一般不在安装时建实例而是装完手动用db2icrt建这样实例名、用户、路径都可控。4.2 用响应文件做静默安装如果要在多台 Windows 10 上批量装图形化点来点去不现实。DB2 支持用响应文件做静默安装。安装包目录里有一个db2server.rsp模板复制一份改关键参数。# db2server.rsp 关键参数示例 PROD DB2_SERVER_EDITION LIC_AGREEMENT ACCEPT INSTALL_TYPE CUSTOM INSTALL_PATH C:\Program Files\IBM\SQLLIB COMP DB2_SERVER_EDITION LANG ENPROD指定产品版本LIC_AGREEMENT ACCEPT表示接受许可INSTALL_TYPE选 CUSTOM 可以配合COMP指定组件。改完用命令行执行安装。# 以管理员身份打开 cmd执行静默安装 setup.exe /s /f db2server.rsp /l C:\db2_install.log/s表示静默模式/f指定响应文件/l指定日志。装完检查日志里有没有 ERROR。静默安装不会自动建实例实例创建还是用db2icrt。4.3 Windows 下创建实例与验证Windows 下创建实例的命令和 Linux 一样但路径不同。# 进入 DB2 安装目录的 instance 子目录 cd C:\Program Files\IBM\SQLLIB\instance # 创建实例 db2icrt -u db2inst1 db2inst1Windows 下实例用户需要提前在“计算机管理”里创建并加入 DB2 相关的用户组。创建完实例后在服务列表里能看到DB2 - DB2COPY1 - db2inst1这样的服务启动它。# 启动实例 db2start # 建库测试 db2 CREATE DATABASE testdb USING CODESET UTF-8 TERRITORY CN # 连接测试 db2 connect to testdb能连上并执行db2 SELECT CURRENT DATE FROM sysibm.sysdummy1返回结果说明实例和数据库都正常。5. 避坑与排查DB2 V11.1 安装过程中最常见的五个问题5.1 实例启动失败报 SQL1042C现象db2start返回 SQL1042C提示通信错误或实例无法启动。原因通常是实例所有者的家目录权限不对或者db2profile没生效或者端口被占用。解决先确认db2inst1用户家目录权限是 755且.bashrc或.profile里引入了sqllib/db2profile。然后检查/etc/services里注册的端口有没有被其他进程占用用netstat -tlnp | grep 50000看。如果端口被占换一个端口重新配置svcename。5.2 建库时报 SQL1052N现象CREATE DATABASE返回 SQL1052N提示数据库路径不存在或空间不足。原因DB2 默认把数据库建在实例家目录下的NODE0000目录里如果那个路径所在分区空间不够或者路径权限不对就会报这个错。解决建库时用ON /path/to/dbdir显式指定数据库路径确保路径存在、有写权限、空间充足。或者提前把实例家目录迁到空间大的分区。5.3 远程连接报 SQL30081N现象客户端连服务端时报 SQL30081N提示通信协议错误。原因服务端没开 TCP/IP 监听或者防火墙拦了端口或者客户端 catalog 的节点信息不对。解决服务端确认db2 get dbm cfg | grep svcename有值且实例已重启。防火墙放行对应端口。客户端用db2 list node directory检查节点信息不对就db2 uncatalog node再重新db2 catalog tcpip node。5.4 Windows 下安装回滚不干净现象安装失败后重新安装提示已有实例或组件冲突。原因DB2 安装失败时可能残留注册表项、服务、用户组直接重装会冲突。解决先用 IBM 提供的卸载工具彻底清理或者手动删注册表HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2下的相关项删服务删用户组。清理完重启再装。5.5 字符集不匹配导致乱码现象建库时没指定字符集插入中文后查询显示乱码。原因默认字符集可能是 ISO8859-1不支持中文。解决建库时显式指定USING CODESET UTF-8 TERRITORY CN。已经建好的库如果字符集不对只能删库重建DB2 不支持直接改数据库字符集。6. 装完怎么验证三条命令确认 DB2 V11.1 真的能跑装完 DB2 V11.1 之后别急着写代码先用三条命令确认环境真的可用。第一条db2level确认版本和补丁级别。第二条db2start后跟db2 list db directory确认实例启动、数据库列表能读出来。第三条db2 connect to testdb然后执行一条简单查询确认连接和 SQL 执行都正常。# 第一条确认版本 db2level # 第二条启动实例并查看数据库列表 db2start db2 list db directory # 第三条连接数据库并执行查询 db2 connect to testdb db2 SELECT CURRENT TIMESTAMP FROM sysibm.sysdummy1 db2 terminatedb2level输出里会包含DB2 v11.1.0.0这样的版本信息补丁级别也会显示。db2 list db directory能列出实例下所有数据库如果列表为空但实例已启动说明还没建库。db2 connect to testdb成功后会提示Database Connection Information然后执行查询能返回当前时间戳说明实例、数据库、连接、SQL 引擎整条链路都通了。我一般还会多跑一步用db2 get dbm cfg看一眼实例配置确认svcename、diagnostic level、maxagents这些关键参数符合预期。尤其是diagnostic level默认是 3如果排查问题需要更详细日志可以临时调到 4但调完记得改回来不然日志涨得飞快。提示验证完记得db2 terminate断开连接不然连接会一直挂着占用实例资源。从那以后我每次装完 DB2不管多急都会把这三条命令走一遍确认版本、实例、连接都没问题再交给开发用。希望帮到你。本文还有配套的精品资源点击获取