Oracle 19c RAC集群搭建
系统规划
项目环境:虚拟机
主机:3台
- 2台运行RAC集群
- 1台共享存储
CPU和内存资源:
RAC集群:4U/8G
共享存储:2U/4G
网络规划
Public IP (内部访问)
1 | 192.168.2.63 rac1 |
Private IP(节点心跳网络)
1 | 10.10.10.63 rac1-priv |
Virtual IP(提供客户端访问 漂移)
1 | 192.168.2.65 rac1-vip |
SCAN IP(客户端访问 均衡)
1 | 192.168.2.67 |
节点 | 主机版本 | 主机名 | 实例名 | Oracle版本 | public ip | private ip | virtual ip | scan ip |
---|---|---|---|---|---|---|---|---|
1 | rhel7.6 | rac1 | mesdb1 | 19.3 | 192.168.2.63 | 10.10.10.63 | 192.168.2.65 | 192.168.2.67 |
2 | rhel7.6 | rac2 | mesdb2 | 19.3 | 192.168.2.64 | 10.10.10.64 | 192.168.2.66 | 192.168.2.67 |
存储规划
系统:
/:50g
/oracle:100g
/backup:200g
共享存储
dggrid1 :1g*3
dggrid2 :1g*3
dgsystem:8g*1
dgrecovery:3g*1
dgdata01:2g*1
生产数据库空间要求:1T数据
dggrid1 :2g*3
dggrid2 :2g*3
dgsystem:200g*1
dgrecovery:1T= 200g*5
dgdata01:1T= 200g*5
备份:/backup 3T= 1T *3
系统配置
hosts配置
rac1&rac2
1 | cat <<EOF>>/etc/hosts |
存储配置
rac1&rac2
服务器主机的存储:lvm
1 | pvcreate /dev/sdb /dev/sdc |
格式化:
1 | mkfs.xfs /dev/backupvg/backuplv |
挂载:
1 | vi /etc/fstab |
ASM磁盘
1 | #iscsi识别共享存储 |
todo 多路径配置
1 | for i in d e f g h i j k l; |
配置yum源
rac1&rac2
1 | # 挂载镜像 |
配置yum源
1 | cat <<EOF>>/etc/yum.repos.d/local.repo |
安装依赖包:
1 | yum groupinstall -y "Server with GUI" |
手动上传安装缺失依赖包:
1 | mkdir /soft |
检查依赖包安装
1 | rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline | grep "not installed" |
防火墙配置
rac1&rac2
关闭防火墙
1 | systemctl stop firewalld.service |
selinux 配置
rac1&rac2
1 | sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config |
时间同步配置
rac1&rac2
禁用chronyd
1 | yum install -y chrony |
使用ntp
同步时间
1 | cat <<EOF>>/var/spool/cron/root |
关闭透明大页和numa
rac1&rac2
1 | sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub |
重启后检查是否生效
1 | cat /sys/kernel/mm/transparent_hugepage/enabled |
avahi-daemon 配置
rac1&rac2
1 | yum install -y avahi* |
NOZEROCONF配置
rac1&rac2
1 | cat <<EOF>>/etc/sysconfig/network |
系统资源限制
rac1&rac2
1 | cat <<EOF>>/etc/security/limits.conf |
配置pam.d/login:
1 | cat <<EOF>>/etc/pam.d/login |
系统参数配置
rac1&rac2
1 | memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}') |
生效:
1 | sysctl -p |
用户、组、目录创建
rac1&rac2
用户组
1 | /usr/sbin/groupadd -g 54321 oinstall |
用户
1 | /usr/sbin/useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba,oper grid |
目录
1 | mkdir -p /oracle/app/19.3.0/grid |
环境变量配置
rac1&rac2
grid用户:
1 | cat <<EOF>>/home/grid/.bash_profile |
注意: 每个节点的 ORACLE_SID 不一样(+ASM1/+ASM2),需要自行修改
oracle用户:
1 | cat <<EOF>>/home/oracle/.bash_profile |
注意: 每个节点的 ORACLE_HOSTNAME(rac1/rac2)和 ORACLE_SID(mesdb1/mesdb2)不一样,需要自行修改
1 | # 重启系统 |
安装包上传解压
1 | #创建安装介质存放目录 |
19C 的安装包需要解压到对应的 ORACLE_HOME 目录下
静默解压grid
安装包
1 | chown -R grid:oinstall /soft |
静默解压oracle
安装包
1 | chown -R oracle:oinstall /soft |
静默解压补丁安装包
1 | cd /soft |
注意: 由于19C支持安装grid软件前打RU补丁,因此提前解压OPatch和RU补丁,为安装做准备
cvuqdisk安装
root用户下,cvuqdisk安装(rac01&rac02):
1 | rpm -ivh /oracle/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm |
注意: 19C 版本的 cvu 包换位置了,目录为:
$ORACLE_HOME/cv/rpm/
,以上所有软件只需要在节点一上传解压即可
安装Grid软件
配置grid
用户vnc
1 | yum install -y tigervnc* |
开始安装:
1 | #应用环境变量 |
打完补丁,进入安装界面,选择集群安装
选择standlone
模式
修改scan
名称与hosts
文件配置一致
添加rac2
节点,配置互信
网卡配置
存储类型,选择ASM
GIMR,这里不选择安装:
ASM磁盘组
ASM密码 mesasm2022
默认,下一步
EM管理,暂不开启
管理组,默认
安装地址,默认
不自动执行脚本
安装前检查
忽略,开始安装
执行root
脚本
先在节点1执行
1 | /oracle/app/oraInventory/orainstRoot.sh |
执行完成后,继续安装
忽略
安装完成
检查集群状态
1 | su - grid |
检查grid
补丁
1 | su - grid |
创建磁盘组
1 | asmca |
检查asm磁盘:
1 | asmcmd lsdg |
安装Oracle软件
1 | chown -R oracle:oinstall /soft |
进入安装界面,选择仅安装软件
选择集群模式:
配置互信
安装企业版
安装位置,默认
用户组 默认
不配置自动执行脚本
安装前检查
只配置了一个SCAN,关于DNS相关的都忽略
开始安装
执行root脚本
1 | /oracle/app/oracle/product/19.3.0/db/root.sh |
检查补丁版本
1 | opatch lspatches |
创建数据库
1 | dbca |
选择创建数据库实例
自定义模式
自定义数据库
选择节点
PDB&CDB
存储配置
暂不开启归档闪回
生产环境无特殊要求全部安装
配置项:
内存:SGA&PGA
进程数:1500
字符集:16GBK
EM管理器,暂不开启
sys/system密码:mesdb2022
创建选项,默认
预检查
可忽略
开始创建
创建完成
检查:
1 | 查看集群状态 |
基础维护
RAC停止
1 | su - oracle |
RAC启动
1 | su - grid |
自启动触发器
1 | CREATE TRIGGER open_all_pdbs |
查看资源状态
grid:
1 | [grid@rac2:/home/grid]$ crsctl stat res -t |
oracle:
1 | srvctl status database -db mesdb |
PDB&CDB
1 | # 查看当前容器 |
1 | # 创建表空间 |
创建测试数据
1 | create table EMPLOYEE (id number(12) primary key,name varchar(20)); |
节点2:
OCR镜像
1 | ocrconfig -add +DGGRID2 |
密码过期策略
后续配置在容器数据库下修改
关闭密码 180 天过期限制
1 | conn /as sysdba |
关闭审计
1 | show parameter audit; |
归档
1 | archive log list; |
1 | show parameter recover; |
1 | alter system set cluster_database=false scope=spfile; |
检查归档状态,切换日志
1 | archive log list; |
闪回
1 | # 生产环境不开启闪回 |
其他参数
1 | show parameter db_files; |
集群测试
hosts
:
1 | 192.168.2.67 rac-scan |
tnsnames.ora
:
1 | mesdb = |
1 | sqlplus /nolog |
4个窗口分别是 mesdb2、mesdb1、mesdb2、mesdb1
1 | crsctl stop crs # 关闭 |
OLTP
session
:基于会话,如果用户连接丢失,将创建一个新的会话连接到备用节点,用户的所有未提交的操作必须回滚,然后再次执行,SELECT操作也被中止
1 | mesdb = |
OLAP
建议使用
select
:如果用户连接丢失,将使用游标和之前的快照继续执行SELECT操作,叫做SQL接管,SQL接管能够无缝接管理的事务类型只有SELECT语句.其它的操作也必须要回滚然后再次执行
1 | mesdb = |