oracle RAC集群简介
Oracle RAC主要支持Oracle9i、10g、11g,12C版本
在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
1)多节点负载均衡;
2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;
3)通过并行执行技术提高事务响应时间----通常用于数据分析系统;
4)通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;
5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;
6)可扩展性好,可以方便添加删除节点,扩展硬件资源。
缺点:
1)相对单机,管理更复杂,要求更高;
2)在系统规划设计较差时性能甚至不如单节点;
3)可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费
搭建环境
硬件每个节点要求必须配置两个网卡
操作系统 | IP | 主机名 | |
---|---|---|---|
centos 7.4 | 192.168.169.10 | 192.168.69.10 | rac1 |
centos 7.4 | 192.168.169.20 | 192.168.69.20 | rac2 |
centos 7.4 | 192.168.169.30 | iscsi-server |
一. 基础环境规划
IP地址的规划、要求修改host文件,所有节点的host文件一样
IP类型 | IP地址 | 对应的主机名 | 对IP地址的理解 |
---|---|---|---|
public ip | 192.168.169. 10 | rac1 | 这是本机物理网卡对应的IP用于网络之间的连接 |
192.168.169.20 | rac2 | ||
priv ip | 192.168.69.10 | rac1-priv | 这个IP是私网的IP地址、每个节点的私网IP都必须要在同一网段、用于各节点之间做心跳检测 |
192.168.69.20 | rac2-priv | ||
vip | 192.168.169.111 | rac1-vip | 虚拟IP地址,需要与物理网卡在同一网段、只需写入host文件,当服务启动时就会生成这个IP、当服务宕机这个IP地址就会漂移到其他存活的节点上 |
192.168.169.222 | rac2-vip | ||
scan ip | 192.168.169.63 | rac-scan | Oracle 11g推出的新功能,用于DNS和GNS解析、一个节点最多有三个scan ip,但写入host文件解析只能有一个,在官网上不推荐这样做,因为这样做失去了他的新功能、但在实际的生产环境中我们都是写入host文件的 |
1. 节点1和节点2 的hosts文件必须一致
[root@rac1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#public ip
192.168.169.10 rac1
192.168.169.20 rac2
#priv ip
192.168.69.10 rac1-priv
192.168.69.20 rac2-priv
#vip
192.168.169.111 rac1-vip
192.168.169.222 rac2-vip
#scan
192.168.169.63 rac-scan
2. 直接把修改好的配置文件发送给节点2
[root@rac1 ~]# scp /etc/hosts root@192.168.169.20:/etc/hosts
The authenticity of host '192.168.169.20 (192.168.169.20)' can't be established.
ECDSA key fingerprint is SHA256:qshWKJ+cGX5OYoSmJA7YrwfvYaj9CuI5oG1UlRCmXsw.
ECDSA key fingerprint is MD5:27:a3:50:62:45:7e:6f:15:46:cf:26:96:ce:6f:cc:56.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.169.20' (ECDSA) to the list of known hosts.
root@192.168.169.20's password:
hosts 100% 411 16.8KB/s 00:00
3. 配置yum 源、安装epel 源 (两个节点做相同操作)
[root@rac1 yum.repos.d]#curl -o CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1572 100 1572 0 0 11116 0 --:--:-- --:--:-- --:--:-- 11148
[root@rac1 yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@rac1 yum.repos.d]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@rac1 yum.repos.d]# yum install -y epel-release
4. 关闭防火墙,关闭selinux (两个节点做相同操作)
[root@rac1 ~]# systemctl stop firewalld
[root@rac1 ~]# systemctl disable firewalld
[root@rac1 ~]# setenforce 0
[root@rac1 ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
5. 创建用户和组,并给用户配置密码 (两个节点做相同操作)
[root@rac1 ~]# groupadd oinstall
[root@rac1 ~]# groupadd dba
[root@rac1 ~]# groupadd oper
[root@rac1 ~]# groupadd asmdba
[root@rac1 ~]# groupadd asmoper
[root@rac1 ~]# groupadd asmadmin
[root@rac1 ~]# useradd -g oinstall -G dba,oper,asmdba oracle
[root@rac1 ~]# useradd -g oinstall -G asmdba,dba,asmadmin,asmoper grid
6. 创建目录 (两个节点做相同操作)
[root@rac1 ~]# mkdir /u01
[root@rac1 ~]# mkdir /u01/{grid,oracle,gridbase}
[root@rac1 ~]# ls /u01/
grid gridbase oracle
7. 对目录授权处理 (两个节点做相同操作)
[root@rac1 ~]# chown -R grid:oinstall /u01/
[root@rac1 ~]# chown -R oracle:oinstall /u01/oracle/
[root@rac1 ~]# chmod -R g+w /u01/
8. 添加环境变量 (两个节点做相同操作)
[root@rac1 ~]# vi /home/grid/.bash_profile
ORACLE_BASE=/u01/gridbase
ORACLE_HOME=/u01/grid
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH DISPLAY
[root@rac1 ~]# vi /home/oracle/.bash_profile
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/db
ORACLE_SID=cludb1 //注意节点1和节点2的SID 不能一样
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH DISPLAY
9. 重新读取配置文件,并检测是否生效 (两个节点做相同操作)
[root@rac1 ~]# source /home/grid/.bash_profile
[root@rac1 ~]# source /home/oracle/.bash_profile
[root@rac1 ~]# echo $ORACLE_HOME
/u01/oracle/db
10. 修改linux 内核参数 (两个节点做相同操作)
[root@rac1 ~]# cat /etc/sysctl.conf
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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 = 1048576
[root@rac1 ~]# sysctl -p //使修改内核生效
11. 修改配置文件/etc/security/limits.conf
(两个节点做相同操作)
[root@rac1 ~]# vi /etc/security/limits.conf //在文件尾部添加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
二 、 创建共享磁盘、这里我用的iscsi 来做共享,步骤如下
类别 | IP | 主机名 |
---|---|---|
iscsi服务端 | 192.168.169.30 | iscsi-server |
iscsi 客户端 | 192.168.169.10 | rac1 |
iscsi 客户端 | 192.168.169.20 | rac2 |
服务端的操作
1. 服务端必须要添加三块盘作为共享盘
[root@iscsi-server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 5G 0 part /boot
├─sda2 8:2 0 10G 0 part /
└─sda3 8:3 0 5G 0 part [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
sr0 11:0 1 4.2G 0 rom
2. 服务端下载targetd 、targetcli
[root@iscsi-server ~]# yum install targetd targetcli -y
3. 启动服务,并设置开机自启动
[root@iscsi-server ~]# systemctl start targetd
[root@iscsi-server ~]# systemctl enable targetd
4.用targetcli 来管理
[root@iscsi-server ~]# targetcli
/> cd backstores/block
/backstores/block> create disk0 /dev/sdb //加入这三块磁盘
/backstores/block> create disk1 /dev/sdc
/backstores/block> create disk2 /dev/sdd
/backstores/block> cd /iscsi
/iscsi> create //创建target名称,配置共享资源
/iscsi> cd iqn.2003-01.org.linux-iscsi.....
/iscsi/iqn.20....a1281bc5b561> cd tpg1/luns
/iscsi/iqn.20...561/tpg1/luns> create /backstores/block/disk0
/iscsi/iqn.20...561/tpg1/luns> create /backstores/block/disk1
/iscsi/iqn.20...561/tpg1/luns> create /backstores/block/disk2
/iscsi/iqn.20...561/tpg1/luns> cd ../acls
/iscsi/iqn.20...561/tpg1/acls> create iqn.2003-01.org.