如何升级Exadata 存储节点db image

原文链接:  http://www.dbaleet.org/how_to_upgrade_db_image_of_exadata/

 

相比cell image而言,db image升级的风险要小很多,因为db节点没有存储任何数据。当然为了保证万无一失,在升级db image之前请先做好数据库备份。

在升级过程中db image的版本允许与cell image版本不一致,但是不允许db和cell的image的版本长期不一致,因为有可能潜在版本兼容性的问题。

当前db image补丁的介质为一个iso文件,类似于操作系统的补丁包。在早期的版本中,是使用rpm -UVh这样的方式来更新Exadata db节点的rpm包,这种方式相对比较繁琐,容易出错,所以在以前的版本中存在一种被称为minimal pack的补丁,这个补丁只升级db节点的操作系统内核,firmware, infiniband驱动等重要组建,其它的rpm放在另外一个补丁内,作为可选安装。从11.2.3.1.0开始采用的是Linux的yum来完成的,yum的优势在于简单,并且能自动解决rpm之间的依赖性。可以搭建一台单独的yum server作为yum源,这样所有的db节点作为yum的客户端都从这台服务器获取rpm包,然后进行升级。也可以采用db节点本机作为yum的源,下面就是将db节点本机作为yum源完成一台db节点升级的详细步骤。

  • 将iso文件mount到db节点的一个本地目录;
  • 在db节点安装所需的yum的rpm包;
  • 配置yum的源,将其源地址指定为iso文件挂载的目录;
  • 运行yum update对db节点的所有rpm包进行升级;
  • 删除老版本的rpm包

这一个过程被oracle封装到一个脚本里面,所以整个过程非常简单,只需要运行一个脚本,剩下的工作都交给自动脚本来完成。详细步骤如下:

升级前的准备工作

1.准备db image的patch

下载以下介质并且使用root用户上传到所有db节点的/u01/patches/linux_patches/iso目录下:

db节点的image p16432033_112321_Linux-x86-64.zip

db节点yum包p13741363_112321_Linux-x86-64.zip

解压两个介质安装包:

#cd /u01/patches/linux_patches/iso
#unzip p16432033_112321_Linux-x86-64.zip
#unzip p13741363_112321_Linux-x86-64.zip

解压以后会得到一个名为13741363文件夹和一个名为 112_latest_repo.iso的文件

2. 对dbserver进行备份:

给dbserver_backup.sh文件赋予执行权限:

#chmod +x /u01/patches/linux_patches/13741363/11.2.3.2.1/dbserver_backup.sh

运行备份脚本:

#sh /u01/patches/linux_patches/13741363/11.2.3.2.1/dbserver_backup.sh

整个过程大约需要30分钟:

 

3. 卸载所有的nfs文件系统

如果使用了nfs,请先umount nfs。

 

4. 将iso文件mount到对应的文件系统

 

mkdir -p /mnt/iso/yum/unknown/EXADATA/dbserver/11.2/latest
mount –o loop /u01/patches/linux_patches/iso/ 112_latest_repo_130302.iso \
/mnt/iso/yum/unknown/EXADATA/dbserver/11.2/latest

检查确认mount成功:

#dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l root 'ls -lrt /mnt/iso/yum/unknown/EXADATA/dbserver/11.2/latest'

 

 升级过程

1. 禁用并停止数据库的crs

#crsctl disable crs
#crsctl stop crs

完成以后使用如下方式进行验证:

#dcli -g dbs_group -l root "ps -ef | grep grid"

2. 安装升级之前安装升级所需的rpm包:

#cd /u01/oracle/linux_patches/13741363/11.2.3.2.1/bootstrap.uln
# ./bootstrap.sh file:///mnt/iso/yum/unknown/EXADATA /dbserver/11.2/latest/x86_64

这个过程将老旧的rpm包升级。花费的时间比较长,一般需要四十分钟左右。

这个过程主机会自动重启两次。

3. 继续完成旧的rpm包升级
重新mount这个iso文件,继续完成rpm包的升级。

mount –o loop /u01/patches/linux_patches/iso/ 112_latest_repo_130302.iso \

/mnt/iso/yum/unknown/EXADATA/dbserver/11.2/latest

cd /u01/oracle/linux_patches/13741363/11.2.3.2.1/bootstrap.uln

 

# ./bootstrap2.sh

 

4. 对oracle二进制文件使用rds进行relink

#/u01/app/11.2.0.3/grid/crs/install/rootcrs.pl –unlock
#su - oracle
#echo $ORACLE_HOME
#echo $PATH
#ls -lrt $ORACLE_HOME
#export ORACLE_HOME=/u01/app/oracle/product/11.2.0.2/dbhome_1
#export PATH=$ORACLE_HOME/bin:$PATH
#cd $ORACLE_HOME/bin
#relink all
#make -C $ORACLE_HOME/rdbms/lib -f ins_rdbms.mk ipc_rds ioracle

5. patch并重新enable crs

#/u01/app/11.2.0.2/grid /crs/install/rootcrs.pl -patch
#/u01/app/11.2.0.2/grid /bin/crsctl enable crs

6. 挂载NFS

如果有nfs,请重新挂在nfs设备。

升级后验证工作

通过以下命令,验证版本信息是否正确:

#dcli -g dbs_group -l root “imageinfo”
#dcli -g dbs_group -l root “imagehistory”
#dcli -g dbs_group -l root “uname -a”
#dcli -g dbs_group -l root “rpm -qa | grep kernel”
#dcli -g dbs_group -l root “rpm -qa | grep ofa”
#dcli -g dbs_group -l root “rpm -qa | grep ofed”

 

查看crs所有资源的状态是否正常:

#crsctl stat res -t

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *