1. 首页 > DB2教程 > 正文

DB2教程FG096-DB2静默升级实战

风哥教程参考DB2官方文档Upgrade、Migration等内容,详细介绍静默升级、升级准备、升级执行等。更多视频教程www.fgedu.net.cn

目录大纲

Part01-静默升级概述

1.1 静默升级定义

静默升级是在无交互模式下进行的升级操作:

  • 无人值守:无需人工干预
  • 自动化:通过脚本自动执行
  • 可重复:升级过程可重复执行
  • 可回滚:升级失败可回滚

1.2 升级场景

  • 版本升级(如DB2 10.5升级到11.5)
  • 补丁升级(Fix Pack升级)
  • 安全补丁升级
  • 功能补丁升级

Part02-升级准备

2.1 环境检查

# 检查当前版本
db2level

# 检查数据库状态
db2pd -db FGEDB -inst

# 检查实例状态
db2pd -inst

# 检查表空间状态
db2 connect to FGEDB
db2 “SELECT tbsp_name, tbsp_state FROM sysibmadm.tbsp_utilization”
db2 connect reset

# 检查磁盘空间
df -h /db2data /db2home

# 检查内存
free -g

# 检查操作系统版本
cat /etc/redhat-release

# 检查依赖包
rpm -qa | grep db2

2.2 备份准备

# 全量备份
db2 backup database FGEDB to /db2backup compress

# 导出配置
db2 get dbm cfg > /backup/dbm_cfg_$(date +%Y%m%d).txt
db2 get db cfg for FGEDB > /backup/db_cfg_$(date +%Y%m%d).txt

# 导出注册表变量
db2set -all > /backup/db2set_$(date +%Y%m%d).txt

# 备份实例目录
tar -czf /backup/db2home_$(date +%Y%m%d).tar.gz /db2home/db2inst1

# 备份脚本和配置
tar -czf /backup/db2_scripts_$(date +%Y%m%d).tar.gz /db2/scripts

# 备份检查脚本
#!/bin/bash
# pre_upgrade_check.sh

echo “=== Pre-Upgrade Check ===”
echo “Date: $(date)”

# 1. 检查版本
echo “1. Current DB2 Version:”
db2level

# 2. 检查数据库状态
echo “2. Database Status:”
db2pd -db FGEDB -inst

# 3. 检查表空间
echo “3. Tablespace Status:”
db2 connect to FGEDB
db2 “SELECT tbsp_name, tbsp_state FROM sysibmadm.tbsp_utilization”
db2 connect reset

# 4. 检查磁盘空间
echo “4. Disk Space:”
df -h /db2data /db2home

