admin管理员组

文章数量:1565271

2024年7月30日发(作者:)

1.1 补丁安装(可选)

若DB2安装介质文件中已包含fix pack5版本的补丁,通常不用进行补丁安装。但若是在

原有版本之上打补丁,可以参考本节的内容。

DPF或者HADR或者PureScale环境中,需要在每台物理机器或者VM上安装DB2补丁

包。

注意:对于DPF或者PureScale这边,没有什么特别注意的地方,也是按照同样的步骤安

装、更新实例、启动、重新绑定程序包就可以了。(PureScale是多个实例,一个DB,DPF是

1个实例多个partition),就需要在每一台物理机器或者VM上执行相同的步骤安装补丁。在

启动实例之前需要确保所有机器上的补丁都在同一个补丁层次上。

1.1.1 准备工作

1.1.1.1 解压缩补丁包

将下载后的补丁包压缩文件上传到DB2数据库服务器的/tmp/db2v105目录下。

通过root用户登录DB2数据库服务器,具体步骤如下:

# cd /tmp/db2v105

执行解压补丁包命令:

AIX 参考命令

# gzip -d | tar -xvf -

Linux 参考命令

# tar -zxvf

1.1.1.2 停止DB2实例进程

1. 作为 root 用户登录DB2数据库服务器。

2. 确定与 DB2 副本相关联的所有实例。

发出以下命令:

AIX系统执行如下命令

# /opt/IBM/db2/V10.5/instance/db2ilist

linux系统执行如下命令

# /opt/ibm/db2/V10.5/instance/db2ilist

系统回显出当前DB2安装副本下的所有数据库实例的清单(如果不存在数据库实

例,本节后续步骤不需要执行)。

注:/opt/ibm/db2/V10.5/bin/db2greg -dump也可查看各种版本下的所有实例。

3. 对 DB2 副本中的每个实例运行下列命令:

# su - db2inst1

# . /home/db2inst1/sqllib/db2profile

# db2 force applications all

# db2 terminate

# db2stop

# db2licd -end # run at each physical partition

# exit

其中 db2inst1 表示实例所有者的名称。若存在多个数据库实例,请按照db2inst1实例

的停止步骤,停止每个存在的实例进程。

如果是 PowerHASystemMirror用户,那么必须使用 ha_db2stop 命令而不是 db2stop命

令来停止 DB2。如果使用 db2stop 命令而不是 ha_db2stop 命令,将触发故障事件。

1.1.1.3 停止DB2管理服务器

如果 DB2 管理服务器 (DAS) 属于要更新的 DB2 副本(如果服务器上没有安装

DAS管理服务器,则跳过此步),请停止 DAS:

首先确认是否安装了DAS:

AIX系统执行:

#/opt/IBM/db2/V10.5/instance/daslist

Linux系统执行

#/opt/ibm/db2/V10.5/instance/daslist

如果安装了DAS,将会看到类似于这样的输出结果:dasusr1

如果没有安装,将不会有输出结果显示

停止DAS:

# su - dasusr1

# . $HOME/das/dasprofile

# db2admin stop

# exit

其中 dasusr1 表示 DAS 所有者名称。

注: 由于系统上只能有一个 DAS,因此,这个步骤将影响系统上的所有其他 DB2 副

本。

1.1.1.4 卸载内存共享库

在 AIX上,请在安装前运行 slibclean 以从内存中卸装未使用的共享库:

# /usr/sbin/slibclean

1.1.1.5 禁用故障监视器

1. 如果启动了故障监视器守护程序, 请停止故障监视器守护程序:

第一步:要确定是否启动了FM,请发出以下命令(用root用户运行):

AIX系统执行:

# /opt/IBM/db2/V10.5/bin/db2fm -i db2inst1 -S

Linux系统执行:

# /opt/ibm/db2/V10.5/bin/db2fm -i db2inst1 -S

如果启动了FM,那么将看到类似于以下内容的输出:Gcf module 'fault monitor' state

is AVAILABLE,

如果禁用了FM,那么输出内容将是:Gcf module 'fault monitor' is NOT operable

禁用故障监视器命令如下:

AIX系统执行:

# /opt/IBM/db2/V10.5/bin/db2fm -i db2inst1 -D

