需求
原库版本为DB2 V9.7.0.7,为解决该版本相关功能bug问题,需升级至DB2 V9.7.0.10,本次方案通过完整安装包方式迁移升级
准备阶段
安装V9.7.0.10版本数据库
使用root用户登录服务器,在主备机上安装V97P10版本数据库
检查系统是否满足特定 DB2 版本的先决条件
tar -xvf v9.7fp10_aix64_server.tar
cd /home/cfcinst1/server/server
./db2prereqcheck -p -v 9.7.0.10
使用静默安装方式安装数据库(root用户)
./db2_install-->选择默认路径(YES)--> 选择ESE--> 确定安装(YES)
#若默认路径与当前数据库安装路径一致,则需要改变默认路径
Do you want to install the DB2 pureScale Feature? [yes/no] NO
#升级10.5需要,9.7版本无此步骤
迁移前验证
以实例用户登录执行:(db2ckupgrade 成功后,可以迁移数据库)
db2ckupgrade ASDB -e -l /tmp/DBMigrations/db2ckmig.log
#小版本升级可跳过此步骤,大版本升级需要执行
### 信息收集
收集数据库相关参数信息
cd /tmp/DBMigrations/ASDB
db2support -d ASDB -c -s –f
cp /etc/services /etc/services.bak
cp ./sqllib/db2nodes.cfg ./sqllib/db2nodes_bak.cfg
db2 get dbm cfg > /tmp/DBMigrations/ASDB/db2dbm.cfg
db2 get db cfg for ASDB > /tmp/DBMigrations/ASDB/db.cfg
db2set -all > /tmp/DBMigrations/ASDB/db2set.cfg
set | grep DB2 > /tmp/DBMigrations/ASDB/env_instname.txt
db2look -d ASDB -a -e -l -x -o /tmp/DBMigrations/ASDB/db2look.ddl
db2 LIST PACKAGES FOR ALL SHOW DETAIL > /tmp/DBMigrations/ASDB/pckg.txt
备份数据库实例目录(使用root用户)
cp -pr /home/db2inst1/sqllib /home/db2inst1/sqllib_bak
#目录较大时可只备份除db2dump之外的目录
备份数据库
db2 backup db ASDB to /db2databkup/ASDBBKUP compress
升级阶段
停止 DB2实例(实例用户)
# 断开所有连接
db2 force application all
db2 terminate
# 停止数据库
db2stop
迁移实例
通过运行db2iupdt命令来迁移实例(root用户)
/opt/IBM/db2/V9.7.10/instance/db2iupdt db2inst1(实例用户)
#小版本升级使用db2iupdt,大版本升级使用db2iupgrade
安装DB2 V9.7.0.10版本数据库许可证(实例用户)
# 安装数据库许可
db2licm -a db2ese_lic
# 查看许可信息
db2licm -l
启动数据库并进行数据库迁移(实例用户)
# 启动实例并升级
db2start
db2 upgrade database ASDB
# 可能会出现bufferpool找不到的现象
# 原因为bufferpool页过大,#实例没有足够内存分配导致
# 调大实例内存或调小bufferpool,然后使用root用户更新实例即可
数据库中重新绑定程序包(两台机器都需要执行)(实例用户)
重新绑定数据库SCHEMA.BND\UBIND.LST\CLI.LST
db2 terminate
db2 connect to ASDB
db2 bind ./sqllib/bnd/db2schema.bnd blocking all grant public SQLERROR continue
db2 bind ./sqllib/bnd/@db2ubind.lst blocking all grant public action add
db2 bind ./sqllib/bnd/@db2cli.lst blocking all grant public action add
db2 terminate
在数据库中通过运行 db2rbind 命令来重新绑定所有无效程序包
实例用户执行:
# 重新绑定程序包
db2rbind ASDB -l logfile all
数据库验证(实例用户)
对数据库进行增删改查等操作进行验证
db2 connect to dbname
db2 "create table tbl_name(id int,name varchar(20))"
db2 "insert into tbl_name values(1,'ztm')"
db2 "select * from tbl_name"
db2 "delete from tbl_name"
db2 "select * from tbl_name"
db2 "drop table tbl_name"
db2 "truncate table tbl_name immediate"
db2 "load from tbl_name.del of del insert into tbl_name "
db2 "select count(*) from tbl_name"
回退方案
删除所有V9.7.0.10版本的数据库(实例用户)
# 断开所有连接并删除数据库
db2 force application all
db2 drop db ASDB
停止实例(实例用户)
db2stop force
删除实例V9.7.0.10(root用户)
/opt/IBM/db2/V9.7.10/instance/db2idrop db2inst1(实例用户)
创建实例V9.7(root用户)
/opt/IBM/db2/V9.7/instance/db2icrt -u db2fenc1 db2inst1(实例用户)
恢复数据库
设置注册表参数和实例参数(实例用户)
db2set DB2COMM=TCPIP
db2set DB2_SKIPINSERTED=on
db2set DB2_EVALUNCOMMITTED=on
db2set DB2_FMP_COMM_HEAPSZ=80000
db2set DB2_SKIPDELETED=on
db2set DB2LOADREC=NORECEVERABLE
db2set DB2CODEPAGE=1386
db2set DB2FMCOMM=TCPIP4
db2set DB2SYSTEM=asdb01
db2set DB2INSTEDF=db2inst1
db2set DB2ADMINSERVER=dasusr1
db2 update dbm cfg using SVCENAME 50000
节点配置文件(root用户)
# 恢复为单节点配置
vi /home/db2inst1/sqllib/db2nodes.cfg
0 asdb01 0
启动数据库(实例用户)
# 启动实例并恢复数据库备份
db2start
db2 restore db ASDB from /db2databkup/ASDBBKUP taken at <Time_Stamp> without prompting"
若需要前滚,执行如下命令(实例用户)
将所有分区日志都拷贝到同一个目录
db2 "rollforward db ASDB to end of backup and stop overflow log path(/db2databkup/logbak) "
数据库验证(实例用户)
对数据库进行增删改查等操作进行验证
db2 "create table tbl_name(id int,name varchar(20))"
db2 "insert into tbl_name values(1,'ztm')"
db2 "select * from tbl_name"
db2 "delete from tbl_name"
db2 "select * from tbl_name"
db2 "drop table tbl_name"
db2 "truncate table tbl_name"
db2 "load from tbl_name.del of del insert into tbl_name"
db2 "select count(*) from tbl_name"