1. 概述
1.1 场景介绍
Oracle数据库位于企业数据中心核心位置,通常支撑着关键应用程序的运行,本文主要聚焦如何高效利用shell脚本进行Oracle RAC数据库的部署。
1.2 组件介绍
本文主要是针对Oracle RAC 19c版本进行安装部署,在部署前,需要在官网下载对应的安装部署包,可以从下面官网地址进行下载对应版本的安装包
主要安装包如下表所示:
安装包 |
cksum |
Md5 |
说明 |
LINUX_X64_193000_grid_home.zip |
131628984 2889184573 |
b7c4c66f801f92d14faa0d791ccda721 |
GI软件 |
LINUX_X64_193000_db_home.zip |
3680739943 3059705302 |
1858bd0d281c60f4ddabd87b1c214a4f |
Oracle软件 |
2. 资源规划
2.1 网络资源规划
数据库客户端通过Oracle Public Network网络平面访问数据库服务。
为了保证高可用和故障恢复,Oracle RAC要求每个节点配置一个虚拟IP ( Virtual IP),当发生故障时,虚拟IP会在不同节点之间漂移。另外,用户需要在Oracle Public Network子网中申请一个scan IP,该scan IP负责与数据库客户端通信,会把请求转到对应的虚拟IP,然后转到真实的Oracle RAC节点。
Oracle RAC节点之间需要通过Oracle Private Network平面互相通信,通信内容包括网络心跳和Cache Fusion,该网络平面只负责节点之间的内部通信,并且不能被外部访问,所以需要单独规划一个子网。
Oracle RAC集群地址规划,例如:
Oracle RAC节点名称 |
Public Network IP地址 |
Private Netwrk IP地址 |
虚拟IP地址 |
Scan IP地址 |
racnode1 |
11.50.36.143 |
11.150.132.143 |
11.50.63.72 |
11.50.63.74 |
racnode2 |
11.50.36.144 |
11.150.132.144 |
11.50.63.73 |
2.2 硬盘资源规划
除了创建主机自带的系统盘,本示例中主要使用iSCSI共享云硬盘,并挂载至Oracle RAC节点1和节点2,即racode1和racnode2。通过共享盘创建Oracle ASM(自动存储管理,Automatic Storage Management)磁盘组,其中磁盘组规划如下表所示。
ASM磁盘组名称 |
磁盘容量 |
磁盘个数 |
使用说明 |
GRID |
40G |
3 |
仲裁盘 |
DATA |
400G |
4 |
数据盘 |
REDO |
100G |
2 |
REDO盘 |
2.3 主机资源规划
这 2 台服务器组成一个集群。
节点类型 |
节点名称 |
实例名 |
Oracle RAC 节点 1 |
racnode1 |
swdbnew |
Oracle RAC 节点 2 |
racnode2 |
swdbnew |
3. 脚本一览
脚本 |
功能说明 |
待优化 |
实现节点1 Oracle RAC 19C软件安装前的若干环境参数一键配置 |
因调试机器网络限制,脚本只支持生成grid及oracle用户的密钥,暂不支持将密钥推送到对端节点,需要手动拷贝到对端节点实现节点间实现免密 |
|
实现节点2 Oracle RAC 19C软件安装前的环境参数一键配置 |
||
检查上述脚本执行后参数是否配置正确 |
|
|
实现安装grid集群前的软件包解压,2节点cvuqdisk安装及安装文件配置 |
|
|
实现grid集群安装前检查(grid节点安装前,需要根据检查结果解决问题再进行grid安装),如果检查成功,将自动进行grid软件安装 |
Grid软件安装结果需要人工打开日志进行判断 |
4. 使用指导
4.1 脚本使用前提
- 确保待部署机器已安装可用且兼容数据库版本的OS
- 确保待部署机器间已实现root用户免密互信(需手动部署)
- 确保资源规划完成
- 确保规划IP可用且不冲突
- 确保硬盘资源中规划的盘已经映射到2台主机上
- 确保两个安装包已上传到待部署机器的某个目录下,zip
LINUX_X64_193000_db_home.zip
4.2 节点参数一键配置
- 脚本功能
实现Oracle RAC 19C软件安装前的若干环境参数一键配置,简化为脚本一键执行,无需单独命令行执行(扩展swap分区,安装Oracle Rac的依赖包,修改Oracle RAC节点主机名,配置Oracle RAC节点的hosts,禁用avahi-daemon,禁用NTP服务,修改系统配置文件fstab,关闭防火墙,关闭selinux,创建Grid和Oracle用户和组,创建数据库的目录和修改权限,环境变量配置,配置磁盘UDEV规则,grid和oracle用户配置互信密钥生成)。
- 使用步骤
- 本地打开如下脚本,根据资源规划更改如下参数后保存;
待更改字段值 |
说明 |
node1="racnode1" |
Oracle RAC节点名称1 |
node2="racnode2" |
Oracle RAC节点名称2 |
grid_passwd="xxxxxx@123!" |
自定义的grid用户密码 |
oracle_passwd=" xxxxxx @123!" |
自定义的oracle用户密码 |
oracle_sid="swdbnew1" oracle_sid="swdbnew2" |
自定义的oracle_sid 节点1为oracle_sid+1 节点2为oracle_sid+2 |
grid_sid="+ASM1" grid_sid="+ASM2" |
自定义的ASM 节点1为+ASM1 节点2为+ASM2 |
#public ip 11.50.36.143 ${node1} 11.50.36.144 ${node2} #virtual ip 11.50.63.72 ${node1}-vip 11.50.63.73 ${node2}-vip #scan ip 11.50.63.74 cluster-scanip #private ip 11.150.132.143 ${node1}-priv 11.150.132.144 ${node2}-priv |
Oracle RAC集群地址规划中的值 |
memneed=29*1024*1024 |
swap 分区值,脚本中默认是29G,可根据实际情况修改 |
- 使用 root 用户登录节点1,上传脚本至节点1,使用 root 用户登录节点2,上传脚本至节点2;
- 在2个节点脚本所在目录下,各自执行如下命令:
bash 文件名.sh
例如:
节点1:bash step1_for_node1.sh
节点2: bash step1_for_node2.sh
4.3 节点参数配置后检查
- 注意:
因机器网络限制,脚本执行结束后,暂不支持将密钥推送到对端节点,需要手动拷贝到对端节点实现节点间实现免密,若两台机器间网络互通,可自行更改脚本实现脚本免密。
- 脚本功能
检查是否所有配置参数均配置正确。
Bash envcheck.sh
4.4 Grid参数一键配置
- 脚本功能:实现安装grid集群前的软件包解压及安装文件配置
- 脚本前提:前提是建立了root用户的互信关系,因为需要scp
- 使用步骤
- 本地打开如下脚本,根据资源规划更改如下参数后保存
待更改字段值 |
说明 |
grid_zip="/var/oracle_zip/LINUX.X64_193000_grid_home.zip" |
grid安装包所在绝对路径,将根据此路径解压LINUX.X64_193000_grid_home.zip |
asm_ocr_name="GRIDDG" |
自定义的仲裁group名称 |
ocr_disk="/dev/oracle/vote_sdc,/dev/oracle/vote_sdd,/dev/oracle/vote_sde" |
3个仲裁盘在/etc/udev/rules.d/99-oracle-asmdevices.rule中的SYMLINK值 |
net_interface_list="bond0.170:11.50.32.0:1,bond1.321:11.150.128.0:5" |
(重要!这里要填写正确,否则部署不会成功!)后缀1为公网网段,后缀5为私网网段,根据网络规划填写对应的网段 |
- 使用 root 用户登录节点1,上传脚本至节点1
- 仅需要在主节点上执行脚本,如下命令:
bash 文件名.sh
例如:
节点1:bash step2.sh
4.5 Grid安装前检查
- 脚本功能
实现grid集群安装前检查(grid节点安装前,需要根据检查结果解决问题再进行grid安装),如果检查成功,将自动进行grid软件安装
- 使用步骤
- 本地打开如下脚本,根据资源规划更改如下参数后保存
待更改字段值 |
说明 |
precheck_log="/home/grid/grid_check1.log" |
自定义的安装前检查目录,后续通过查看此日志判断是否环境检查成功 |
- 使用 root 用户登录节点1,上传脚本至节点1
- 仅需要在主节点上执行如下命令:
bash 文件名.sh
例如:
节点1:bash step3.sh