暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

业界核心系统最常用的一体机:Oracle Exadata,升级实操介绍

炬南山 2020-05-14
2665



01

Exadata升级简介


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交换机。


02

升级的操作流程

第一步,滚动方式升级exadata3个存储节点的cell image19.2.11

第二步,滚动方式升级exadata2个计算节点的db image19.2.11

第三步,滚动方式升级exadata2台交换机InfiniBand的版本至2.2.14-1


首先在oracle官方网站上下载升级工具和相关介质:


1
计算节点DB image升级使用的升级工具及介质

p21634633_193300_Linux-x86-64.zip

*升级工具dbnodeupdate*

p30753855_192000_Linux-x86-64.zip

2
存储节点cell image升级和InfiniBand升级使用介质

p30886159_192000_Linux-x86-64.zip

Storage server software (19.2.11.0.0.200224) and InfiniBand switch software (2.2.14-1)


03

升级前的准备工作

、准备各节点间的SSH互信关系

image升级过程均使用SSH将软件和命令传输至相应节点进行,故应建立操作节点与升级节点之间的互信关系,以便于升级进行。


本次升级过程以计算节点1作为主要操作节点,故应建立所有存储节点与计算节点1之间,所有infiniband交换机与计算节点1之间在root用户下的互信关系,因升级计算节点软件时2个计算节点互为操作节点,故应建立2个计算节点之间root用户下的互信关系。


互信关系建立示例如下:

首先在计算节点1 touch一个文件:cells_group,配置上3个存储节点的主机名(或者IP地址),另外touch一个文件:ibs_group,配置上2IB交换机的主机名(或IP地址),touc一个文件:all_dbs_group,配置上2个计算节点的主机名。本例中各节点主机名假设为:cell01cell02cell03iba0ibb0db01db02


执行下列命令,检查互信关系是否存在。如果不需要输入密码能够直接显示,则表示互信关系正常。


示 例:

1、存储节点信任关系检查

# cat ~/cells_group 
cell01
cell02
Cell03

# dcli -g ~/cells_group -l root "date"
[root@db01 ~]# dcli -g ~/cells_group -l root "date"
cell01: Mon Feb 10 11:02:55 CST 2020
cell02: Mon Feb 10 11:02:55 CST 2020
cell03: Mon Feb 10 11:02:55 CST 2020

2、计算节点信任关系检查
# cat ~/all_dbs_group
db01
db02
# dcli -g ~/all_dbs_group -l root "date"
[root@db01 ~]# dcli -g ~/all_dbs_group -l root "date"
db01: Mon Feb 10 11:03:36 CST 2020
db02: Mon Feb 10 11:03:36 CST 2020

3、ib交换机信任关系检查

# cat ~/ibs_group
iba0
ibb0
# dcli -g ~/ibs_group -l root "date"
[root@db01 ~]# dcli -g ~/ibs_group -l root "date"
iba0: Mon Feb 10 11:07:48 CST 2020
ibb0: Mon Feb 10 11:07:48 CST 2020

检查如果发现信任关系存在问题,可以使用使用如下命令,重建信任关系
# ssh-keygen -t rsa
# dcli -k -g ~/cells_group -l root
(输入root密码)
# dcli -k -g ~/ibs_group -l root
(输入root密码)
# dcli -k -g ~/all_dbs_group -l root
(输入root密码)


、清理计算节点后期安装的RPM
       一般情况下计算节点可能存在用户后期安装RPM包的情况,后期安装的RPM包往往因为升级过程中无法自动解决其依赖性关系而导致升级预检查失败,从而导致升级无法继续,故应提前删除用户定制的RPM包,待升级完成后再行安装。


备份各计算节点安装的RPM包情况:
# dcli -g ~/all_dbs_group -l root "rpm -q --all --last > home/oracle/rpm_infobackup.txt"

、检查计算节点和存储节点/目录情况,必要时进行清理,释放空间
检查计算节点和存储节点目录情况:
# dcli -g ~/all_dbs_group -l root "df -h "
# dcli -g ~/cells_group -l root "df -h "
删除不必要的文件和日志内容,对目录进行清理


、升级前Exachk检查
# cd home/oracle/exachk
# export RAT_TIMEOUT=1200
# export RAT_ROOT_TIMEOUT=6000
# ./exachk -a
分析exachk报告,确保exadata一体机无影响升级的严重软硬件错误。


五、重启3个存储节点的ilom,重启2个计算节点ilom

重启方法如下:
# ssh cell01-ilom
->reset SP




04

升级步骤
、存储节点cell image升级
1.1 检查内核、硬件设备、网络配置信息
A、检查操作系统的内核版本,所有存储节点之间版本应该一致

