一.RAC 概述及环境规划
单点数据库 vs RAC 集群数据库
Real Application Clusters-----真正的应用集群
环境规划:
centos6.9 + 11.2.0.4
节点 public ip vip private ip scan ip
ora01 192.168.198.138 192.168.198.140 192.168.98.128
192.168.198.142
ora02 192.168.198.139 192.168.198.141 192.168.98.129
public ip 对外提供服务的ip
private ip 心跳ip,两个实例通讯用的ip
scan ip 负载均衡ip
实例名称:orcl
oracle RAC(一两个节点为例)的本质是 :两台linux服务器各自运行一个 oracle instance ,两台服务器两个instance 共享一块磁盘(用来存储数据),共同对磁盘进行crud操作
二.安装两台虚拟机(centos6.9)
vmware 虚拟机环境配置
每个虚拟机 2 块网卡,1 块用于业务访问,1 块用于心跳(两个实例直接交换数据)。
ora01 配置两块网卡 :
第一块网卡,用于提供对外服务
第二块网卡,private ip 用于 两个节点之间 instance通信用的
固定ip:
(1)配置网卡1的ip (对外提供服务public ip)
(2)配置网卡2的ip (private ip 实例间同步用的)
ora02 配置两块网卡 :
同上
最后效果
ora01
ora02
三.添加共享存储(这一步需要关闭虚拟机)
1.去其中一台虚拟机(如 ora01) 创建共享存储
选择共享盘位置
找到虚拟机 ora01的安装目录,修改vmx文件
在文件Red Hat Enterprise Linux 6 64-bit.vmx最后面添加如下内容
scsi1:0.deviceType = "disk"
disk.locking="false"
diskLib.dataCacheMaxSize="0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.DataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
scsi1.sharedBus="virtual"
2.去另一台虚拟机(ora02) 使用共享存储
然后启动两台虚拟机验证
用root用户执行 fdisk -l 得到一直结果说明正确
设置虚拟机支持 UUID (关键设置,然后再重启)
在两台虚拟机的 vmx 文件最后添加
disk.EnableUUID = "TRUE"
四.系统参数配置
1.修改主机名
主机1 改成 ora01
主机2 改成 ora02
修改成功
2.配置/etc/hosts
ora01 和 ora02 hosts内容一样都是
3.添加用户和组
ora01和ora02两台机器都要执行
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmoper
groupadd asmdba
useradd -g oinstall -G dba,asmoper,asmadmin,asmdba grid
useradd -g oinstall -G dba,oper,asmdba,asmadmin oracle
修改用户密码
passwd grid 我设置成 123456
passwd oracle 我设置成 123456
4.创建目录(每台都要创建):
mkdir -p /u01/app/grid #grid 的 ORACLE_BASE
mkdir -p /u01/app/11.2.0.4/grid #grid 的 ORACLE_HOME,不能是包含关系
mkdir -p /u01/app/oracle/product/11.2.0.4/db_1
chown -R oracle:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/11.2.0.4
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
5.设置环境变量
ora01 节点:
grid 账户:
修改 .bash_profile
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0.4/grid
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
oracle 账户:
修改 .bash_profile
export ORACLE_SID=fxdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
ora02 节点:
grid 账户:
修改 .bash_profile
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0.4/grid
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
oracle 账户:
修改 .bash_profile
export ORACLE_SID=fxdb2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
编辑 /etc/fstab 文件(两个节点都要配置)
修改 tmpfs /dev/shm tmpfs defaults 0 0 为 tmpfs /dev/shm tmpfs defaults,size=2g 0 0
如下如
在终端执行(两个节点都要执行)
mount -o remount /dev/shm
关闭防火墙:(两个节点都要执行)
chkconfig iptables off
chkconfig ip6tables off
关闭 selinux:(两个节点都要执行)
vi /etc/selinux/config
修改 为 SELINUX=disabled
关闭其它服务:(两个节点都要执行)
chkconfig cups off
修改 limits.conf 文件:(两个节点都要执行)
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
如下图
修改 sysctl.conf 文件:(两个节点都要执行)
vi /etc/sysctl.conf
追加如下内容
kernel.sem=250 32000 100 128
kernel.shmmni=4096
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576
如下图
在终端 执行 sysctl -p 使配置生效
禁用 ntp:(两个节点都要执行) (两个节点都要执行)
终端执行: chkconfig ntpd off
service ntpd stop
mv /etc/ntp.conf /etc/ntp.bak
安装下面4个rpm 包 (两个节点都要执行)
compat-libcap1-1.10-1.x86_64.rpm 特别是这个 rpm 包,系统不会提示
compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
libaio-devel-0.3.107-10.el6.x86_64.rpm
pdksh-5.2.14-30.x86_64.rpm
在终端执行 rpm -ivh *.rpm
Udev 方式配置共享存储: (两个节点都要执行)
cd /etc/udev/rules.d 目录
创建文件 99-oracle-asmdevices.rules touch 99-oracle-asmdevices.rules
然后执行下面命令查询,共享盘磁盘id
/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
两台电脑 id一直 说明配置正确
在刚才创建的文件 (99-oracle-asmdevices.rules) 中添加如下内容:
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace
--device=/dev/$name", RESULT=="36000c29211fe3ab94c5ef3c0ebdb3ac1", NAME="asmdisk1",
OWNER="grid", GROUP="asmadmin", MODE="0660"
把 RESULT 替换为刚才查的id
然后执行下面两条命令
/sbin/udevadm control --reload-rules
/sbin/start_udev