卸載前強制動作
- 全量備份:
db2 backup db <dbname> online to /backup include logs
- 導出 DDL 與授權:
db2look -d <dbname> -e -x -o ddl_backup.sql
- 記錄實例/用戶/組信息:
id db2inst1; id db2fenc1; id dasusr1; lsgroup db2iadm1 db2fgrp1 dasadm1
方法一:圖形化卸載 (推薦,SMIT)
# 1. 掛載 DB2 安裝介質
mount -V cdrfs -o ro /dev/cd0 /mnt
# 2. 啟動 SMIT
smit install_remove
# 3. 路徑導航
Software Installation and Maintenance
→ Software Maintenance and Utilities
→ Remove Installed Software
→ 輸入 "db2" 搜索,選中所有 db2* 包
→ 確認刪除 (F10=Exit, Enter=Do)
方法二:命令行徹底清理 (根治殘留)
階段 1:停止服務並刪除實例/DAS
# 以實例用戶
su - db2inst1
db2stop force
db2 terminate
# 以 root
# 刪除 DAS
/opt/IBM/db2/V11.5/instance/dasidrop dasusr1
# 刪除實例
/opt/IBM/db2/V11.5/instance/db2idrop db2inst1
/opt/IBM/db2/V11.5/instance/db2idrop db2fenc1
階段 2:移除 RPM/安裝包
# 查詢已安裝 DB2 包
lslpp -l | grep -i db2
# 移除 (示例包名,實際以 lslpp 輸出為準)
installp -u db2.client.rte db2.server.rte db2.java db2.jdbc ...
# 或使用 db2_deinstall (介質自帶)
/mnt/db2_deinstall -a # 移除所有特性
階段 3:手工清理殘留目錄與配置 (關鍵)
# 核心殘留路徑 (逐一確認後刪除)
rm -rf /var/db2
rm -rf /usr/opt/db2_*
rm -rf /opt/IBM/db2 # 若非共享其他版本
rm -rf /tmp/db2* /tmp/das*
# 用戶/組清理 (確認無其他實例使用)
rmuser -p db2inst1
rmuser -p db2fenc1
rmuser -p dasusr1
rmgroup db2iadm1
rmgroup db2fgrp1
rmgroup dasadm1
# /etc/services 清理 DB2 端口條目
sed -i '/^db2c_/d; /^DB2_/d' /etc/services
# 內核參數還原 (若專為 DB2 調整)
# /etc/sysctl.conf 移除 DB2 相關行
sysctl -p
重裝前驗證環境乾淨
# 確認無殘留進程
ps -ef | grep -i db2 | grep -v grep
# 確認無殘留共享內存/信號量
ipcs -m | grep db2
ipcs -s | grep db2
# 若有,ipcrm 移除
# 確認端口釋放
netstat -an | grep -E '50000|523|524'
重裝最佳實踐
- 預先規劃:實例用戶/組 ID 固定化 (如 db2inst1:209/206),跨節點一致。
- 響應文件安裝:
db2setup -r /path/db2ese.rsp 實現無人值守、版本可控。
- FixPack 同步:安裝基礎版本後立即應用最新 FixPack,再創建實例。
- 配置即代碼:實例創建、DBM CFG、註冊表、用戶環境變量全部腳本化、版本控制。
常見殘留導致的重裝失敗案例