【Oracle】12C RAC系列之01 RAC高可用搭建(Linux)
目录
- 1 部署环境说明
- 2 一图流虚拟机安装
- 2.1 节点1系统安装
- 2.2 节点1主机配置优化
- 2.2.1 修改N1默认主机名
- 2.2.2 图形化网卡设置IP
- 2.2.3 配置网卡文件
- 2.2.4 添加DNS2
- 2.2.5 以命令行重启系统
- 2.2.6 设置系统时间同步
- 2.2.7 关闭防火墙与自启动
- 2.2.8 关闭SELINUX
- 2.2.9 配置hosts地址映射关系
- 2.2.10 设置系统资源限制
- 2.2.11 修改shm内存
- 2.2.12 修改系统内核参数
- 2.2.13 创建oracle用户与组
- 2.2.14 设置oracle账户密码
- 2.2.15 显示账户信息
- 2.2.16 创建目录与授权
- 2.2.17 修改环境变量
- 2.2.18 修改文件检索
- 2.2.19 关闭透明大页
- 2.2.20 修改网卡文件
- 2.2.21 添加grub文件配置(位置不同)
- 2.2.22 共享存储存储配置
- 2.2.23 关闭ntp使用ctss
- 2.2.24 禁止avahi-daemon多波通信
- 2.2.25 配置额外文件network
- 2.3 节点2主机配置优化(略)
- 3 共享磁盘配置
- 4 GRID集群软件安装
- 5 ORACLE软件安装
部署环境说明
- Centos7.6两台组RAC集群,6GB(RAC有效6GB)内存,60GB本地存储
- centos7.8一台部署ADG服务器
- VMMware15.6
- Oracle12C 12.2、Grid软件一套
- VNC、Xshell远程连接工具
- 相关部署文件链接:https://pan.baidu.com/s/1ppgkQLbZ-PbUN2eqJYapJQ 提取码:7777
- 架构示例图(参考)
图 1 - IP规划
一图流虚拟机安装
节点1系统安装
Vmmware网络部分设置优化
- root密码123456
- sys密码root123
- Public网卡选择nat模式
- Private网卡选择主机模式
图 2
图 3时区-上海
图 4
语言支持(按需选择)
图 5
安装插件
图 6
图 7
分区
- /boot 1GB
- swap 8GB
- / 51GB
图8节点1主机配置优化
修改N1默认主机名
vi /etc/hostname
mrzhu01图形化网卡设置IP
图 9配置网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
图 10添加DNS2
图 11以命令行重启系统
systemctl set-default multi-user.target
设置系统时间同步
- 本文使用公网作为NTP服务器,项目中可用高可用的本地服务器作为时间同步服务器
chmod +x /etc/rc.d/rc.local
echo /usr/sbin/ntpdate ntp.aliyun.com >> /etc/rc.d/rc.local关闭防火墙与自启动
systemctl stop firewalld
systemctl disable firewalld关闭SELINUX
- 防止意外篡改权限配置导致服务器启动失败
vi /etc/selinux/config
图 12配置hosts地址映射关系
echo -e \'\\n\' >> /etc/hosts echo \'#public\' >> /etc/hosts echo 192.168.230.101 mrzhu01 >> /etc/hosts echo 192.168.230.102 mrzhu02 >> /etc/hosts echo -e \'\\n\' >> /etc/hosts echo \'#virtual\' >> /etc/hosts echo 192.168.230.103 mrzhu01-vip >> /etc/hosts echo 192.168.230.104 mrzhu02-vip >> /etc/hosts echo -e \'\\n\' >> /etc/hosts echo \'#private\' >> /etc/hosts echo 10.10.10.11 mrzhu01-priv >> /etc/hosts echo 10.10.10.12 mrzhu02-priv >> /etc/hosts echo -e \'\\n\' >> /etc/hosts echo \'#scan-ip\' >> /etc/hosts echo 192.168.230.105 rac-scan >> /etc/hosts设置系统资源限制
echo oracle soft nproc 2047 >> /etc/security/limits.conf echo oracle hard nproc 16384 >> /etc/security/limits.conf echo oracle soft nofile 1024 >> /etc/security/limits.conf echo oracle hard nofile 65536 >> /etc/security/limits.conf echo oracle soft stack 3145728 >> /etc/security/limits.conf echo oracle hard stack 3145728 >> /etc/security/limits.conf echo oracle soft memlock 3145728 >> /etc/security/limits.conf echo oracle hard memlock 3145728 >> /etc/security/limits.conf echo grid soft nproc 2047 >> /etc/security/limits.conf echo grid hard nproc 16384 >> /etc/security/limits.conf echo grid soft nofile 1024 >> /etc/security/limits.conf echo grid hard nofile 65536 >> /etc/security/limits.conf echo grid soft stack 3145728 >> /etc/security/limits.conf echo grid hard stack 3145728 >> /etc/security/limits.conf修改shm内存
- 一般为物理内存的一半
echo tmpfs /dev/shm tmpfs defaults,size=6g 0 0 mount -o remount /dev/shm/
图 13修改系统内核参数
touch /etc/sysctl.d/97-oracledatabase-sysctl.conf vi /etc/sysctl.d/97-oracledatabase-sysctl.conf fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 1572864 #此参数值=X字节/4096 kernel.shmmax = 6442450944 #物理内存的80%GBx1024^3=所求参数X字节 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586
sysctl --system #立即生效
sysctl -a | grep shmmax #检查参数
sysctl -a | grep shmmall
创建oracle用户与组
groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
useradd -g oinstall -G dba,oper,asmdba,asmadmin oracle
useradd -g oinstall -G dba,asmoper,asmadmin,asmdba grid
设置oracle账户密码
passwd grid #确定grid与oracle账户密码,默认为oracle
passwd oracle
显示账户信息
id grid
id oracle
创建目录与授权
mkdir -p /u01/app/oracle/product/12.2.0/db_1 #ORACLE家目录
mkdir -p /u01/app/grid #grid的oracle_base目录
mkdir -p /u01/app/12.2.0/grid #grid的家目录,不能是包含关系
chown -R oracle:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/12.2.0
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
修改环境变量
- grid账户变量
su – grid
vi .bash_profile
N1:export ORACLE_SID=+ASM1 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/12.2.0/grid export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATHN2:
export ORACLE_SID=+ASM2 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/12.2.0/grid export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH - oracle用户环境变量
N1:export ORACLE_SID=mrzhu01 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATHN2:
export ORACLE_SID=mrzhu02 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH修改文件检索
vim /etc/nsswitch.conf
图 14
关闭透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
vim /etc/default/grub
图 15
grub2-mkconfig -o /boot/grub2/grub.cfg
- 重启后查看参数
cat /proc/cmdline
修改网卡文件
- 备份旧文件,修改文件名
cp ifcfg-ens33 ifcfg-ens33.bak cp ifcfg-ens33 ifcfg-eth0 cp ifcfg-ens33 ifcfg-eth1 rm ifcfg-ens33 - 修改eth0
图 16 - 同理再修改eth1(心跳网络IP 10.10.10.11无需配置DNS、网关)
添加grub文件配置(位置不同)
vim /etc/sysconfig/grub
图 17
grub2-mkconfig -o /boot/grub2/grub.cfg
- 需要重启
共享存储存储配置
- 创建裸磁盘规则
vim /etc/udev/rules.d/70-persistent-ipoib.rules - 内容如下
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="00:0c:29:5c:9a:56", NAME="eth0" ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="00:0c:29:5c:9a:60", NAME="eth1"
图 18 - 优雅的安全重启
init 6
关闭ntp使用ctss
systemctl stop chronyd
systemctl disable chronyd
mv /etc/chrony.conf /etc/chrony.conf.bak
禁止avahi-daemon多波通信
- 防止意外重启
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
配置额外文件network
vi /etc/sysconfig/network
图 19
节点2主机配置优化(略)
克隆节点1作为节点2
- 关闭node1
Init 0 - 克隆节点1
共享磁盘配置
N1磁盘配置
新建磁盘-1
- 20GB
图 20
设置磁盘属性
图 21
创建磁盘-2
- 25GB
图 22
图 23
选择磁盘SCSI号
- 两节点需一致
图 24
N2磁盘配置
在node2上链接共享磁盘
图 25
- 找到磁盘文件
图 26
设置磁盘参数
- 磁盘号一致
- 独立永久模式
图 27
图 28
图 29
修改虚拟机配置文件vmx
N1配置
-
关闭node1主机
-
在node1主机配置上修改磁盘为独立永久模式
图 30
在vmx文件末尾添加scsi1:0.deviceType = "disk" scsi1:1.deviceType = "disk" disk.locking = "FALSE" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.dataCacheMinReadAheadSize ="0" diskLib.dataCachePageSize ="4096" diskLib.maxUnsyncedWrites = "0" scsi1.sharedBus = "VIRTUAL" scsi1:0.mode = "independent-persistent" scsi1:1.mode = "independent-persistent" -
如下图所示:
图 31 -
打开node1 虚拟机设置查看磁盘属性是否设置成功
图 32
N2配置
- 在node2上再次添加vmx同样配置
图 33 - 确认node2虚拟机查看磁盘属性
图 34
Udev存储配置
- 存储使用介绍:
Redhat5+11G+RAC使用asmlib创建逻辑共享存储,redhat7+12c+RAC使用udev创建共享存储。 - 使用udev绑定磁盘的目的:
防止止节点重启后磁盘sd名称发生互换,例如sdc与sdb发生改变,两机共享次磁盘实际容量不一致,故使用udev绑定磁盘的UUID。
绑定关系如下,系统不以sd号识别磁盘,只用UUID进行识别。
Asmdisk1 ----uuid1---sdb 20g
Asmdisk2 ----uuid2---sdc 25g
准备工作
-
打开使用node1快照()创建的node2虚拟机
-
修改主机名mrzhu02 ,修改网卡业务ip 为192.168.230.102,心跳ip为10.10.10.12
-
使用init 6安全重启节点1系统
确定磁盘UUID
-
在node1与node2 上查看磁盘
fdisk -l
图 35
图 36 -
查看磁盘uuid
/usr/lib/udev/scsi_id -g -u -d /dev/sdb ##share盘 1 20GB
/usr/lib/udev/scsi_id -g -u -d /dev/sdc ##share盘 2 25GB
图 37
N1上配置udev-rules文件
-
创建规则有两种情况
未分区形式(本文使用方法):磁盘是sdb,sdc 等直插形式存在于主机之上。
已分区形式:磁盘被分区为sdb1、sdb2、等子分区,不想一次性分配完。(不建议) -
在node1上创建rules配置文件,映射配置如下:2行2个盘,sd*通配符匹配,asmdisk1--uuid1 ,asmdisk2--uuid2 作对应绑定的修改即可。
touch /etc/udev/rules.d/99-oracle-asmdevices.rules
内容如下:KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2979fe4f69c8d260d2e857d0809", RUN+="/bin/sh -c \'mknod /dev/asmdisk1 b $major $minor; chown grid:asmadmin /dev/asmdisk1; chmod 0660 /dev/asmdisk1\'" KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29214ff56e634903e1606e292f9", RUN+="/bin/sh -c \'mknod /dev/asmdisk2 b $major $minor; chown grid:asmadmin /dev/asmdisk2; chmod 0660 /dev/asmdisk2\'"
图 38 -
注意本次vmmware是15pro版本,可以修改新增vmx文件中
-
disk.EnableUUID = “TRUE”
-
重启udev服务
systemctl restart systemd-udevd.service udevadm control --reload-rules /sbin/udevadm trigger --type=devices --action=add -
查看asm磁盘
ll /dev/asm*
图 39
如果不生效使用/sbin/udevadm trigger --type=devices --action=change试下,否则就是配置文件错误
配置N2上的rules文件
- 拷贝rules文件到node2上
scp 99-oracle-asmdevices.rules mrzhu02:/etc/udev/rules.d
图 40 - 在node2上重启udev
systemctl restart systemd-udevd.service udevadm control --reload-rules /sbin/udevadm trigger --type=devices --action=add
图 41
如果后面配置出错,可以先把rac所有文件复制一份,因为共享磁盘对于快照不生效。
GRID集群软件安装
软件准备
使用Xshell上传软件到node1
- 所有软件在已百度云中,oracle、grid、rpm包、oracle补丁包
- 本文文件上传目录为/opt/soft
图 42 - 修改文件夹权限
chmod -R 777 /opt/soft/解压grid软件包
- unzip解压到 /opt/soft/grid 目录下
- 切换到grid用户查看grid家目录
图 43
图 44 - 将解压后的grid文件移动到家目录中
mv /opt/soft/grid/* /u01/app/12.2.0/grid/执行验证脚本
- 脚本路径如下,查看缺少哪些包
图 45
./runcluvfy.sh stage -pre crsinst -n mrzhu01,mrzhu02 -verbose
安装cvu包
- 在grid用户下切换为root用户
su – root
输入密码 - 查找cvu包路径
图 46
图 47
图 48 - 安装cvu包
rpm -ivh cvuqdisk-1.0.10-1.rpm
图 49 - 拷贝到node2同样安装
scp cvuqdisk-1.0.10-1.rpm mrzhu02:/opt
安装其余缺失包
- 其余的包在iso里面查找,如下所示
图 50
图 51 - 上传其余包到node1(本文有4个包,左边红框内)并安装
图 52 - 执行安装指令
rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm rpm -ivh ksh-20120801-139.el7.x86_64.rpm rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm rpm -ivh tigervnc-server-1.8.0-13.el7.x86_64.rpm - 拷贝到N2在node2上执行同样安装
scp *.rpm mrzhu02:/opt/ rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm rpm -ivh ksh-20120801-139.el7.x86_64.rpm rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm rpm -ivh tigervnc-server-1.8.0-13.el7.x86_64.rpm - 在node1上再次执行grid检查脚本
图 53
./runcluvfy.sh stage -pre crsinst -n mrzhu01,mrzhu02 -verbose
Verifying User Equivalence ...FAILED#这个是ssh对等同通信报错,将在下面进行设置
准备VNC 以安装GRID
- 为什么要使用VNC而不是Xshell的命令行或者manager可视化
- 防止因为网络问题断开而导致的安装中断。
- 配置VNC软件(在node1 grid账户下)
设置密码
Vncpasswd
配置端口
(1 为5901; :2为5902)
vncserver :1
图 54 - 使用grid用户打开vnc链接到linux桌面,vnc密码123456与root同
图 55
准备GRID补丁
- 安装防bug补丁26247490,否则安装会提示重启报错,在https://support.oracle.com/portal/下载,需要特定账号
图 56
图 57 - 上传升级包到node1的/opt/soft/后安装
chmod 777 p26247490_12201180417ACFSApr2018RU_Linux-x86-64.zip su – grid cd /opt/soft/ unzip p26247490_12201180417ACFSApr2018RU_Linux-x86-64.zi
图 58
GRID软件安装
VNC图形化带补丁安装GRID
- 使用grid用户登录vnc桌面,执行安装命令,grid登录方法见4.1.6
图 59
cd /u01/app/12.2.0/grid/
./gridSetup.sh -applyOneOffs /opt/soft/26247490/26247490/ - 弹出以补丁形式安装grid图形化界面
图 60
图 61 - 设置集群命(默认)与scan域名(查看hosts文件),监听端口1521默认
图 62 - 添加节点
图 63
图 64
图 65 - 设置ssh对等通信
图 66
图 67
图 68
验证SSH对等通信
- 在node1上验证ssh
图 69
图 70
图 71 - grid账户下使用脚本再次检查对等性ssh
cd /u01/app/12.2.0/grid/
./runcluvfy.sh stage -pre crsinst -n mrzhu01,mrzhu02 -verbose
没有发现ssh报错,并忽略一下报错(resolvf报错)
图 72
图 73
设置网络
- 继续grid软件安装
图 74
图 75
设置ASM存储
图 76
图 77
图 78
图 79
设置sys密码
图 80
图 81
IPMI与EM
图 82
图 83
操作组
图 84
安装路径
图 85
- 提示node1上软件基目录里面有文件。删除后再安装即可
图 86
oraInventory目录
图 87
图 88
安装检查
图 89
图 90
图 91
图 92
root账户下执行脚本
图 93
- node1依次执行(建议通过vnc执行脚本,否则网络中断的话脚本执行也会中断,此集群安装失败,需要回退清空旧脚本配置)
/u01/app/oraInventory/orainstRoot.sh
图 94
/u01/app/12.2.0/grid/root.sh
图 95 - 经过19个步骤该脚本执行完成
图 96 - 在node2同样执行脚本
grid账户下设置vnc
Vncpasswd
Vncserver :2
依次执行脚本
/u01/app/oraInventory/orainstRoot.sh
图 97
/u01/app/12.2.0/grid/root.sh
图 98
图 99 - 脚本执行完成,点击ok
图 100
开始安装进度
- 由于dns报错,此时会出现集群安装错误(集群本身正常),忽略即可。
图 101
图 102
图 103 - 安装完毕
图 104
修改节点2的grid账户环境变量
- ASM实例名改为+ASM2
su - grid
vim .bash_profile
图 105
source .bash_profile
测试集群软件
- 在grid账户下测试grid软件
- 忽略aflsnr状态
查看集群进程状态
crs_stat -t
图 106
查看集群所有资源状态
crsctl stat res -t
图 107
图 108
查看asm共享存储资源
ps -ef|grep asm
图 109
图 110
ORACLE软件安装
准备工作
停止grid集群进程
- node1
切换root账户
cd /u01/app/12.2.0/grid/bin/
./crsctl stop has
图 111 - node2
cd /u01/app/12.2.0/grid/bin/
./crsctl stop has
图 112
备份虚拟机全部文件
- 复制全部文件夹做备份,防止安装失败。
查看scan-ip
图 113
设置VNC
- 仅在node1上执行安装
- 使用oralce账户与vnc安装oracle软件
- 设置VNC
su – oracle
vncpasswd
vncserver :2 - 在调试机上使用VNC图形化连接node1
图 114
解压oracle软件
unzip oracle12cR2_12201_linux64_database.zip
图 115
ORACLE软件安装
执行安装脚本
- oracle账户执行安装
- 切换解压后目录脚本位置
cd database/
./runInstaller
图 116
安装过程
图 117
图 118
图 119
SSH对等通信
图 120
图 121
图 122
- 测试SSH对等通信
图 123
选择版本
图 124
图 125
oracle安装目录确认
图 126
- 检查是否与oracle环境变量中一致
图 127
用户组
图 128
安装检查
图 129
图 130
图 131
图 132
root脚本执行
- 使用root账户node1执行脚本
图 133
su - root
/u01/app/oracle/product/12.2.0/db_1/root.sh
图 134 - 节点2同样执行脚本
图 135
图 136
完成安装
图 137
- 日志文件保存目录
/u01/app/oraInventory/logs/installActions2021-07-09_11-44-26AM.log
创建数据库(实例)
- 节点一创建数据库后,节点2会自动copy数据库相关文件
- 数据库安装完成后自动生成实例并启动
dbca配置确认
- 在节点1使用dbca创建RAC数据库
- 检查环境变量是否正确,防止dbca程序找不到执行路径
图 138
图 139
调用dbca图形化
- 使用dbca调出图形化安装,直接创建数据库,不需要额外配置监听,RAC监听自动配置。
- node1,oracle账户
- dbca
图 140
选择安装模式与类型
图 141
图 142
图 143
设置SID前缀
- 实例名=SID前缀+,实例号(1、2、3…),保证SID全名必须与环境变量中的一致
图 144
配置ASM存储格式
图 145
设置归档与快速恢复区
- 本文可不启用便于后面的ADG配置
图 146
设置数据库属性与性能参数
图 147
- 客户端连接进程数量一般为千级别,按照照需求来
图 148 - 字符集设置,有关rman恢复,迁移
图 149 - 工作模式
图 150 - 不启用例数据库
图 151 - 比较重要的SGA、PGA内存设置
对于OLTP系统:
SGA_TARGET=(物理内存 x 80%) x 80%
SGA_MAX_SIZE=(物理内存 x 80%) x 80%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 20%
对于DSS系统:
SGA_TARGET=(物理内存 x 80%) x 50%
SGA_MAX_SIZE=(物理内存 x 80%) x 50%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 50%
本文内存小于8GB,使用比推荐值稍大即可,防止数据库启动失败
图 152
配置EM管理
图 153
设置统一管理密码
- 本文为root123
图 154
创建数据库选项
图 155
安装检查
图 156
图 157
图 158
完成安装
图 159
修改节点2的数据库实例SID变量
- 保证每次在N2上默认登录数据库都是实例mrzhu02
- N2,oracle账户下
vi .bash_profile
图 160
source .bash_profile
RAC实例日常维护
查看监听状态
- N1,N2、oracle账户下
lsnrctl status
图 161
图 162
查看实例状态
- 使用oracle账户登录任意节点数据库查看
sqlplus / as sysdba
select instance_name,status from gv$instance;
图 163
查看数据文件DBF
select * from v$dbfile;
图 164
RAC集群停机的两种方式
- 单点关闭has集群软件,root账户下
cd /u01/app/12.2.0/grid/bin/
./crsctl start/stop has - 关闭所有集群资源,root账户下
cd /u01/app/12.2.0/grid/bin/
./crsctl start/stop cluster -all
RAC关闭实例方式
- oracle账户下
srvctl start/stop database -d mrzhu #关闭所有数据库(实例)
srvctl start/stop database -d mrzhu01 mrzhu02 -o immdiate #立即关闭 - 关于参数Cluster_database=true 数据库此参数表名为集群模式,为true则数据库节点受srvctl命令控制
图 165





































































































































