Linux系统执行:

# /opt/ibm/db2/V10.5/bin/db2fm -i db2inst1 -D

必须对 DB2 副本中的每个实例执行一次此命令。

2. 如果启动了故障监视器协调程序 (FMC),请阻止实例自动启动(用root用户运行):

第一步:要确定是否启动了 FMC,请发出以下命令:

AIX系统执行:

# /opt/IBM/db2/V10.5/bin/db2fmcu

Linux系统执行:

# /opt/ibm/db2/V10.5/bin/db2fmcu

如果启动了 FMC,那么将看到类似于以下内容的输出:FMC: up: PID = 3415。如果

禁用了 FMC,那么 db2fmcu 命令的输出将是:FMC: down。

禁用FMC命令如下:

AIX系统执行:

# /opt/IBM/db2/V10.5/bin/db2fmcu -d

Linux系统执行:

# /opt/ibm/db2/V10.5/bin/db2fmcu -d

第二步:如果启动了 FMC,请确定是否有实例被配置为在系统每次重新启动之后就

自动启动。 发出以下命令:

AIX系统执行:

# /opt/IBM/db2/V10.5/instance/db2iset -i db2inst1 -all

Linux系统执行:

# /opt/ibm/db2/V10.5/instance/db2iset -i db2inst1 -all

必须对 DB2 副本中的每个实例执行一次此命令。如果 db2iset 命令的输出包含以下内

容,那么这表示该实例已配置为自动启动:DB2AUTOSTART=YES

第三步:阻止这些实例自动启动。 发出以下命令:

AIX系统执行:

# /opt/IBM/db2/V10.5/instance/db2iauto -off db2inst1

Linux系统执行:

# /opt/ibm/db2/V10.5/instance/ db2iauto -off db2inst1

在完成了补丁包的安装之后,可以重新启动实例的自动启动:

AIX系统执行:

# /opt/IBM/db2/V10.5/instance/db2iauto -on db2inst1

Linux系统执行:

# /opt/ibm/db2/V10.5/instance/ db2iauto -on db2inst1

3. 确保对要更新的实例清除了所有 DB2 进程间通信。作为实例所有者,在每个物理分

区中运行以下命令:

# su - db2inst1

# ipclean

系统回显:/home/db2inst1/sqllib/bin/ipclean: Removing DB2 engine and client's IPC

resources for db2inst1.则执行成功。

1.1.2 安装补丁包

要安装补丁包:

DPF或者HADR或者PureScale环境中,需要在每台物理机器或者VM上安装DB2补丁

包:

1. 对于 root 用户安装,请作为 root 用户登录。

2. 切换至包含补丁包映像的目录。

3. 通过发出 installFixPack 命令来启动安装。 例如:

AIX系统执行:

# ./installFixPack -f update -b /opt/IBM/db2/V10.5

Linux系统执行:

# ./installFixPack -f update -b /opt/ibm/db2/V10.5

系统回显:

DBI1017I installFixPack is updating the DB2 product(s) installed in location

/opt/IBM/db2/V10.5.

DB2 installation is being initialized.

……

The execution completed successfully.

出现【The execution completed successfully.】后,补丁安装成功。

注: 缺省情况下,installFixPak 命令将落实 AIX 上所有已更新的文件集。在 AIX 上,如

果不希望落实更新,则应按如下所示发出带 -a 选项(用于“应用”而不是“落实”)的

installFixPak 命令, 一般情况下不用。

注意:如果是刚安装的DB2,还没有创建实例,则不需要进行下面的步骤。如果是在现有

DB2系统上进行更新,有实例存在,installFixPak之后,必须更新所有实例。

1.1.3 更新实例和DAS级别

更新该DB2副本(版本)下的所有实例和DAS以使用新的 DB2 级别:

步骤:

1. 备份db2profile or db2cshrc 文件。由于 db2iupdt 命令覆盖 db2profile 和 db2cshrc 脚本,

因此此操作是必需的。它不覆盖 userprofile 和 usercshrc 脚本。2.

2. 以 root 用户登录更新实例,对于每个实例,发出下列命令:

# install_home/instance/db2iupdt iname

其中iname 表示实例名,install_home 表示适用于DB2软件的安装目录。

