方案一般是根据停机时间和系统重要程度来做的。
如果时间要最短,可以使用复制软件把数据库复制到新版本数据库中,这样停机时间短,可以回退。
如果用本机直接升级的话,一般时间也是很快的,备份时间+升级时间。但是如果回退,时间会比较长。
sql语句性能这个要在测试环境做好比对,一般不会有啥问题。
生产上就按照正常的监控处理就好了。
为避免风险,做全部应用的测试,高并发的还需要做压力测试;
停机时间短的方案有cdc,hadr和追日志,使用cdc可以进行回退;
通过Db2batch或者dsm捕捉一些常用SQL的执行时间,但dsm不支持9.7的一些低版本以及9.7之前的版本。
一般正常小版本升级是花不了多长时间,提前把安装包上传上去,做好precheck .
比较花费时间的是升级之前对数据库的备份(这取决于数据库的大小)下面是简单的数据库小版本升级流程;
1 ./db2prereqcheck > db2prereqcheck.log ---check db2prereqcheck.log if any package missed
###Filesystem required
###/OPT/IBM/db2 --- (install on new path with 1.53G) at least 500M free space required
###/home/<inst> --- 500M free space required
###/db2temp --- 1.5G free space required
db2set -all > db2set.out
db2licm -l> db2licm.out
db2level > db2level.out
db2 list node directory >node_dir
db2 list db directory > db_dir
db2 list dcs directory > dcs_dir
db2cfexp db2cfexp.bkp backup
db2 get dbm cfg > dbm_cfg
db2 get admin cfg > admin_cfg
db2 list applications > list_apps
db2 get db cfg for <dbname> > dbcfg_dir
3.###Offline backup for all related local db
db2 deactivate db <dbname>
db2 backup db <dbname> to <backup_path> compress
###if there are more than one database use the below loop:
if i in <dbname1> <dbname2>;do echo $i;db2 backup db $i to <backup_path> compress;done
4###stop db2/application
a.top application --- application team
b.db2 list application ###make sure no any connection exist --- DBA team
c.db2stop --- DBA team
d.'ipclean -a' --- DBA team
e.'ps -ef|grep -i db2' ###make sure no db2 process running --- DBA team
5:Main tasks
5.1: ###installfixpack
cd /db2temp/server ###the path where you unzip setup files in step 1.5
./db2_install -b db2_install_path ###select ESE
大版本升级会麻烦很多,比如从V9.7到V10.1这种升级,除了需要升级数据库外还得升级实例数据之类的这里就不累述了;
数据库升级完成做个Health Check 检查下就可以了,主要看数据库能否正常连接。
至于数据库升级完成后对SQL性能的影响这种,这种只有自己实际测试了,搞一段SQL在两个版本上进行测试;还有需要说明一下,数据库升级未必带来性能的提升,大部分数据库补丁是针对系统漏洞和可能存在的风险进行的升级,想通过小版本的升级来提升数据库性能可能性不是很大;