DB2版本升级(V9.7升级到V11.1)


1.V11.1版本升级路线

DB2 11.1

可以将现有的 Db2 V9.7、Db2 V10.1 或 Db2 V10.5 实例和数据库直接升级到 Db2 V11.1。
如果 Db2 服务器正在 Db2 V9.7 之前的发行版上运行,请先将它们升级到 Db2 V9.7、Db2 V10.1 或 Db2 V10.5,然后升级到 Db2 V11.1。建议升级到 Db2 V9.7 的最新修订包。

2.升级前准备

 2.1检查当前主机的文件系统

检查/opt与/home/以及/db2data是否充足
/opt是DB2实例软件默认安装路径(可更改)
/home/db2inst1 是实例目录(可更改)
/db2data 是用于数据库安装路径
如果空间足够,建议归档日志,备份目录单独划分。

[root@ecdb2 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ecdb2-LogVol02
                       31G  9.5G   20G  33% /
tmpfs                 1.9G   76K  1.9G   1% /dev/shm
/dev/sda1             190M   40M  141M  22% /boot
/dev/mapper/vg_ecdb2-LogVol00
                       15G  1.1G   13G   8% /home
/dev/mapper/vg_data-lv_data
                      9.5G  431M  8.6G   5% /db2data

 2.2备份当前实例下的数据库

在升级之前必须备份数据库,避免版本升级失败导致数据库无法使用的问题,建议做离线全备。

[db2inst1@ecdb2 ~]$ db2 list db directory

 System Database Directory

 Number of entries in the directory = 1

Database 1 entry:

 Database alias                       = SAMPLE
 Database name                        = SAMPLE
 Local database directory             = /home/db2inst1
 Database release level               = 14.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

[db2inst1@ecdb2 ~]$ ^C
[db2inst1@ecdb2 ~]$ db2 backup db sample to /db2data

Backup successful. The timestamp for this backup image is : 20190422184606

[db2inst1@ecdb2 ~]$ cd /db2data
[db2inst1@ecdb2 db2data]$ ls -lrt
total 446004
drwx------ 2 db2inst1 db2iadm     16384 Mar 27 21:34 lost+found
-rwxrwxr-x 1 db2inst1 db2iadm 200781824 Mar 27 21:59 SAMPLE.0.db2inst2.DBPART000.20190327215905.001
-rw-r--r-- 1 db2inst1 db2iadm      8083 Mar 27 23:22 redirect_sample.sql
-rw-r--r-- 1 db2inst1 db2iadm      1875 Mar 27 23:23 SAMPLE_NODE0000.out
drwxrwxr-x 2 db2inst1 db2iadm      4096 Mar 28 10:28 db2inst2
drwxrwxr-x 3 db2inst1 db2iadm      4096 Apr 18 11:52 db2inst1
-rw------- 1 db2inst1 db2iadm 255889408 Apr 22 18:46 SAMPLE.0.db2inst1.DBPART000.20190422184606.001
[db2inst1@ecdb2 db2data]$ 

2.3检查当前的实例版本

检查现有实例版本,首先是根据升级路线看是否能够升级

[db2inst1@ecdb2 ~]$ db2level
DB21085I  This instance or install (instance name, where applicable: 
"db2inst1") uses "64" bits and DB2 code release "SQL0907B" with level 
identifier "080C0107".
Informational tokens are "DB2 v9.7.0.11", "s150922", "IP23944", and Fix Pack 
"11".
Product is installed at "/opt/ibm/db2/V9.7".

当前实例版本为9.7,根据升级路线,是可以进行升级的

2.4上传压缩包解压

[root@ecdb2 ~]# ls -lrt
total 3459620
drwxr-xr-x  4 root root       4096 Sep 25  2015 server
-rw-r--r--. 1 root root 1913293693 Jan  6 16:43 v10.5fp10_linuxx64_server_t.tar.gz
-rw-r--r--  1 root root  799372868 Mar 16 19:14 v9.7fp11_linuxx64_server.tar.gz
-rw-r--r--. 1 root root      10259 Mar 27 10:08 install.log.syslog
-rw-r--r--. 1 root root      52264 Mar 27 10:10 install.log
-rw-------. 1 root root       1552 Mar 27 10:10 anaconda-ks.cfg
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Videos
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Templates
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Public
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Pictures
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Music
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Downloads
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Documents
drwxr-xr-x. 2 root root       4096 Mar 27 10:13 Desktop
drwxr-xr-x  2 root root       4096 Mar 27 19:26 isus
-rw-r--r--  1 root root  829849600 Apr 15 19:58 v9.5fp5_linuxx64_server.tar
drwxr-xr-x  2 root root       4096 Apr 22 16:53 V11
[root@ecdb2 ~]# cd V11
[root@ecdb2 V11]# pwd
/root/V11
[root@ecdb2 V11]# ls -lrt
total 1935492
-rw-r--r-- 1 root root 1981938797 Apr 16 12:03 v11.1.4fp4a_linuxx64_server_t.tar.gz
解压使用tar -zxvf v11.1.4fp4a_linuxx64_server_t.tar.gz
如果是aix的,需要gzip -d v11.1.4fp4a_linuxx64_server_t.tar.gz变成tar包
tar -xvf v11.1.4fp4a_linuxx64_server_t.tar

3.实例软件安装

 3.1预安装检查

[root@ecdb2 server_t]# ./db2prereqcheck
Validating "/lib/libpam.so*" ... 
   Requirement matched. 
Requirement not matched for DB2 database "Server" with pureScale feature . Version: "9.8.0.2". 
Summary of prerequisites that are not met on the current system: 
DBT3514W  The db2prereqcheck utility failed to find the following 32-bit library file: "libstdc++.so.5". 
DBT3613E  The db2prereqcheck utility failed to verify the prerequisites for TSA. Ensure your machine meets all the TSA installation prerequisites.

可以看到,预安装检查是有报错的,这个报错官方是说明的。这个是因为32位libstdc++没有装

官方的回应如下:

DBT3514W db2prereqcheck 实用程序找不到以下 32 位库文件:库文件名。
说明
您可以使用 db2prereqcheck 实用程序来验证安装先决条件。

当 db2prereqcheck 实用程序找不到 32 位版本的必需库文件时,将返回此消息。如果缺少指定的文件,那么 32 位数据库应用程序可能无法正常运行。

用户响应
请以下列其中一种方式响应此消息:

如果您不打算将 32 位应用程序与 DB2 数据库配合使用,那么无需进行响应。
如果您打算将 32 位应用程序与 DB2 数据库配合使用,请先确保指定的 32 位库文件存在于系统上,然后再安装 DB2 数据库。

如果需要安装32位的应用程序,下面这个是解决方案:

    1.DBT3514W The db2prereqcheck utility failed to find the following 32-bit library file: "libstdc++.so.5". 
    解决方案:yum -y install libstdc++.so.6
    
    2.DBT3514W  The db2prereqcheck utility failed to find the following 32-bit library file: "/lib/libpam.so*"
    解决方案:yum -y install pam-devel.i686 pam.i686
    
    3.DBT3507E  The db2prereqcheck utility failed to find the following package or file: "sg3_utils". 
    解决方案:yum -y install sg3_utils-*
    
    4. Required minimum version for "ksh": "20100621" 
    解决方案:yum -y install ksh*

安装完成后重新检查

[root@ecdb2 server_t]# ./db2prereqcheck

Validating "32 bit version of "libstdc++.so.5" " ... 
   Found the 32 bit "/usr/lib/libstdc++.so.6" in the following directory "/usr/lib". 
   Requirement matched. 
   
Validating "libaio.so version " ... 
DBT3553I  The db2prereqcheck utility successfully loaded the libaio.so.1 file. 
   Requirement matched. 
   
Validating "libnuma.so version " ... 
DBT3610I  The db2prereqcheck utility successfully loaded the libnuma.so.1 file. 
   Requirement matched. 
   
Validating "/lib/libpam.so*" ... 
   Requirement matched. 
DBT3533I  The db2prereqcheck utility has confirmed that all installation prerequisites were met.

这个表示预安装检查通过了。

 3.2实例软件安装

[root@ecdb2 server_t]# ls -lrt
total 120
-r-xr-xr-x  1 bin bin  5111 Feb 27 17:31 db2prereqcheck
-r-xr-xr-x  1 bin bin  5259 Feb 27 17:31 db2_deinstall
-r-xr-xr-x  1 bin bin  5111 Feb 27 17:32 db2setup
-r-xr-xr-x  1 bin bin  5093 Feb 27 17:32 db2ls
-r--r--r--  1 bin bin 47346 Feb 27 17:32 db2checkCOL.tar.gz
-r--r--r--  1 bin bin  4987 Feb 27 17:32 db2checkCOL_readme.txt
-r-xr-xr-x  1 bin bin  5306 Feb 27 17:32 db2ckupgrade
-r-xr-xr-x  1 bin bin  5129 Feb 27 17:32 db2_install
drwxr-xr-x 10 bin bin  4096 Feb 27 17:32 ibm_im
-r-xr-xr-x  1 bin bin  5147 Feb 27 17:32 installFixPack
drwxr-xr-x  6 bin bin  4096 Feb 27 17:32 db2
[root@ecdb2 server_t]# ./db2_install 
Read the license agreement file in the db2/license directory.

***********************************************************
To accept those terms, enter "yes". Otherwise, enter "no" to cancel the install process. [yes/no]
yes


Default directory for installation of products - /opt/ibm/db2/V11.1

***********************************************************
Install into default directory (/opt/ibm/db2/V11.1) ? [yes/no] 
yes


Specify one of the following keywords to install DB2 products.

  SERVER 
  CONSV 
  CLIENT 
  RTCL 

Enter "help" to redisplay product names.

Enter "quit" to exit.

***********************************************************
SERVER
***********************************************************
Do you want to install the DB2 pureScale Feature? [yes/no] 
no
DB2 installation is being initialized.

Total number of tasks to be performed: 58 
Total estimated time for all tasks to be performed: 2613 second(s) 
中间安装步骤就省略了
Task #59 start
Description: Updating global profile registry 
Estimated time 3 second(s) 
Task #59 end 

The execution completed successfully.

For more information see the DB2 installation log at
"/tmp/db2_install.log.55688".

 在最后会产生一个The execution completed successfully.如果失败会有报错。

3.3检查实例软件安装日志

在安装实例软件后会在/tmp下面有生成相关的日志,比如:/tmp/db2_install.log.55688
这里面记录了安装的版本,安装的步骤,安装了哪些东西。

Installing or updating DB2 HA scripts for IBM Tivoli System Automation for Multiplatforms (Tivoli SA MP) :..
.....Success 
Executing control tasks :.......Success 
Updating global registry :.......Success 
Starting DB2 Fault Monitor :.......Success 
Updating the db2ls and db2greg link :.......Success 
Registering DB2 licenses :.......Success 
Setting default global profile registry variables :.......Success 
Initializing instance list :.......Success 
Registering DB2 Update Service :.......Success 
Updating global profile registry :.......Success

如果这些都是Success ,表示实例软件安装成功。

4.升级实例

升级之前,必须停止现有实例,否则升级的时候会出现报错

[root@ecdb2 instance]# pwd
/opt/ibm/db2/V11.1/instance
[root@ecdb2 instance]# ./db2iupgrade -u db2fenc1 db2inst1
DBI1446I  The db2iupgrade command is running.


DB2 installation is being initialized.

The DB2 installer detects that one or more DB2 instances "db2inst1" are still
active. Stop the active instances and rerun the command again.

A major error occurred during the execution that caused this program to
terminate prematurely. If the problem persists, contact your technical service
representative.

For more information see the DB2 installation log at
"/tmp/db2iupgrade.log.99362".
DBI1264E  This program failed. Errors encountered during execution were
      written to the installation log file. Program name:
      db2iupgrade. Log file name: /tmp/db2iupgrade.log.99362.

Explanation: 

This message is returned when some processes and operations have failed.
Detailed information about the error was written to the log file.

User response: 

Contact IBM support to get assistance in resolving this issue. Keep the
log file intact as this file is an important reference for IBM support.


   Related information:
   Contacting IBM Software Support

检查相关的日志

[root@ecdb2 instance]# more /tmp/db2iupgrade.log.99362

DB2 Setup log file started at:  Mon Apr 22 06:03:56 PM 2019 CST
============================================================

Operating system information: Linux 2.6.32-642.el6.x86_64.#1 SMP Wed Apr 13 00:51:26 EDT 2016 x86_64 
ERROR: The DB2 installer detects that one or more DB2 instances "db2inst1" are still
active. Stop the active instances and rerun the command again.

ERROR: The "db2iupgrade" command failed. Ensure that errors reported in the log
file are fixed, then rerun the command.


Post-installation instructions 
-------------------------------
Required steps: 
There were some errors detected during DB2 installation. To collect the information files from the system, run the "db2support -install" command with the proper options before reporting the problem to IBM service. For information re
garding the usage of the db2support tool, check the DB2 Information Center. 


DB2 Setup log file finished at:  Mon Apr 22 06:03:58 PM 2019 CST
============================================================

 4.1升级预检查

升级预检查可以使用db2ckupgrade去进行检查

[db2inst1@ecdb2 instance]$ ./db2ckupgrade sample -l /home/db2inst1/db2ckupgrade.log -u db2inst1 -p enmodb2
db2upgrade was successful. Database(s) can be upgraded  

 4.2停止现有实例

[root@ecdb2 instance]# su - db2inst1
[db2inst1@ecdb2 ~]$ db2stop force
04/22/2019 18:11:22     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@ecdb2 ~]$ exit