3. 如果数据库管理服务器(DAS)实例存在并且是 DB2 版本 10.5 DAS 实例,要更新 DAS

实例,发出以下命令:

install_home/instance/dasupdt dasname

(好像install_home/instance/dasupdt 也可以)

其中dasname 表示 DAS 所有者名(dasusr1),install_home 表示DB2软件的安装目录。

1.1.4 更新数据库级别

升级数据库到最新FixPack Level:

以实例用户执行:

DB2V9里面:

$ db2updv9 -d dbname

DB2V10.5里面:

$ db2updv105 -d dbname

1.1.5 重启DB2实例和DAS

以实例用户执行:

1. 启动许可证服务器

$ db2licd -d

2. 启动实例(把该DB2副本下所有的实例都启动起来)

$ db2start

3. 启动DAS数据库管理器,以 DAS 所有者身份 (dasusr1) 执行:

# su - dasusr1

# db2admin start

# exit

1.1.6 绑定程序

所有实例的下的所有数据库都需要做这个操作。

1. 实例用户连接数据库:

$ db2 terminate

$ db2 connect to dbname

2. 绑定, 和 文件

注意: 和 包含 DB2 UDB 使用所必需的绑定文件的列表,@符号不能

少,因为bind只能操作.bnd文件,如果是.lst文件,必须带@符号。

执行:

$ db2 bind path/ BLOCKING ALL GRANT PUBLIC SQLERROR CONTINUE

$ db2 bind path/@ BLOCKING ALL GRANT PUBLIC ACTION ADD

$ db2 bind path/@ BLOCKING ALL GRANT PUBLIC ACTION ADD

其中path表示绑定文件所在的目录的全路径名,例如 $HOME/sqllib/bnd(如:

/db2home/db2inst1/sqllib/bnd)。

如:

$ db2 bind /home/db2inst1/sqllib/bnd/ blocking all grant public SQLERROR

CONTINUE

$ db2 bind /home/db2inst1/sqllib/bnd/@ blocking all grant public ACTION ADD

$ db2 bind /home/db2inst1/sqllib/bnd/@ blocking all grant public ACTION ADD

或:

$ db2 BIND $DB2DIR/bnd/ BLOCKING ALL GRANT PUBLIC SQLERROR

CONTINUE

$ db2 BIND $DB2DIR/bnd/@ BLOCKING ALL GRANT PULIC ACTION ADD

$ db2 bind $DB2DIR/bnd/@ BLOCKING ALL GRANT PULIC ACTION ADD

其中 $DB2DIR表示DB2副本(版本)的安装目录。

或:

$ db2 BIND $HOME/sqllib/bnd/ BLOCKING ALL GRANT PUBLIC

SQLERROR CONTINUE

$ db2 BIND $HOME/sqllib/bnd/@ BLOCKING ALL GRANT PUBLIC ACTION

ADD

$ db2 BIND $HOME/sqllib/bnd/@ BLOCKING ALL GRANT PUBLIC ACTION

ADD

其中 $HOME 表示数据库服务器实例的主目录。

3. 如果有嵌入式C/C++程序,也需要绑定:

db2rbind dbname -l logfile all

不管有没有都最好进行rbind一次,因为存储过程也需要rbind

4. 退出:

$ db2 terminate

1.1.7 验证版本以及状态

到这里补丁安装以及完成,需要进行DB2版本、数据库状态、完整性和有效性验证。

1.

执行db2版本检查命令(root用户运行)

AIX执行:

# /opt/IBM/db2/V10.5/bin/db2level

Linux 执行:

# /opt/ibm/db2/V10.5/bin/db2level

2. 数据库状态、完整性和有效性验证(实例用户运行):

$ db2 force applications all

$ db2 terminate

$ db2dart dbname /db

1.1.8 可能出现的问题

1. db2start出错

解决办法:

1. kill所有跟这个instance相关的进程、

2. IPClean

3. Run db2iupdt

如果kill之后还有db2fmxx这样京城,可以用:

fmcu -d 关掉db2fmcd进程,fm -i inst_name -D 关掉db2fmp进程,

再用ipclean命令清空进程间通信。

详细命令请参考1.1.1.5节

