原文链接: 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