# 5. 检查备份
echo “5. Backup Status:”
ls -lh /db2backup/*.0 | tail -1

echo “=== Pre-Upgrade Check Complete ===”

Part03-升级执行

3.1 静默升级命令

# 创建响应文件
cat > /tmp/db2_upgrade.rsp < $LOG_FILE
echo “Date: $(date)” >> $LOG_FILE
echo “From: $OLD_VERSION to $NEW_VERSION” >> $LOG_FILE

# 1. 停止实例
echo “1. Stopping instance…” >> $LOG_FILE
db2stop force >> $LOG_FILE 2>&1

# 2. 安装新版本
echo “2. Installing new version…” >> $LOG_FILE
./db2_install -r $RESPONSE_FILE >> $LOG_FILE 2>&1

if [ $? -ne 0 ]; then
echo “Installation failed” >> $LOG_FILE
exit 1
fi

# 3. 升级实例
echo “3. Upgrading instance…” >> $LOG_FILE
$INSTALL_DIR/instance/db2iupgrade -u db2fenc1 db2inst1 >> $LOG_FILE 2>&1

if [ $? -ne 0 ]; then
echo “Instance upgrade failed” >> $LOG_FILE
exit 1
fi

# 4. 启动实例
echo “4. Starting instance…” >> $LOG_FILE
db2start >> $LOG_FILE 2>&1

# 5. 升级数据库
echo “5. Upgrading database…” >> $LOG_FILE
db2 upgrade database FGEDB >> $LOG_FILE 2>&1

if [ $? -ne 0 ]; then
echo “Database upgrade failed” >> $LOG_FILE
exit 1
fi

# 6. 更新统计信息
echo “6. Updating statistics…” >> $LOG_FILE
db2 reorgchk update statistics on table all >> $LOG_FILE 2>&1

echo “=== Upgrade Complete ===” >> $LOG_FILE

3.2 升级监控

# 监控升级进度
tail -f /db2/logs/upgrade_$(date +%Y%m%d).log

# 检查升级状态
db2pd -db FGEDB -inst

# 检查数据库状态
db2 connect to FGEDB
db2 “SELECT * FROM sysibmadm.admintabinfo”
db2 connect reset

# 升级监控脚本
#!/bin/bash
# monitor_upgrade.sh

LOG_FILE=”/db2/logs/upgrade_$(date +%Y%m%d).log”

while true; do
if grep -q “Upgrade Complete” $LOG_FILE; then
echo “Upgrade completed successfully”
break
elif grep -q “failed” $LOG_FILE; then
echo “Upgrade failed”
tail -20 $LOG_FILE
break
else
echo “Upgrade in progress…”
tail -5 $LOG_FILE
sleep 60
fi
done

Part04-升级验证

4.1 功能验证

# 验证版本
db2level

# 验证实例状态
db2pd -inst

# 验证数据库状态
db2 connect to FGEDB
db2 “SELECT * FROM syscat.tables FETCH FIRST 10 ROWS ONLY”
db2 connect reset

# 验证应用连接
db2 connect to FGEDB user db2inst1 using password

# 验证备份
db2 backup database FGEDB to /db2backup/test compress

# 验证脚本
#!/bin/bash
# verify_upgrade.sh

echo “=== Upgrade Verification ===”
echo “Date: $(date)”

# 1. 验证版本
echo “1. DB2 Version:”
db2level

# 2. 验证实例
echo “2. Instance Status:”
db2pd -inst

# 3. 验证数据库
echo “3. Database Status:”
db2 connect to FGEDB
db2 “SELECT COUNT(*) FROM syscat.tables”
db2 connect reset

# 4. 验证连接
echo “4. Connection Test:”
db2 connect to FGEDB user db2inst1 using db2inst1
db2 connect reset

# 5. 验证备份
echo “5. Backup Test:”
db2 backup database FGEDB to /db2backup/test compress
ls -lh /db2backup/test/*.0

echo “=== Verification Complete ===”

4.2 性能验证

# 性能基准测试
db2 connect to FGEDB

# 测试查询性能
db2 “SELECT * FROM orders WHERE customer_id = ‘C001′”

# 测试插入性能
db2 “INSERT INTO test_table VALUES (1, ‘test’)”

# 测试更新性能
db2 “UPDATE test_table SET data = ‘updated’ WHERE id = 1”

# 测试删除性能
db2 “DELETE FROM test_table WHERE id = 1”

db2 connect reset

# 性能对比脚本
#!/bin/bash
# performance_comparison.sh

echo “=== Performance Comparison ===”

# 升级前性能数据
echo “Before Upgrade:”
cat /db2/logs/performance_before.txt

# 升级后性能数据
echo “After Upgrade:”
db2 connect to FGEDB
db2 “SELECT AVG(total_exec_time) FROM sysibmadm.top_dynamic_sql”
db2 connect reset

echo “=== Comparison Complete ===”

Part05-风哥经验总结与分享

5.1 静默升级要点

  • 充分准备升级方案
  • 完整备份所有数据
  • 测试升级流程
  • 监控升级过程
  • 验证升级结果
  • 制定回滚方案

5.2 升级建议

升级阶段 关键步骤 注意事项
准备 备份、检查 确保备份完整
执行 安装、升级 监控升级过程
验证 功能、性能 全面验证

5.3 运维要点

  • 制定详细升级方案
  • 充分测试升级流程
  • 完整备份所有数据
  • 监控升级过程
  • 全面验证升级结果
  • 建立升级档案
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
风哥Oracle/MySQL/PostgreSQL/Greenplum/DB2/Redis等数据库培训课程,10年一线实战经验,企业级培训,真正掌握数据库核心技术!

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息