再用ipcs检查一下操作系统下有没有共享内存没被释放,用ipcrm -m/s来释放。

2. db2admin start 出错

解决办法:

1. kill所有跟这个admin server相关的进程、

2. IPClean

3. Run dasupdt

3. 在1.1.1.2节中停止实例后,使用ipcs检查一下有多少共享内存还没被释放

ipcs | grep db2

手动释放:

# ipcrm -m/s/ sid

自动释放的脚本(将如下代码写入.sh中,再用sh 执行):

for i in `ipcs |grep db2|awk '{print $2}'`

do

ipcrm -m $i

ipcrm -s $i

done

1.1.9 回退保障

本例是摘自DB2V9的补丁升级。

不可回退到DB2 9.1版本,只能回退到一个比FP5更低的Fix Pack,比如FP4、FP3、

FP1等。

在安装FP4、FP3、FP1等时,用以下命令:

./installFixPack -f -b DB2DIR

例如,要卸载 DB2 V9.1 FP2,请在 DB2 V9.1 FP1 安装映像中运行 installFixPack 命令,

如下所示:

./installFixPack -f -b DB2DIR

其中 DB2DIR 是要强制为较低级别的修订包映像的 DB2 数据库产品的位置。例如:

./installFixPack -f -b /opt/ibm/db2/V9.1

1.1.10 其他参考(以root用户执行)

无法停止实例强制杀进程:

Db2_ps

Db2_kill

ps -ef|grep db2inst1 |awk '{print $2}'|xargs kill -9

1) 安装前应运行 slibclean 来从内存中卸装未使用的共享库:

/usr/sbin/slibclean

如果ipcs | grep db2的输出结果仍然有未卸装的共享内存,那么执行以下命令

ipcs -m| grep db2 | awk '{print $2}'|xargs -i ipcrm -m {}

ipcs -s| grep db2| awk '{print $2}'|xargs -i ipcrm -s {}

2) 禁用故障监视器进程。 要停止故障监视器守护程序,请发出以下命令:

/opt/ibm/db2/V9.5/bin/db2fm -i db2inst1 -D

return non-zero rc, please see log file '/home/db2inst1/sqllib/db2dump/'

3) 如果启用了故障监视器协调程序(FMC),那么请阻止您的实例自动启动:

a. 要确定是否启用了 FMC,请发出以下命令:

/opt/ibm/db2/V9.5/bin/db2fmcu

FMC: down

如果启用了 FMC,那么您将看到类似于以下内容的输出:FMC: up: PID = 3415。使用

/opt/IBM/db2/V9.5/bin/db2fmcu –d 停止FMC

如果禁用了 FMC,那么 db2fmcu 命令的输出将是:FMC: down。

b. 如果启用了 FMC,请确定是否有实例配置为在每次系统重新启动之后自动启动。 发

出以下命令:

/opt/ibm/db2/V9.5/instance/db2iset -i db2inst1 -all 每个实例执行一次(用

/opt/ibm/db2/V9.5/bin/db2ilist 查看当前DB2副本下所有实例)

[i] DB2COMM=TCPIP

[i] DB2AUTOSTART=YES

[g] DB2SYSTEM=ibmdb2

[g] DB2INSTDEF=db2inst1

[g] DB2ADMINSERVER=dasusr1

如果 db2set 命令的输出包含以下内容,那么这表示该实例已配置为自动启动:

DB2AUTOSTART=YES

阻止这些实例自动启动。 发出以下命令:

/opt/ibm/db2/V9.5/instance/db2iauto -off db2inst1

/opt/ibm/db2/V9.5/instance/db2iset -i db2inst1 -all

[i] DB2COMM=TCPIP

[g] DB2SYSTEM=ibmdb2

[g] DB2INSTDEF=db2inst1

[g] DB2ADMINSERVER=dasusr1

如果有需要,请在完成修订包安装之后重新启用实例自动启动:

/opt/ibm/db2/V9.5/instance/db2iauto -on db2inst1

7)确保对要更新的实例清除了所有 DB2 进程间通信。作为实例所有者,在每个物理分

区中运行以下命令:

$HOME/sqllib/bin/ipclean

Removing DB2 engine and client's IPC resources for db2inst1.

本文标签: 实例命令安装启动数据库