# 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


1.2 检查磁盘组属性disk_repair_time及参数asm_power_limit配置
由于升级存储节点时会导致当前升级存储节点离线,不合理的disk_repair_timeasm_power_limit配置在升级时间过长时会导致存储节点或者磁盘被踢出磁盘组。
示例:

修改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.3 检查存储节点的服务及数据库集群状态

1.4 存储节点的image升级

        存储节点的升级为循环在线操作,不需要停止集群及oracle数据库,每次升级完成后重复前面的动作升级另一个存储节点,直至所有存储节点升级完成。

      首先,在计算节点1上解压安装介质到/soft/patch/目录(此处不示范),此处解压后的目录为:/soft/patch/patch_19.2.11.0.0.200224 


A、清理之前patchmgr运行后的环境

# cd soft/patch/patch_19.2.11.0.0.200224

# ./patchmgr -cells ~/cells_group -reset_force

# ./patchmgr -cells ~/cells_group -cleanup


B、升级预安装检查

首先检查3cell的服务均正常

# dcli -g ~/cells_group -l root "cellcli -e list cell attributes msstatus,cellsrvstatus,rsstatus"

running running running

……

正常情况下每一行都显示为 running running running


C、确保cells_group文件中只有待升级存储节点的信息

# cat ~/cells_group

cell01


D、执行升级预检查,预检查没有错误方可进行下一步

# cd soft/patch/patch_19.2.11.0.0.200224

# ./patchmgr -cells ~/cells_group -patch_check_prereq -rolling


E、关闭cell节点1的服务

# dcli -g ~/cells_group -l root "cellcli -e alter cell shutdown services all"


F、检查cell节点1的服务

# dcli -g ~/cells_group -l root "cellcli -e list cell attributes msstatus,cellsrvstatus,rsstatus"


G、开始升级

# screen

# cd soft/patch/patch_19.2.11.0.0.200224

# ./patchmgr -cells ~/cells_group -patch -rolling


H、观察升级日志

less -rf patchmgr.stdout

日志:“SUCCESS: DONE: Finalize patch and check final status on cells.”代表升级动作完成。


J、升级完检查

# 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"


K、检查确认IMAGE版本

# dcli -g ~/cells_group -l root 'imageinfo'


L、升级完检查rebalance进度

# su - grid

$ sqlplus as sysasm

SQL> select * from gv$asm_operation;

no rows selected


$ asmcmd

lsdg   (确认无磁盘组需要rebalance)

确保 rebalance完成后方可进行下一步操作。


1.5 重复以上操作,只需每次更换cells_group文件中记录的cell节点信息即可,直至所有cell节点升级完成。


1.6 所有cell升级完后处理

清理patchmgr运行后的环境

# cd soft/patch/patch_19.2.11.0.0.200224

# ./patchmgr -cells ~/cells_group -cleanup


2、计算节点db image升级

首先到计算节点解压升级工具,此处解压完毕后目录为:/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


B、取消NFS挂载并注释/etc/fstab中的NFS挂载目录

检查1节点nfs挂载的目录

# umount nfs_directory

添加“##”注释nfs自动挂载


C、计算节点1升级预检测

在计算节点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


D、计算节点1开始升级

在计算节点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


E、升级完成后,需开启CRS自动启动,并取消注释nfs自动挂载,并检查集群及数据库状态

# /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"



3InfiniBand版本升级
A、升级预检测

db01操作:


# cat ibs_group

iba0

ibb0


执行预检测,确保检测成功才能进行下一步升级操作

# cd /soft/patch/patch_19.2.11.0.0.200224

# ./patchmgr -ibswitches ~/ibs_group -upgrade -ibswitch_precheck


B、IB switcher 1开始升级
# cat ~/ibs_group

iba0

升级操作

# screen

# cd /soft/patch/patch_19.2.11.0.0.200224

# ./patchmgr -ibswitches ~/ibs_group -upgrade


提示:

显示success表示升级成功,如果有Errors则需要修复后重新执行升级操作


C、检查IB状态

# 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


D、检查IB状态
# dcli -g ~/ibs_group -l root showunhealthy

# dcli -g ~/ibs_group -l root versio




05

总   结       
至此,exadata软件升级工作就完成了,升级完成后可使用exachk对exadata做一次全面性的健康检查。oracle提供的升级工具和升级方法已经十分成熟,升级过程中的大部分工作都可以自动完成,并对升级前的风险,升级工具也会提出预警和建议的处理方法,从而保证升级顺利完成。


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



文章转载自炬南山,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论