这一步必须在应用或者甲方同意的情况下进行,如果存在应用,应用同意可以杀可以使用以下命令:

db2 force applications all
db2 terminate

执行完成之后去停止实例,如果停止不了,需要应用人员停止相关的应用。

  4.3升级实例

[root@ecdb2 instance]# ls -lrt |grep db2iupgrade
-r-xr--r-- 1 root root  94819 Feb 27 16:50 db2iupgrade_local
-r-xr--r-- 1 root root  76962 Apr 22 17:41 db2iupgrade
[root@ecdb2 instance]# ./db2iupgrade -u db2fenc1 db2inst1
DBI1446I  The db2iupgrade command is running.


DB2 installation is being initialized.

Total number of tasks to be performed: 4 
Total estimated time for all tasks to be performed: 309 second(s) 

Task #1 start
Description: Setting default global profile registry variables 
Estimated time 1 second(s) 
Task #1 end 

Task #2 start
Description: Initializing instance list 
Estimated time 5 second(s) 
Task #2 end 

Task #3 start
Description: Configuring DB2 instances 
Estimated time 300 second(s) 
Task #3 end 

Task #4 start
Description: Updating global profile registry 
Estimated time 3 second(s) 
Task #4 end 

The execution completed successfully.

For more information see the DB2 installation log at
"/tmp/db2iupgrade.log.100946".
DBI1070I  Program db2iupgrade completed successfully.

