RAC是real application clusters的缩写,译为“实时应用集群”。
现实应用中Oracle RAC简易架构图为:
第1章 环境概述
本处使用虚拟机在 linux 环境下安装Oracle。版本说明见下表:
序号 | 名称 | 版本 | 说明 |
1. |
虚拟机 | VMware® Workstation 12 Pro 12.5.2 build- 4638234 | |
2. |
linux 操作系统 | Red Hat Enterprise Linux Server release 7.0 (Maipo)1 | |
3. | 内核 | 3.10.0-514.el7.x86_64 | 升级后版本 |
4. |
Oracle | Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production |
第2章 配置规划
配置规划主要分成虚拟机、共享磁盘、网络、CTSS、节点等效配置。现针对各部分进行说明:
2.1虚拟机配置
需针对每个虚拟机(以下统称为节点)分配 4G 内存、50G 硬盘容量、2 个桥接网卡。
2.2共享磁盘配置
1、 创建目录 F:\VMDisk\Sharedisk,此步骤一定要做,否则后面创建共享磁盘时会报错,如下图所示:
新建共享磁盘,在 VM 安装目录(本处为 D:\VMware\VMware Workstation) 下执行:
3、点击 rac01 的设备配置界面,点击添加按钮
4、硬件类型选择硬盘
5、虚拟磁盘类型选择默认的即可
6、磁盘选择使用现有虚拟磁盘
7、选择待添加的共享磁盘
8、转换现有虚拟磁盘格式
9、点击高级按钮
10、虚拟磁盘选择不和系统磁盘在一个通道上面,模式选择独立à永久
11、同样操作针对rac02的设备配置界面。
12、 配置节点rac01、rac02的vmx虚拟机配置文件,在行末位增加如下行:scsi1:0.deviceType = "disk" scsi1:1.deviceType = "disk" scsi1:2.deviceType = "disk" scsi1:3.deviceType = "disk" scsi1:4.deviceType = "disk" disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0"
13、启动两个节点,以root账号执行fdisk -l命令查看磁盘情况,如下图所示:
2.3 网络配置
RAC 系统中需要双网络,一个为公共的网络环境,一个为私有的网络环境。而每个节点上有四种IP 的概念,其中:public ip、virtual ip、SCAN ip 需在同一个网络网段内。
现针对各种IP 进行说明:
序号 | IP 类型 | 说明 |
1. |
public ip | 公有 IP,一般用于管理员,用来确保可以操作到正确的机器,更多时候,名为真实 IP 可能相对来说比较好 理解。该 IP 类似于单示例数据库 IP。 |
2. | virtual ip | 也称为vip,用于实现故障转移,当一个节点发生故 障时,其 vip 会浮动到另外一个正常的节点。 |
3. |
private ip | 该 IP 为 RAC 中节点之间数据同步用的私网 IP,用于 心跳同步,属于 RAC 内部之间通信。这个对于用户层面,可以直接忽略 |
4. |
SCAN2 ip | 该 IP 的作用,当客户端(如 jdbc,pl/sql 等)访问数据库时,只需要提供该 IP,Oracle rac 会自动为客户端 分配一个节点,这对客户端来说是透明的。 |
虚拟机各节点网络规划如下:
节点名称 | public ip | virtual ip | private ip | SCAN ip |
rac01 | 10.10.10.10 | 10.10.10.11 | 192.168.1.10 | 10.10.10.100 |
rac02 | 10.10.10.20 | 10.10.10.21 | 192.168.1.20 |
配置rac01和rac02节点上的各个网卡配置如下图:
rac01:
rac02:
配置完毕后,在两个节点上分别 ping 对方的私有和公有 ip,看是否能通。
4、在各个节点上编辑/etc/hosts 文件,增加如下内容:
5、NTP配置
如果需要配置请自行百度,本文不详细讲解。
6、配置 DNS
如果需要配置请自行百度,本文不详细讲解。
7、两个节点上关闭防火墙
执行 systemctl stop firewalld.service 。
执行 chkconfigfirewalld off 。
2.3关闭 SELINUX
分别在两个节点上执行如下操作:
将 SELINUX配置项的值设置为 disabled,修改后保存并重启两个节点服务器。
第3章 安装预备
3.1配置交换空间
1、用 dd 命令创建文件
dd if=/dev/zeroof=/var/swapfile bs=1024 count=2097152
2、 将 1、步骤创建的文件创建为 Linux Swap 虚拟交换文件
mkswap/var/swapfile
3、 激活并使用/war/swapfile 交换文件
swapon/var/swapfile
4、 设置系统启动后自动激活虚拟交换文件,编辑/etc/fstab 文件,增加如下行:
/var/swapfile swap swap defaults 00
3.2 创建账号
在两节点上均进行如下图操作:
并设置oracle和grid用户密码:passwd oracle;passwd grid。
3.3 设置环境变量
要在两个节点上都要执行
3.3.1 oracle用户环境变量
切换到oracle用户下 su - oracle
修改.bash_profile,增加如下内容:
export TMP=/tmp
export TMPDIR=$TMP
--rac01 节点
export ORACLE_SID=RACDB1
--rac02 节点
export ORACLE_SID=RACDB2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/j lib
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/sbin:$ORACLE_HOME/bin export PATH
umask 022
配置后如下图:
3.3.2 grid用户环境变量
切换到grid用户下 su - grid
修改.bash_profile,增加如下内容:
export TMP=/tmp
export TMPDIR=$TMP
--rac01 节点
export ORACLE_SID=+ASM1
--rac02 节点
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/j lib
export
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/sbin:$ORACLE_HOME/bin umask 022
配置后如下图:
3.4创建目录
1、使用root用户创建目录
mkdir -p u01/app/11.2.0/grid
mkdir -p u01/app/grid
mkdir -p u01/app/oracle
2、文件权限设置
chown grid:oinstall u01/app/11.2.0/grid
chown grid:oinstall u01/app/grid
chown oracle:oinstall u01/app/oracle
chmod -R 775 /u01/
chown -R grid:oinstall /u01
3.5配置操作系统相关限制
1、配置limits.conf
执行 vi /etc/security/limits.conf 命令编辑 limits.conf
2、配置login配置文件
limits.conf 是 pam_limits.so 的 配置文件,然后/etc/pam.d/下的应用程序调用pam_***.so 模块。譬如说,当用户 访问服务器,服务程序将请求发送到PAM 模块,PAM 模块根据服务名称在/etc/pam.d 目 录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的 PAM 模块进行处理 。
1、 为了确保上述 limits.conf 文件能被使用;
2、 需执行 vi /etc/pam.d/login 命令编辑配置文件,增加如下行:
session required pam_limits.so
如下图:
3、内核配置文件 sysctl.conf
执行 vi /etc/sysctl.conf 命令编辑内核配置文件,增加如下配置项:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1054472192
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
net.ipv4.tcp_wmem = 262144 262144 262144 net.ipv4.tcp_rmem = 4194304 4194304 4194304
保存退出,执行 sysctl -p 命令使其生效
3.6配置ASM
Oracle 为 Linux 操作系统提供了 ASM 库驱动程序,不需进行原始设备绑定之类的步骤,在安装任何 Oracle 数据库软件之前,必须安装 ASM 库驱动程序。每个 Linux 平台有 3 个包可供使用。每个包都为不同内核提供驱动程序,必须为正在运行的内核安装合适的包。其中:
oracleasmlib 包
提供实际 ASM 库
oracleasm-support 包
提供用于配置和启动 ASM 驱动程序的使用工具
核心驱动包
为 ASM 库提供核心驱动程序
两个节点上均执行如下操作
1、 ASM 安装需要三个包,按安装顺序为:
oracleasm-support
kmod-oracleasm
oracleasmlib
2、根据操作系统版本下载 oracleasm-support、oracleasmlib
https://www.oracle.com/linux/technologies/asmlib/
下载文件
oracleasm-support-2.1.8-3.el7.x86_64.rpm
oracleasmlib-2.0.12-1.el7.x86_64.rpm
3、根据操作系统内核版本下载 kmod-oracleasm
http://rpm.pbone.net/index.php3
下载文件
kmod-oracleasm-2.0.8-17.el7.x86_64.rpm
4、上传asm包到两个节点上并安装
rpm -ivh oracleasm-support-2.1.8-3.el7.x86_64.rpm
rpm -ivh kmod-oracleasm-2.0.8-17.el7.x86_64.rpm
rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm
3.7共享磁盘分区
因为是共享磁盘,在一个节点上执行即可:
1、 根据业务要求将共享磁盘进行分区
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
fdisk /dev/sdf
2、 共享磁盘操作完毕,结果如下所示
3、配置 ASM 磁盘
在两个节点上执行/etc/init.d/oracleasm configure 命令配置
执行如下命令创建 ASM 磁盘(在任意节点执行即可)
/etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
/etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
/etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
/etc/init.d/oracleasm createdisk VOL4 /dev/sde1
/etc/init.d/oracleasm createdisk VOL5 /dev/sdf1
执行/etc/init.d/oracleasm scandisks 扫描 ASM 磁盘
执行/etc/init.d/oracleasm listdisks 列出 ASM 磁盘看是否被识别
此时,可以在/dev/oracleasm/disks 目录下查看到创建的 ASM 磁盘
第4章 安装 Grid Infrastructure
4.1 安装 grid 依赖包
安装 grid 依赖包如下表所示:
序号 | Oracle 必需 | 实际安装 |
1. | make-3.80 | make-3.82-21.el7 |
2. | binutils-2.15.92.0.2 | binutils-2.23.52.0.1-16.el7 |
3. | gcc(x86_64)-3.4.6 | gcc(x86_64)-4.8.2-16.el7 |
4. | libaio(x86_64)-0.3.105 | libaio(x86_64)-0.3.109-12.el7 |
5. | glibc(x86_64)-2.3.4-2.41 | glibc(x86_64)-2.17-55.el7 |
6. | compat-libstdc++-33(x86_64)-3.2.3 | compat-libstdc++-33(x86_64)-3.2.3- 72.el7 |
7. | elfutils-libelf(x86_64)-0.97 | elfutils-libelf(x86_64)-0.158-3.el7 |
8. | elfutils-libelf-devel-0.97 | elfutils-libelf-devel-0.158-3.el7 |
9. | glibc-common-2.3.4 | glibc-common-2.17-55.el7 |
10. | glibc-devel(x86_64)-2.3.4 | glibc-devel(x86_64)-2.17-55.el7 |
11. | glibc-headers-2.3.4 | glibc-headers-2.17-55.el7 |
12. | gcc-c++(x86_64)-3.4.6 | gcc-c++(x86_64)-4.8.2-16.el7 |
13. | libaio-devel(x86_64)-0.3.105 | libaio-devel(x86_64)-0.3.109-12.el7 |
14. | libgcc(x86_64)-3.4.6 | libgcc(x86_64)-4.8.2-16.el7 |
15. | libstdc++(x86_64)-3.4.6 | libstdc++(x86_64)-4.8.2-16.el7 |
16. | libstdc++devel(x86_64)-3.4.6 | libstdc++-devel(x86_64)-4.8.2-16.el7 |
17. | sysstat-5.0.5 | sysstat-10.1.5-4.el7 |
18. | pdksh-5.2.14 | pdksh-5.2.14-37.el5_8.1 |
19. | expat(x86_64)-1.95.7 | expat(x86_64)-2.1.0-8.el7 |
4.2 预检查
本章节操作以 grid 账号进行:
1、 执行 unzip p13390677_112040_Linux-x86-64_3of7.zip 将 grid 安装包解压缩。
2、 进入到 grid 安装包目录,本处为/home/grid/grid。
3、 安装之前可使用 Oracle 提供的检查环境工具 :
./runcluvfy.sh stage -pre crsinst -n rac01,rac02 -fixup -verbose
4.3 安装 Grid Infrastructure
1、 进入到 grid 安装目录下,本处为:/home/grid/grid
2、 执行./runInstaller 命令启动安装界面
注意:需做如下操作:
SCAN Name 配置项需与/etc/hosts 文件中 scan ip 的配置项一致 去掉 Configure GNS 的勾选
如下为本处/etc/hosts 文件的配置供参考
点击 Add 按钮,将 rac02 的相关配置添加其中,需保持跟/etc/hosts 文件中内容一致,并输入OS Password并点击Test和Setup
根据实际业务需要匹配网段和对应的接口类型。
根据业务需要命名 Disk Group Name Redundancy 选择 External
选择 ORCL:VOL1、ORCL:VOL2、ORCL:VOL3
本处保持默认配置
如果 OSDBA、OSOPER、OSASM 组相同,会弹出如下的提示,直接点击 Yes 即可
Oracle Base 设置为:/u01/app/oracle Software Location
设置为:/u01/app/11.2.0/grid
保持跟.bash_profile 文件中配置一致即可。
如果缺少包可以使用yum安装
安装过程中需要执行两个脚本,在两个节点上使用root用户执行。
查看状态
安装完成
第5章 安装 database
5.1 创建磁盘组
1、 以 grid 账号登录到任意节点;
2、 执行 asmca 命令,弹出如下界面
3、 点击 Create 按钮,弹出创建磁盘组界面
根据实际业务需要填写磁盘组名称(本处填写 FRA)、选择对应的 Redundancy (冗余模式)
点击 OK 按钮
照着上述方式再创建 DATA 磁盘组
4、 操作完毕,最终结果如下图:
5.2 安装数据库软件
1、oracle账号进入到 database 安装目录下,本处为:/home/oracle/database
2、 执行./runInstaller 命令启动安装界面
本处因为 DNS 设置的问题。出现如下的提示,直接勾选 Ignore All 即可。
以 root 账号执行在 rac01 和 rac02 服务器上执行如下脚本 /u01/app/oracle/product/11.2.0/db_1/ root.sh
5.3 配置 RAC 数据库
以 oracle 账号执行 dbca 命令,打开数据库创建界面
选择 Use Oracle-Managed Files,Databse Area 选择+DATABASEDATA
如果弹出如下界面,输入实际密码即可。
Fast Recovery Area 设置为+FRA,其他保持默认即可
到这里就已经全部安装完成。
使用SQL*Plus连接rac数据库
登录成功。