【DB2 数据库】00 模拟故障排查系列:环境准备
这篇文章用于搭建一套可重复使用的 DB2 故障演练环境,目标不是单纯把数据库装起来,而是提前把数据盘、备份盘和用户体系准备好,方便后续继续做故障模拟与恢复练习。
背景
因为工作需要学习 DB2 数据库运维,但生产环境不适合频繁制造故障,所以更合理的方式是先搭一套测试环境,再手动模拟问题进行演练。
环境说明
系统版本

- 准备的环境为
SUSE Linux Enterprise Server 12 (x86_64) SP5 DB2软件版本为v9.7 FP6

当前只有一个系统盘。为了尽量模拟生产环境布局,这里额外添加两块硬盘,一块作为 DB2_DATA,一块作为 DB2_BACKUP。
两块盘分别创建各自独立的 LVM,避免后面做故障演练时互相影响。


如果 lsblk 没有立刻显示新盘,可以先重新扫描 SCSI 总线:
for host in /sys/class/scsi_host/host*/scan; do echo "- - -" | sudo tee $host; done创建数据盘和备份盘
1. 创建 DB2_DATA 的 LVM
DB2Server:~ # pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
# 创建VG
DB2Server:~ # vgcreate VG_DB2_DATA /dev/sdb
Volume group "VG_DB2_DATA" successfully created
# 创建LV
DB2Server:~ # lvcreate -l 100%FREE -n LV_DB2_DATA VG_DB2_DATA
Logical volume "LV_DB2_DATA" created.
# # 格式化逻辑卷为 ext4
DB2Server:~ # mkfs.ext4 /dev/VG_DB2_DATA/LV_DB2_DATA
mke2fs 1.43.8 (1-Jan-2018)
丢弃设备块: 完成
创建含有 7863296 个块(每块 4k)和 1966080 个inode的文件系统
文件系统UUID:f3ef598f-af2c-4daf-8ec6-461ce8e1f077
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
正在分配组表: 完成
正在写入inode表: 完成
创建日志(32768 个块)完成
写入超级块和文件系统账户统计信息: 已完成2. 创建 DB2_BACKUP 的 LVM
# 创建PV
DB2Server:~ # pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
# 创建VG
DB2Server:~ # vgcreate VG_DB2_BACKUP /dev/sdc
Volume group "VG_DB2_BACKUP" successfully created
# 创建LV
DB2Server:~ # lvcreate -l 100%FREE -n LV_DB2_BACKUP VG_DB2_BACKUP
Logical volume "LV_DB2_BACKUP" created.
# # 格式化逻辑卷为 ext4
DB2Server:~ # mkfs.ext4 /dev/VG_DB2_BACKUP/LV_DB2_BACKUP
mke2fs 1.43.8 (1-Jan-2018)
丢弃设备块: 完成
创建含有 7863296 个块(每块 4k)和 1966080 个inode的文件系统
文件系统UUID:f3ef598f-af2c-4daf-8ec6-461ce8e1f077
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
正在分配组表: 完成
正在写入inode表: 完成
创建日志(32768 个块)完成
写入超级块和文件系统账户统计信息: 已完成创建挂载点并写入自动挂载
这一步除了挂载文件系统,也顺手把后面安装 DB2 需要的用户和用户组准备好。
DB2Server:~ # mkdir -p /DB2_DATA
DB2Server:~ # mkdir -p /DB2_BACKUP
DB2Server:~ # groupadd -g 901 db2iadm1
DB2Server:~ # groupadd -g 902 db2fadm1
DB2Server:~ # groupadd -g 903 db2dadm1
DB2Server:~ # useradd -g db2iadm1 -u 101 -d /home/db2inst1 -m db2inst1
DB2Server:~ # useradd -g db2fadm1 -u 102 -d /home/db2fenc1 -m db2fenc1
DB2Server:~ # useradd -g db2dadm1 -u 103 -d /home/db2dasusr1 -m db2dasusr1
DB2Server:~ # passwd db2inst1
新的 密码:
无效的密码: 密码基于一个词典里的单词呀
重新输入新的 密码:
passwd:已成功更新密码
DB2Server:~ # passwd db2fenc1
新的 密码:
无效的密码: 密码基于一个词典里的单词呀
重新输入新的 密码:
passwd:已成功更新密码
DB2Server:~ # passwd db2dasusr1
新的 密码:
无效的密码: 密码基于一个词典里的单词呀
重新输入新的 密码:
passwd:已成功更新密码
DB2Server:~ # more /etc/group | grep db2
db2iadm1:x:901:
db2fadm1:x:902:
db2dadm1:x:903:
DB2Server:~ # more /etc/passwd | grep db2
db2inst1:x:101:901::/home/db2inst1:/bin/bash
db2fenc1:x:102:902::/home/db2fenc1:/bin/bash
db2dasusr1:x:103:903::/home/db2dasusr1:/bin/bash
DB2Server:~ # chown -R db2inst1:db2iadm1 /DB2_DATA/
DB2Server:~ # chown -R db2inst1:db2iadm1 /DB2_BACKUP/
DB2Server:~ # vim /etc/fstab
DB2Server:~ # cat /etc/fstab
/dev/system/swap swap swap defaults 0 0
/dev/system/root / ext4 acl,user_xattr 1 1
/dev/system/home /home ext4 acl,user_xattr 1 2
/dev/VG_DB2_DATA/LV_DB2_DATA /DB2_DATA/ ext4 defaults 0 0
/dev/VG_DB2_BACKUP/LV_DB2_BACKUP /DB2_BACKUP/ ext4 defaults 0 0
DB2Server:~ # mount -a
DB2Server:~ # df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 7.7G 8.0K 7.7G 1% /dev
tmpfs tmpfs 7.8G 80K 7.8G 1% /dev/shm
tmpfs tmpfs 7.8G 18M 7.7G 1% /run
tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/system-root ext4 9.8G 4.6G 4.7G 50% /
/dev/mapper/system-home ext4 25G 45M 24G 1% /home
tmpfs tmpfs 1.6G 20K 1.6G 1% /run/user/484
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/mapper/VG_DB2_DATA-LV_DB2_DATA ext4 30G 45M 28G 1% /DB2_DATA
/dev/mapper/VG_DB2_BACKUP-LV_DB2_BACKUP ext4 30G 45M 28G 1% /DB2_BACKUP
DB2Server:~ #安装 DB2 数据库
DB2Server:~ # tar -zxvf v9.7fp6_linuxx64_server.tar.gz ^C
DB2Server:~ # cd server/
DB2Server:~/server # ll
总用量 64
drwxr-xr-x 6 bin bin 4096 7月 2 2012 db2
-r-xr-xr-x 1 bin bin 5340 7月 2 2012 db2ckupgrade
-r-xr-xr-x 1 bin bin 5293 7月 2 2012 db2_deinstall
-r-xr-xr-x 1 bin bin 5163 7月 2 2012 db2_install
-r-xr-xr-x 1 bin bin 5127 7月 2 2012 db2ls
-r-xr-xr-x 1 bin bin 5145 7月 2 2012 db2prereqcheck
-r-xr-xr-x 1 bin bin 5145 7月 2 2012 db2setup
drwxr-xr-x 15 bin bin 4096 7月 2 2012 doc
-r-xr-xr-x 1 bin bin 5181 7月 2 2012 installFixPack
DB2Server:~/server # ./db2
db2/ db2ckupgrade db2_deinstall db2_install db2ls db2prereqcheck db2setup
DB2Server:~/server # ./db2_install
WARNING:
The required library file libstdc++.so.5 is not found on the system.
WARNING:
DBT3534W The db2prereqcheck utility determined that ASLR is set to ON and that this could cause issues with some tools.
WARNING:
The 32-bit library file libpam.so is not found on the system.
Check the following web site for the up-to-date system requirements
of IBM DB2 9.7
http://www.ibm.com/software/data/db2/udb/sysreqs.html
http://www.software.ibm.com/data/db2/linux/validate
Aborting the current installation ...
Run installation with the option "-f sysreq" parameter to force the installation.
DB2Server:~/server #安装过程中提示缺少 libstdc++.so.5 和 libpam.so 相关依赖,所以需要先补齐兼容库,再决定是否强制安装。
DB2Server:~/server # wget https://download.opensuse.org/repositories/devel:/gcc/SLE-12/x86_64/libstdc++33-32bit-3.3.3-43.1.x86_64.rpm
--2026-03-20 16:27:58-- https://download.opensuse.org/repositories/devel:/gcc/SLE-12/x86_64/libstdc++33-32bit-3.3.3-43.1.x86_64.rpm
正在解析主机 download.opensuse.org (download.opensuse.org)... 2a07:de40:b250:131:10:151:131:30, 195.135.223.226
正在连接 download.opensuse.org (download.opensuse.org)|2a07:de40:b250:131:10:151:131:30|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://ftp.gwdg.de/pub/opensuse/repositories/devel%3A/gcc/SLE-12/x86_64/libstdc%2B%2B33-32bit-3.3.3-43.1.x86_64.rpm [跟随至新的 URL]
--2026-03-20 16:28:00-- https://ftp.gwdg.de/pub/opensuse/repositories/devel%3A/gcc/SLE-12/x86_64/libstdc%2B%2B33-32bit-3.3.3-43.1.x86_64.rpm
正在解析主机 ftp.gwdg.de (ftp.gwdg.de)... 2a06:93c7:f0::f79, 134.76.12.6
正在连接 ftp.gwdg.de (ftp.gwdg.de)|2a06:93c7:f0::f79|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:194717 (190K) [application/x-redhat-package-manager]
正在保存至: “libstdc++33-32bit-3.3.3-43.1.x86_64.rpm”
100%[==================================================================================================================>] 194,717 97.1KB/s 用时 2.0s
2026-03-20 16:28:04 (97.1 KB/s) - 已保存 “libstdc++33-32bit-3.3.3-43.1.x86_64.rpm” [194717/194717])
DB2Server:~/server # rpm -ivh libstdc++33-32bit-3.3.3-43.1.x86_64.rpm
警告:libstdc++33-32bit-3.3.3-43.1.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 6300dadb: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:libstdc++33-32bit-3.3.3-43.1 ################################# [100%]
DB2Server:~/server # ./db2_install
WARNING:
The required library file libstdc++.so.5 is not found on the system.
WARNING:
DBT3534W The db2prereqcheck utility determined that ASLR is set to ON and that this could cause issues with some tools.
WARNING:
The 32-bit library file libpam.so is not found on the system.
Check the following web site for the up-to-date system requirements
of IBM DB2 9.7
http://www.ibm.com/software/data/db2/udb/sysreqs.html
http://www.software.ibm.com/data/db2/linux/validate
Aborting the current installation ...
Run installation with the option "-f sysreq" parameter to force the installation.
DB2Server:~/server # find /usr/lib -name "libstdc++.so.5*"
/usr/lib/libstdc++.so.5.0.7
/usr/lib/libstdc++.so.5
DB2Server:~/server # find /lib /usr/lib -name "libpam.so*"
/lib/libpam.so.0
/lib/libpam.so.0.83.1
DB2Server:~/server # ln -sf /lib/libpam.so.0 /lib/libpam.so
DB2Server:~/server # ln -sf /usr/lib/libstdc++.so.5.0.7 /usr/lib/libstdc++.so.5DB2Server:~/server # ./db2_install -f sysreq
WARNING:
The required library file libstdc++.so.5 is not found on the system.
WARNING:
DBT3534W The db2prereqcheck utility determined that ASLR is set to ON and that this could cause issues with some tools.
Check the following web site for the up-to-date system requirements
of IBM DB2 9.7
http://www.ibm.com/software/data/db2/udb/sysreqs.html
http://www.software.ibm.com/data/db2/linux/validate
The force option "-f sysreq" is used to force the installation ...
用于安装产品的缺省目录 - /opt/ibm/db2/V9.7
***********************************************************
要选择另一个目录用于安装吗?[是/否]
否
指定下列其中一个关键字以安装 DB2 产品。
AESE
ESE
CONSV
WSE
EXP
PE
CLIENT
RTCL
按“帮助”以重新显示产品名称。
按“退出”以退出。
***********************************************************
ESE
WARNING:
The required library file libstdc++.so.5 is not found on the system.
WARNING:
DBT3534W The db2prereqcheck utility determined that ASLR is set to ON and that this could cause issues with some tools.
Check the following web site for the up-to-date system requirements
of IBM DB2 9.7
http://www.ibm.com/software/data/db2/udb/sysreqs.html
http://www.software.ibm.com/data/db2/linux/validate
正在初始化 DB2 安装。
要执行的任务总数为:48
要执行的所有任务的总估计时间为:2005
任务 #1 启动
描述:正在检查许可协议的接受情况
估计时间 1 秒
任务 #1 结束
任务 #2 启动
描述:具备 root 用户特权的情况下进行安装时的基本客户机支持
估计时间 3 秒
任务 #2 结束
任务 #3 启动
描述:DB2 必需的组件。
估计时间 11 秒
任务 #3 结束
任务 #4 启动
描述:产品消息 - 英语
估计时间 12 秒
任务 #4 结束
任务 #5 启动
描述:基本客户机支持
估计时间 200 秒
任务 #5 结束
任务 #6 启动
描述:Java 运行时支持
估计时间 121 秒
任务 #6 结束
任务 #7 启动
描述:Java 帮助(HTML)- 英语
估计时间 7 秒
任务 #7 结束
任务 #8 启动
描述:具备 root 用户特权的情况下进行安装时的基本服务器支持
估计时间 7 秒
任务 #8 结束
任务 #9 启动
描述:全局安全工具箱
估计时间 51 秒
任务 #9 结束
任务 #10 启动
描述:Java 支持
估计时间 12 秒
任务 #10 结束
任务 #11 启动
描述:SQL 过程
估计时间 3 秒
任务 #11 结束
任务 #12 启动
描述:ICU 实用程序
估计时间 40 秒
任务 #12 结束
任务 #13 启动
描述:Java 公共文件
估计时间 23 秒
任务 #13 结束
任务 #14 启动
描述:基本服务器支持
估计时间 259 秒
任务 #14 结束
任务 #15 启动
描述:IBM Java? 软件开发包(SDK)
估计时间 35 秒
任务 #15 结束
任务 #16 启动
描述:控制中心帮助(HTML)- 英语
估计时间 13 秒
任务 #16 结束
任务 #17 启动
描述:连接支持
估计时间 3 秒
任务 #17 结束
任务 #18 启动
描述:通信支持 - TCP/IP
估计时间 3 秒
任务 #18 结束
任务 #19 启动
描述:并行扩展
估计时间 3 秒
任务 #19 结束
任务 #20 启动
描述:EnterpriseDB 代码
估计时间 3 秒
任务 #20 结束
任务 #21 启动
描述:复制工具
估计时间 22 秒
任务 #21 结束
任务 #22 启动
描述:公共关系型包装器
估计时间 3 秒
任务 #22 结束
任务 #23 启动
描述:控制中心
估计时间 51 秒
任务 #23 结束
任务 #24 启动
描述:命令行处理器加强版
估计时间 6 秒
任务 #24 结束
任务 #25 启动
描述:DB2 数据源支持
估计时间 6 秒
任务 #25 结束
任务 #26 启动
描述:DB2 LDAP 支持
估计时间 4 秒
任务 #26 结束
任务 #27 启动
描述:“DB2 实例安装”向导
估计时间 8 秒
任务 #27 结束
任务 #28 启动
描述:集成动漫复制支持
估计时间 53 秒
任务 #28 结束
任务 #29 启动
描述:Spatial Extender 客户机
估计时间 3 秒
任务 #29 结束
任务 #30 启动
描述:基本应用程序开发工具
估计时间 35 秒
任务 #30 结束
任务 #31 启动
描述:DB2 更新服务
估计时间 4 秒
任务 #31 结束
任务 #32 启动
描述:第一步
估计时间 3 秒
任务 #32 结束
任务 #33 启动
描述:DB2 企业服务器版的产品特征符
估计时间 4 秒
任务 #33 结束
任务 #34 启动
描述:样本数据库源
估计时间 4 秒
任务 #34 结束
任务 #35 启动
描述:DB2 文本搜索
估计时间 70 秒
任务 #35 结束
任务 #36 启动
描述:Informix 数据源支持
估计时间 4 秒
任务 #36 结束
任务 #37 启动
描述:正在设置 DB2 库路径
估计时间 180 秒
任务 #37 结束
任务 #38 启动
描述:正在安装或更新 SA MP
估计时间 40 秒
任务 #38 结束
任务 #39 启动
描述:正在执行控制任务
估计时间 20 秒
任务 #39 结束
任务 #40 启动
描述:正在更新全局注册表
估计时间 20 秒
任务 #40 结束
任务 #41 启动
描述:正在安装 IBM Tivoli Monitoring for Databases
估计时间 600 秒
任务 #41 结束
任务 #42 启动
描述:正在启动 DB2 故障监视器
估计时间 10 秒
任务 #42 结束
任务 #43 启动
描述:正在更新 db2ls 链接
估计时间 1 秒
任务 #43 结束
任务 #44 启动
描述:正在注册 DB2 许可证
估计时间 5 秒
任务 #44 结束
任务 #45 启动
描述:正在设置缺省全局概要文件注册表变量
估计时间 1 秒
任务 #45 结束
任务 #46 启动
描述:正在初始化实例列表
估计时间 5 秒
任务 #46 结束
任务 #47 启动
描述:正在注册 DB2 更新服务
估计时间 30 秒
任务 #47 结束
任务 #48 启动
描述:正在更新全局概要文件注册表
估计时间 3 秒
任务 #48 结束
在此计算机上安装 "DB2 Enterprise Server Edition "
时发生了较小的错误。某些功能部件可能无法正常工作。
有关更多信息,请参阅 "/tmp/db2_install.log.15493" 上的 DB2
安装日志。
DB2Server:~/server #导授权
DB2Server:/opt/ibm/db2/V9.7/adm # ./db2licm -a ~/db2ese_c.lic
LIC1402I License added successfully.
LIC1426I This product is now licensed for use as outlined in your License Agreement. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V9.7/license/zh_CN.utf8"
DB2Server:/opt/ibm/db2/V9.7/adm #创建实例
DB2Server:/opt/ibm/db2/V9.7/instance # /opt/ibm/db2/V9.7/instance/db2icrt -u db2fenc1 db2inst1
DBI1070I Program db2icrt completed successfully.修改权限
# 1. 将 /DB2_DATA 及其子目录的所有者更改为 db2inst1,所属组更改为 db2iadm1
chown -R db2inst1:db2iadm1 /DB2_DATA
# 2. 对 /DB2_BACKUP 目录也做同样的处理,为后续可能的备份恢复演练做准备
chown -R db2inst1:db2iadm1 /DB2_BACKUP
# 3. (可选)赋予 755 权限,确保实例用户有绝对控制权,其他用户只能读和执行
chmod -R 755 /DB2_DATA
chmod -R 755 /DB2_BACKUP建库与建表空间(需切换到db2inst1用户执行)
# 1. 切换到实例用户(这会自动加载 DB2 环境变量)
su - db2inst1
# 2. 启动数据库管理器
db2start
# 3. 创建靶场数据库 FAULTDB
db2 "CREATE DATABASE FAULTDB USING CODESET UTF-8 TERRITORY CN"
# 4. 连接到刚刚创建的数据库
db2 "CONNECT TO FAULTDB"
# 5. 在专用的数据挂载点下,按照“挂载点/实例名/数据库名/用途”的规范创建专用文件夹
mkdir -p /DB2_DATA/FAULTDB/tbspdata
# 6. 创建自定义 DMS 表空间,将物理文件明确指向刚刚创建的专用目录
db2 "CREATE REGULAR TABLESPACE TBS_FAULT_01 MANAGED BY DATABASE USING (FILE '/DB2_DATA/FAULTDB/tbspdata/tbs_fault_01.dat' 100M)"查看数据库
db2inst1@DB2Server:~> db2 list db directory
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = FAULTDB
Database name = FAULTDB
Local database directory = /home/db2inst1
Database release level = d.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
db2inst1@DB2Server:~>