升级后会显示升级完成,并且会在/tmp下面生成一个upgrade的日志

检查相关的升级日志,看升级日志中是否存在报错(/tmp/db2iupgrade.log.100946

Existing instances to configure:        
    Instance name:                              db2inst1
        Instance user information:      
            User name:                          db2inst1
        Fenced user information:        
            User name:                          db2fenc1
                                        
                                        
                                        
                                        

Setting default global profile registry variables :.......Success 
Initializing instance list :.......Success 
The instance "db2inst1" has been upgraded successfully.

Configuring DB2 instances :.......Success 
Updating global profile registry :.......Success

 4.4检查升级后实例版本

[root@ecdb2 instance]# su - db2inst1
[db2inst1@ecdb2 ~]$ db2level
DB21085I  This instance or install (instance name, where applicable: 
"db2inst1") uses "64" bits and DB2 code release "SQL11014" with level 
identifier "0205010F".
Informational tokens are "DB2 v11.1.4.4", "s1902261400", "DYN1902261400AMD64", 
and Fix Pack "4a".
Product is installed at "/opt/ibm/db2/V11.1".

可以看到实例已经升级到11.1.0.4了。

5.升级数据库

 5.1启动实例连接数据库

[db2inst1@ecdb2 ~]$ db2start
SQL8007W  There are "90" day(s) left in the evaluation period for the product 
"DB2 Advanced Enterprise Server Edition". For evaluation license terms and 
conditions, refer to the License Agreement document located in the license 
directory in the installation path of this product. If you have licensed this 
product, ensure the license key is properly registered. You can register the 
license by using the db2licm command line utility. The license key can be 
obtained from your licensed product CD.
04/22/2019 18:20:37     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
[db2inst1@ecdb2 ~]$ db2 connect to sample
SQL5035N  The connection failed because the database product has been updated 
and the database needs to be upgraded  SQLSTATE=55001

这里因为我没有许可证,试用天数为90天,如果是生产数据库,建议把lisence也打上。

[db2inst1@ecdb2 ~]$ db2licm -l
Product name:                     "DB2 Advanced Enterprise Server Edition"
License type:                     "Trial"
Expiry date:                      "07/20/2019"
Product identifier:               "db2aese"
Version information:              "11.1"

可以看到,到了V11,默认安装都是AESE(高级企业版)了。

从刚刚的连接数据库来看,存在报错

SQL5035N The connection failed because the database product has been updated 
and the database needs to be upgraded??SQLSTATE=55001

这个报错是因为我们暂时只是升级了实例,但是数据库还没有进行版本升级。

 5.2 数据库升级

[db2inst1@ecdb2 ~]$ db2 upgrade db sample
DB20000I  The UPGRADE DATABASE command completed successfully.
[db2inst1@ecdb2 ~]$ db2 connect to sample

   Database Connection Information

Database server        = DB2/LINUXX8664 11.1.4.4
SQL authorization ID   = DB2INST1
Local database alias   = SAMPLE

注意事项:

1.升级前必须将数据库做离线全备。
2.升级过程中不能中断,否则只有重装。
3.版本升级从数据库命令层面没有回退方案,只能通过备份恢复,如果升级出现问题,可以删掉实例,重建实例,恢复数据库。

4.升级完成之后需要绑定相关的package

5.升级完成后如果事件监视器,需要删除后重建

注意事项中第三条,也是为什么在准备过程中就需要对数据库进行全备的,如果是生产还需要考虑,应用停机等。DB2 的版本升级分享到此结束,祝好运。

db2