1.升级前准备
1.1 备份数据库
备份数据库:
使用NBU发起对数据库全备:NBU server端发起全量备份,全量备份时间和升级时间差<1天
db2pd -util
db2 list utilities show detail
1.2 注释定时任务
1.3 停止集中监控
1.4 停止集中备份
1.5 停止自动化运维
1.6 停止应用
1.7 备份配置
mkdir -p /yunwei/Release/db/$(date +%Y%m%d)
db2 get dbm cfg > /yunwei/Release/db/$(date +%Y%m%d)/db2dbm.cfg
db2 get db cfg for <DBNAME> > /yunwei/Release/db/$(date +%Y%m%d)/<DBNAME>.cfg
db2set -all > /yunwei/Release/db/$(date +%Y%m%d)/db2set.cfg
db2look -d <DBNAME> -a -e -l -x -ct -o /yunwei/Release/db/$(date +%Y%m%d)/db2look.ddl
db2 connect to <DBNAME>
db2 LIST PACKAGES FOR ALL SHOW DETAIL > /yunwei/Release/db/$(date +%Y%m%d)/pckg.txt
2.升级
—————————————————-停止应用————————————————————————
2.1查看Log Gap
db2pd -db <dbname> -hadr
B机角色是standby ,与A状态为peer,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
C机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
D机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
2.2如有双机先停双机
两台机器分别执行:service rgmanager stop
两台机器分别执行:service cman stop
如果是pcs软件,在A机执行命令:
pcs cluster stop --all 关闭pcs双节点
pcs status 查看是否关闭
2.3停止B、C、D数据库
db2 deactivate db <dbname>
db2stop force
检查DB2进程是否存在
ps -ef | grep -i db2
2.4停止A数据库
db2 force application all
db2 terminate
db2 deactivate db <dbname>
db2stop force
检查DB2进程是否存在
ps -ef | grep -i db2
2.5停止故障监视器
禁止故障检查器(Fault Monitor):
/opt/<ibm/IBM>/db2/V11.1/bin/db2fm -i <DB2 instance name> -D
如果无法停止Fault Monitor,需要执行以下命令:
/opt/<ibm/IBM>/db2/V11.1/bin/db2fmcu -d
验证没有db2的进程存在:
ps -ef |grep -i db2
如果仍然无法停止请
kill -9 <kill_id>
建议该步骤反复执行几次看是否会自动重启
验证没有db2的进程存在:
ps -ef | grep db2
2.6备份数据库实例目录:
cp -pr /home/<实例名>/sqllib /home/<实例名>/sqllib_bak
2.7开始升级产品
cd /tmp/db2_fix #以实际目录为准
export LANG=en_US
./installFixPack -b /opt/<ibm/IBM>/db2/V11.1
Do you want to choose a different installation directory for the fix pack? [yes/no]
------------------------------------------------------------------------------------
no
2.8 升级实例
/opt/<ibm/IBM>/db2/V11.1/instance/db2iupdt -u <DB2 Fence user name> <DB2 instance user name>
观察命令是否执行成功
2.9 启动B、C、D机
db2start
db2 activate db <dbname>
2.10 启动A机
db2start
db2 activate db <dbname>
2.11 检查HADR状态
如果以上步骤中HADR状态不对,不能执行以下操作
检查HADR状态
db2pd -d <dbname> -hadr
A机应为primary ,状态为connected。
2.12 升级库
db2 activate db <dbname>
版本号:如9.7则输入97;如10.5输入105;如11.1输入111
db2updv111 -d <dbname>
2.13 验证数据库版本
db2level
版本信息应为“DB2 v11.1.4.x”,检查数据库版本是否为所升级的版本
检查DB2的db2diag.log的日志,查看是否有错误发生。
如出现错误,查看/tmp目录更新版本日志,可重复升级产品和实例
2.14 启动监视器
注册Fault Monitor:( root 用户 )
/opt/ibm/db2/V11.1/bin/db2fmcu -u -p /opt/ibm/db2/V11.1/bin/db2fmcd
开启Fault Monitor:( 实例用户 )
su - <DB2 instance name>
/opt/ibm/db2/V11.1/bin/db2fm -i db2inst1 -U
2.15 绑包
数据库中重新绑定程序包:
1.重新绑定数据库SCHEMA.BND/UBIND.LST/CLI.LST
db2 terminate
db2 connect to <dbname>
db2 bind <DB2INSTANCEHOME>/sqllib/bnd/db2schema.bnd blocking all grant public SQLERROR continue
db2 bind <DB2INSTANCEHOME>/sqllib/bnd/@db2ubind.lst blocking all grant public action add
db2 bind <DB2INSTANCEHOME>/sqllib/bnd/@db2cli.lst blocking all grant public action add
db2 terminate
2.在数据库中通过运行 db2rbind 命令来重新绑定所有无效程序包:
db2rbind <dbname> -l /tmp/logfile all
su - <instance name>
db2 connect to <dbname>
db2 "select pkgschema,pkgname from syscat.packages where valid='X'"
如果以上命令有结果输出,再执行以下步骤:
db2 -x "select 'rebind package ' || trim(pkgschema) || '.' || trim(pkgname) || ';' from syscat.packages where valid='X'" > /yunwei/Release/db/$(date +%Y%m%d)/rebind.sql
db2 -tvf /yunwei/Release/db/$(date +%Y%m%d)/rebind.sql | tee /yunwei/Release/db/$(date +%Y%m%d)/rebind.out
db2 "select pkgschema,pkgname from syscat.packages where valid='X'"
如果rbind package时报SQL2453。则执行:
db2 "call sysproc.admin_revalidate_db_objects(null,null,null)"
db2 "select pkgschema,pkgname from syscat.packages where valid='X'"
检查是否还有invalid 或inoperative package。
2.16 检查表
db2 connect to <dbname>
db2 "select * from <tablename> fetch first 10 row only"
2.17 检查表空间状态
db2 connect to <dbname>
db2 list tablespaces show detail | grep -i state #必须全部是:0x00000000
2.18 启动双机软件
如果是linux:
A、B 同时:
service cman start
A:
service rgmanager start
B:
service rgmanager start
如果是pcs软件
pcs cluster start --all
pcs status
—————————————————-启动应用————————————————————————
3 回退
3.1 B、C、D服务器停止数据库
停止数据库:
db2 deactivate db <dbname>
db2stop force
检查DB2进程是否存在
ps -ef | grep -i db2
3.2 安装原来版本介质
下载原版本介质后解压
cd /tmp/db2_fix #以实际目录为准
./installFixPack -f level -b /opt/<ibm/IBM>/db2/V11.1
3.3 更新实例
/opt/<ibm/IBM>/db2/V11.1/instance/db2iupdt -u <DB2 Fence user name> <DB2 instance user name>
观察命令是否执行成功
3.4 还原实例目录
mv /home/<实例名>/sqllib /home/<实例名>/sqllib_NEW
mv /home/<实例名>/sqllib_bak /home/<实例名>/sqllib
3.5 恢复B、C、D库
su - <实例用户名>
cd /home/<实例用户名>
如果是NBU备份,使用最近的全备恢复(需要备份小组介入)
A机执行命令:查看备份日志cat /usr/openv/scripts/db2_backup_<dbname>_sh.out,DB2_FULL = 1表示全备,DB2_CINC=1表示增备,配置db2.conf文件。
db2 get db cfg for <dbname> | grep -i log,删除活动日志路径下的活动日志。
db2 "restore db <dbname> load /usr/openv/netbackup/bin/nbdb2.so64 on <path> dbpath on <path> taken at <TimeStamp> without prompting"
#观察数据库恢复进度
db2pd -util
db2 list utilities show detail
exit
#注释1:检查A机,db2pd -db <dbname> -tablespaces 观察"table space autoresize statistics"中"AS"关键字,如果都是yes,证明数据库采用Automatic Storage管理,所以再确认每个表空间有几个path,如果横跨多个path ,则要写path1,path2,....
#注释2:数据库目录,在A机通过db2 list db directory show detail确认“Local database directory”
#注释3:db2 get db cfg for <dbname> | grep -i 'Path to log files' NODE0000之前的目录
3.6 停止A库
停止数据库:
db2 force application all
db2 terminate
db2stop force
3.7 安装原版本介质
下载原版本介质后解压
cd /tmp/db2_fix
./installFixPack -f level -b /opt/<ibm/IBM>/db2/V11.1
3.8 更新实例
/opt/<ibm/IBM>/db2/V<9/10/11>.x/instance/db2iupdt -u <DB2 Fence user name> <DB2 instance user name>
观察命令是否执行成功
3.9 恢复A库
su - <实例用户名>
cd /home/<实例用户名>
mkdir -p /yunwei/Release/tmplogs
如果是NBU备份,使用最近的全备恢复(需要备份小组介入)
A机执行命令:查看备份日志cat /usr/openv/scripts/db2_backup_<dbname>_sh.out,DB2_FULL = 1表示全备,DB2_CINC=1表示增备,配置db2.conf文件。
db2 "restore db <dbname> load /usr/openv/netbackup/bin/nbdb2.so64 on <path> dbpath on <path> taken at <TimeStamp> without prompting"
db2 "rollforward db <dbname> to end of logs and stop overflow log path(/yunwei/Release/tmplogs)"
#观察数据库恢复进度
db2pd -util
db2 list utilities show detail
exit
#Media-Target:如果是同城则用“use tsm”
#注释1:检查A机,db2pd -db <dbname> -tablespaces 观察"table space autoresize statistics"中"AS"关键字,如果都是yes,证明数据库采用Automatic Storage管理,所以再确认每个表空间有几个path,如果横跨多个path ,则要写path1,path2,....
#注释2:数据库目录,在A机通过db2 list db directory show detail确认“Local database directory”
#注释3:db2 get db cfg for <dbname> | grep -i 'Path to log files' NODE0000之前的目录
3.10 启动B、C、D库
#启动HADR备机
su - <数据库实例用户>
ifconfig -a #确认HADR standby TCP ip已经就绪
db2stop force
db2start
db2 "start hadr on db <dbname> as standby"
3.11 启动A库
#启动HADR主机
su - <数据库实例用户>
ifconfig -a #确认HADR primary TCP ip已经就绪
db2stop force
db2start
db2 "start hadr on db <dbname> as primary"
3.12 查看HADR状态
db2pd -db <dbname> -hadr #观察HADR状态,并且开始log shipping,注意LOGGap和Buffer的百分比。待Peer状态后再执行以下步骤
3.13 查看表
db2 connect to <DBNAME>
db2 "select * from <tablename> fetch first 10 row only"
3.14 查看表空间状态
db2 connect to <dbname>
db2 list tablespaces show detail | grep -i state #必须全部是:0x00000000
3.15 还原数据库驱动
注意:此步骤主要是还原原来的数据库驱动
将db2原版本以后为保证应用驱动程序保持在同一版本需要进行替换驱动包,操作主要步骤:
1、将/home/<instance>/sqllib/java/ 下的db2java.zip、db2jcc.jar、db2jcc_license_cu.jar、db2jcc4.jar替换应用原使用的驱动包。
2、登录WAS控制台-》资源-》JDBC-》数据源-》选择相应的数据源-》“点击测试连接
默认不替换驱动的原因:
1、多个数据源共用一套驱动程序,一经更新将影响所有应用程序连接数据库
提示:如果程序本身没有使用WAS数据源,请进行应用验证
3.15 对表runstats
版权声明:本文为博主原创文章,未经博主允许不得转载。
DB2