Oracle Exadata软件升级是一个相对复杂的工程,其中牵涉到image版本与硬件的匹配,image版本与oracle集群及oracle database软件的匹配,整个升级过程可能会对firmware,操作系统和部署于操作系统上的exadata相关软件进行同步升级,升级过程风险较高,需要提前做好完善的准备工作,避免升级失败对升级后的系统运行产生影响,进而造成业务运行上的损失。
本次以一套X7-2 3+2 exadata为例,介绍如何将exadata软件版本从18.1.13.0.0升级至19.2.11.0.0,主要介绍下升级过程。升级过程包括:存储节点的image升级,计算节点的image升级,infiniband交换机。
第一步,滚动方式升级exadata的3个存储节点的cell image到19.2.11;
第二步,滚动方式升级exadata的2个计算节点的db image到19.2.11;
第三步,滚动方式升级exadata的2台交换机InfiniBand的版本至2.2.14-1;
首先在oracle官方网站上下载升级工具和相关介质:
p21634633_193300_Linux-x86-64.zip
*升级工具dbnodeupdate*
p30753855_192000_Linux-x86-64.zip
p30886159_192000_Linux-x86-64.zip
(Storage server software (19.2.11.0.0.200224) and InfiniBand switch software (2.2.14-1))
image升级过程均使用SSH将软件和命令传输至相应节点进行,故应建立操作节点与升级节点之间的互信关系,以便于升级进行。
本次升级过程以计算节点1作为主要操作节点,故应建立所有存储节点与计算节点1之间,所有infiniband交换机与计算节点1之间在root用户下的互信关系,因升级计算节点软件时2个计算节点互为操作节点,故应建立2个计算节点之间root用户下的互信关系。
首先在计算节点1 touch一个文件:cells_group,配置上3个存储节点的主机名(或者IP地址),另外touch一个文件:ibs_group,配置上2台IB交换机的主机名(或IP地址),touc一个文件:all_dbs_group,配置上2个计算节点的主机名。本例中各节点主机名假设为:cell01,cell02,cell03,iba0,ibb0,db01,db02。
执行下列命令,检查互信关系是否存在。如果不需要输入密码能够直接显示,则表示互信关系正常。
示 例:
1、存储节点信任关系检查
3、ib交换机信任关系检查
五、重启3个存储节点的ilom,重启2个计算节点ilom
# dcli -g ~/cells_group -l root 'uname -a'
# dcli -g ~/cells_group -l root 'cat etc/oracle-release'
B、检查image版本,所有存储节点版本应该一致
# dcli -g ~/cells_group -l root 'imageinfo'
# dcli -g ~/cells_group -l root 'imagehistory'
C、检查硬件设备,所有存储节点版本应该一致
# dcli -g ~/cells_group -l root 'dmidecode -s system-product-name'
D、检查cell节点网络配置信息与cell.conf保持一致
# dcli -g ~/cells_group -l root opt/oracle.cellos/ipconf -verify
修改asm_power_limit参数为32,以加速磁盘组数据rebalance操作,缩短存储节点升级完等待时间。
SQL> alter system set asm_power_limit=32 sid='*';
SQL> show parameter asm_power
检查确认磁盘组当前无rebalance操作
SQL> select * from gv$asm_operation;
no rows selected
1.4 存储节点的image升级
存储节点的升级为循环在线操作,不需要停止集群及oracle数据库,每次升级完成后重复前面的动作升级另一个存储节点,直至所有存储节点升级完成。
首先,在计算节点1上解压安装介质到/soft/patch/目录(此处不示范),此处解压后的目录为:/soft/patch/patch_19.2.11.0.0.200224 。
# cd soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -cells ~/cells_group -reset_force
# ./patchmgr -cells ~/cells_group -cleanup
首先检查3台cell的服务均正常
# dcli -g ~/cells_group -l root "cellcli -e list cell attributes msstatus,cellsrvstatus,rsstatus"
running running running
……
正常情况下每一行都显示为 running running running
# cat ~/cells_group
cell01
# cd soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -cells ~/cells_group -patch_check_prereq -rolling
# dcli -g ~/cells_group -l root "cellcli -e alter cell shutdown services all"
# dcli -g ~/cells_group -l root "cellcli -e list cell attributes msstatus,cellsrvstatus,rsstatus"
# screen
# cd soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -cells ~/cells_group -patch -rolling
less -rf patchmgr.stdout
日志:“SUCCESS: DONE: Finalize patch and check final status on cells.”代表升级动作完成。
# dcli -g cells_group -l root"cellcli -e list griddisk attributes name,asmmodestatus,asmdeactivationoutcome"
检查发现存储节点服务没有启动时,可能需要手工执行命令启动
启动cellsrv服务
# dcli -g cells_group -l root "cellcli -e alter cell startup services all"
# dcli -g ~/cells_group -l root 'imageinfo'
# su - grid
$ sqlplus as sysasm
SQL> select * from gv$asm_operation;
no rows selected
$ asmcmd
lsdg (确认无磁盘组需要rebalance)
确保 rebalance完成后方可进行下一步操作。
1.5 重复以上操作,只需每次更换cells_group文件中记录的cell节点信息即可,直至所有cell节点升级完成。
清理patchmgr运行后的环境
# cd soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -cells ~/cells_group -cleanup
首先到计算节点解压升级工具,此处解压完毕后目录为:/soft/patch/dbserver_patch_19.200224
A、禁用节点1集群自起,并关闭集群
禁止crs自动启动
# u01/app/18.0.0.0/grid/bin/crsctl disable crs
关闭集群
# u01/app/18.0.0.0/grid/bin/crsctl stop crs -f
停止exawatch
# opt/oracle.ExaWatcher/StopExaWatcher.sh
检查1节点nfs挂载的目录
# umount nfs_directory
添加“##”注释nfs自动挂载
在计算节点2操作
cat ~/all_dbs_group
db01
# cd soft/patch/dbserver_patch_19.200224
# ./patchmgr -dbnodes ~/all_dbs_group -precheck -iso_repo soft/patch/p30753855_192000_Linux-x86-64.zip -target_version 19.2.11.0.0.200224 -log_dir auto
在计算节点2操作
升级前单独备份一次
# cd soft/patch/dbserver_patch_19.200224
./patchmgr -dbnodes ~/all_dbs_group -backup -iso_repo soft/patch/p30753855_192000_Linux-x86-64.zip -target_version 19.2.11.0.0.200224 -log_dir auto
正式开始升级
# cd soft/patch/dbserver_patch_19.200224
# ./patchmgr -dbnodes ~/all_dbs_group -upgrade -nobackup -iso_repo soft/patch/p30753855_192000_Linux-x86-64.zip -target_version 19.2.11.0.0.200224 -log_dir auto
当操作界面显示以下结果,表示升级完成。
Exadata post install steps completed with success
升级期间,可登入升级节点的ilom观察升级过程是否出现异常
ssh db01-ilom
-> start SP/console
ESC 然后(退出
计算节点1升级后image检查
# imageinfo
# imagehistory
# /u01/app/18.0.0.0/grid/bin/crsctl enable crs
# vi /etc/fstab (取消注释)
# /u01/app/18.0.0.0/grid/bin/crsctl stat res -t
$ lsnrctl 检查监听状态
重复上述过程,对剩余计算节点进行升级操作。
最后,启动所有计算节点的Exawatch
# cat ~/all_dbs_group
db01
db02
计算节点1-2 启动ExaWatch
# dcli -g ~/all_dbs_group -l root "/opt/oracle.cellos/vldrun -script oswatcher "
# dcli -g ~/all_dbs_group -l root "ps -ef |grep -i ExaWatcher"
在db01操作:
# cat ibs_group
iba0
ibb0
执行预检测,确保检测成功才能进行下一步升级操作
# cd /soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -ibswitches ~/ibs_group -upgrade -ibswitch_precheck
iba0
升级操作
# screen
# cd /soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -ibswitches ~/ibs_group -upgrade
提示:
显示success表示升级成功,如果有Errors则需要修复后重新执行升级操作
# dcli -g ~/ibs_group -l root showunhealthy
# dcli -g ~/ibs_group -l root version
3IB switcher 2开始升级
# cat~/ibs_group
ibb0
升级操作
# screen
# cd /soft/patch/patch_19.2.11.0.0.200224
# ./patchmgr -ibswitches ~/ibs_group -upgrade
# dcli -g ~/ibs_group -l root versio

本期作者
本期作者|里 查 资深数据库工程师,拥有多年大型运营商数据库运维经验,精通Oracle Exadata一体机,擅长软硬兼施做运维,野路子对付真问题。