CentOS-7-x86_64 for Oracle 12cR2 RAC(未完待续)

时间:2022-03-31 23:24:39

1.概述Oracle集群

1.1.什么是Oracle RAC?

Oracle Real Application Cluster (RAC,实时应用集群)用来在集群环境下实现多机共享数据库,以保证应用的高可用性;同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。RAC集合了集群软件和存储软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。

²  多节点负载均衡

²  提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化

²  通过并行执行技术提高事务响应时间----通常用于数据分析系统

²  通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统

²  节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本

²  可扩展性好,可以方便添加删除节点,扩展硬件资源。

1.2.集群拓扑结构图

 CentOS-7-x86_64 for Oracle 12cR2 RAC(未完待续)

 

11G RAC结构图

2.集群规划

2.1.1 软件规划

软件名称

版本

虚拟软件

virtualBox 5.1.26 r117224 (Qt5.6.2)

操作系统

Linux 3.10.0-327.el7.x86_64 #1

Oracle|Custerware

12c r2

2.2.2 集群网络,文件规划

名称

Rac1

Rac2

公有IP地址(public)

192.168.2.189

192.168.2.199

私有IP地址(private)

192.168.2.100

192.168.2.101

VIP IP地址

10.10.10.10

10.10.10.20

RAC SID

Deliora1

Deliora2

集群实例

Deliora

SCN IP

192.168.2.200

ASM存储

+DATA/+VCR/+ARC/+BACKUP

 

3.系统配置

3.1.1 常规配置系统

*每个节点设置IP、主机名、网络服务

*/etc/sysconfig/network

#hostname=rac1.deli.com

或者

hostnamectl set-hostname --static rac1.deli.com(不用重启,需要重新链接)

*关闭防火墙,selinux

*systemctl stop firewalld.service(开机关闭)

*setenfore 0

*网络服务开机启用

3.1.2 配置hosts文件(所有节点)

#RAC1 host 文件

[root@localhost ~]# cat /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#public IP

192.168.2.189 rac1.deli.com delirac1

192.168.2.199 rac2.deli.com delirac2

 

#private IP

192.168.2.100 rac1-priv.deli.com delirac1-priv

192.168.2.101 rac2-priv.deli.com delirac2-priv

 

#virtaul IP

10.10.10.10 rac1-vip.deli.com delirac1-vip

10.10.10.20 rac2-vip.deli.com delirac2-vip

 

#scan IP

192.168.2.200 rac-scan.deli.com delirac-scan

 

#RAC2 host 文件

[root@localhost ~]# cat /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#public IP

192.168.2.189 rac1.deli.com delirac1

192.168.2.199 rac2.deli.com delirac2

 

#private IP

192.168.2.100 rac1-priv.deli.com delirac1-priv

192.168.2.101 rac2-priv.deli.com delirac2-priv

 

#virtaul IP

10.10.10.10 rac1-vip.deli.com delirac1-vip

10.10.10.20 rac2-vip.deli.com delirac2-vip

 

#scan IP

192.168.2.200 rac-scan.deli.com delirac-scan

 

#结合上面所有的修改,重启系统!(/etc/sysconfig/network

3.1.3 软件包检测(可忽略,后面检测安装)

# rpm –qa |grep packagename

binutils-2.20.51.0.2-5.11.el6

compat-libcap1-1.10-1

compat-libstdc++-33-3.2.3-69.el6

gcc-4.4.4-13.el6

gcc-c++-4.4.4-13.el6

glibc-2.12-1.7.el6

glibc-devel-2.12-1.7.el6

ksh

libgcc-4.4.4-13.el6

libstdc++-4.4.4-13.el6

libstdc++-devel-4.4.4-13.el6

libaio-0.3.107-10.el6

libaio-devel-0.3.107-10.el6

make-3.81-19.el6

sysstat-9.0.4-11.el6

unixODBC

unixODBC-devel

3.1.4 添加Oracle|grid用户,HOME,目录

3.1.4.1 在每个集群节点创建oracle,grid用户(每个节点)

# groupadd -g 1000 oinstall

# groupadd -g 1020 asmadmin

# groupadd -g 1021 asmdba

# groupadd -g 1022 asmoper

# groupadd -g 1031 dba

# groupadd -g 1032 oper

# useradd oracle -g oinstall -G dba,asmdba,oper -u 501

# useradd grid   -g oinstall -G dba,asmdba,asmadmin,asmoper -u 502

 

3.2在每个集群节点创建所需目录(每个节点)

# mkdir -p /u01/app/11.2.0/grid

# mkdir -p /u01/app/grid

# chown -R grid:oinstall /u01

# mkdir /u01/app/oracle

# chown oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01/

 

3.3在每个节点赋予oracle,grid账户密码(每个节点)

[root@localhost /]# passwd oracle

Changing password for user oracle.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost /]#

[root@localhost /]#

[root@localhost /]# passwd grid

Changing password for user grid.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

 

3.1.5 配置Oracle|grid环境变量(所有节点)

#RAC1 ~/.bash_profile(GIRD )    

export ORACLE_HOME=/u01/app/11.2.0/product/11.2.0

export ORACLE_SID=+ASM1     --节点2 +ASM2

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#RAC1 ~/.bash_profile(ORACLE)  

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0

export ORACLE_SID=deliora1

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

 

#RAC2~/. bash_profile(GIRD )   

export ORACLE_HOME=/u01/app/11.2.0/product/11.2.0

export ORACLE_SID=+ASM2     --节点2 +ASM2

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#RAC2 ~/.bash_profile(ORACLE) 

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0

export ORACLE_SID=deliora2

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

 

3.1.6 配置Linux内核参数(所有节点)

# vi /etc/sysctl.conf

fs.aio-max-nr = 1048576  

fs.file-max = 6815744

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

 

kernel.sem = 250 32000 100 128

kernel.shmall = 9961472

kernel.shmmax = 1610612736   #最大1.5G

kernel.shmmni = 4096

 

生效

# sysctl –p

参数

解释

fs.aio-max-nr  = 1048576

同时可以拥有的的异步IO请求数目

1024K

fs.file-max = 6815744 

系统中所允许的文件句柄最大数目

6.5M

kernel.shmall =9961472  --(主)

kernel.shmall =6291456  --(备)

Total amount of shared memory
 available (bytes or pages)

总的可用共享内存,单位为page(4K字节)

主库设置为38G

备库设置为 24G

kernel.shmmax =40802189312   --(主)

kernel.shmmax =25769803776   --(备)

Maximum size of shared
memory segment (bytes

shmmax(bytes) = shmmni(page size, default 4k) * shmall (page的个数)

 

最大共享内存段大小,单位为字节,

主库设置为38G

备库设置为24G

kernel.shmmni =4096

Maximum number of shared memory
segments system-wide

共享内存段的最大数量

默认值

kernel.sem =250 32000 100 128

设置运行的信号量个数,分别对应:

SEMMSL:每组信号量的最大信号个数

SEMMNS:整个系统内存的信号量的最大个数

SEMOPM:每组操作最大信号量个数

SEMMNI:整个系统最大信号标记数

取默认值

net.ipv4.ip_local_port_range = 9000 65500

端口使用范围

net.core.rmem_default = 262144

TCP数据接收缓存默认大小

net.core.rmem_max = 4194304

TCP数据接收缓存最大值

net.core.wmem_default = 262144

TCP数据发送缓冲默认大小

net.core.wmem_max = 1048586

TCP数据发送缓冲最大值

 

3.1.7 配置shell限制(所有几点)

# 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

 

3.1.8 配置/dev/shm参数(所有节点)

# /etc/fstab就是在开机引导的时候自动挂载到linux的文件系统

#vi /etc/fstab  

tmpfs /dev/shm tmpfs defaults,size=5g 0 0

 

备注说明: /dev/shm/是linux下一个非常有用的目录,采用的是tmpfs。因为这个目录不在硬盘上,而是在内存里。默认大小为内存大小的一半,tmpfs 可以使用RAM,但它也可以使用您的交换分区来存储。

 

3.1.9 关闭NTP及端口范围参数

Oracle建议使用Oracle Cluster Time Synchronization Service,因此关闭删除NTP

# /sbin/service ntpd stop

# chkconfig ntpd off

# mv /etc/ntp.conf /etc/ntp.conf.bak

# 重启网络

# /etc/rc.d/init.d/network restart

或者

# service network restart

 

3.2.0 配置Oracle|grid用户ssh等效性

#RAC1 GRID用户配置

mkdir .ssh

chmod 700 .ssh/

cd .ssh/

ssh-keygen  -t   rsa

cat *.pub >> authorized_keys

rm -rf ./*.pub

执行以上步骤生成了authorized_keys文件,现在需要把其他节点的*.pub文件传送到RAC1,然后合并文件,最后生成的authorized_keys文件下发到每个节点。

#RAC2 GRID用户配置

mkdir .ssh

chmod 700 .ssh/

cd .ssh/

ssh-keygen  -t   rsa

scp *.pub grid@192.168.2.189:/home/grid/.ssh/  #传送到RAC1

#RAC1 GRID用户配置

cat *.pub >> authorized_keys  

scp authorized_keys grid@192.168.2.199:/home/grid/.ssh/

 

#把RAC2节点的*.pub追加至authorized_keys,因为我这里只有两个节点所以已经OK,现在把authorized_keys下发到RAC2,需要注意所有节点需要删除*.pub的文件。

#RAC2 GRID用户配置

rm -rf ./*.pub

 

以上已完成grid用户的ssh等效性,以同样的方式配置Oracle用户的等效性~

 

3.2.1 验证ssh等效性

#RAC1 Oracle

[oracle@rac1 .ssh]$ ssh delirac1 date

[oracle@rac1 .ssh]$ ssh delirac2 date

[oracle@rac1 .ssh]$ ssh delirac1-vip date

[oracle@rac1 .ssh]$ ssh delirac2-vip date

#RAC2 Oracle

[oracle@rac2 .ssh]$ ssh delirac1 date

Fri Sep 28 17:12:03 CST 2018

[oracle@rac2 .ssh]$ ssh delirac2 date

Fri Sep 28 17:12:06 CST 2018

[oracle@rac2 .ssh]$ ssh delirac1-vip date

Fri Sep 28 17:12:09 CST 2018

[oracle@rac2 .ssh]$ ssh delirac2-vip date

Fri Sep 28 17:12:15 CST 2018

 

以上已完成Oracle用户的ssh等效性验证,以同样的方式测试grid用户的等效性~

3.2.2 配置ASM存储

3.2.2.1 规划ASM磁盘组

官方文档中规定了不同冗余策略下OCR、Voting Disk、Database和Recovery所需求的大小。

 CentOS-7-x86_64 for Oracle 12cR2 RAC(未完待续)

 

因为这里是测试环境,所以这里有sdb 8g,sdc 5g 分别作为OCR和DATA磁盘组。

3.2.2.2 配置ASM磁盘

这里需要说明一下,配置ASM磁盘有两种asmlib和裸设备(裸设备和块设备)。前者用的比较少几乎不用,所以这里只介绍后者。裸设备配置ASM磁盘分本地共享磁盘(udev)和网络iscsi 存储配置(一般有第三方的存储软件)udev + multipath 方式来配置。

获取iscsi_id 在virtualBox和VMware不一样。前者通过:/lib/udev/scsi_id  --whitelisted --replace-whitespace --device=/dev/sdc,后者直接scsi_id  --whitelisted --replace-whitespace --device=/dev/sdc(前提是修改了虚拟机vmx文件中添加disk.EnableUUID = "TRUE")

 

使用命令查看所有的块设备 ls -l /dev/sd*(所有节点)

[root@rac1 multipath]# /lib/udev/scsi_id  --whitelisted --replace-whitespace --device=/dev/sdb

1ATA_VBOX_HARDDISK_VB921c6ad1-c9485179

[root@rac1 multipath]# /lib/udev/scsi_id  --whitelisted --replace-whitespace --device=/dev/sdc

1ATA_VBOX_HARDDISK_VB5964a173-24bde291

 

修改udev rule文件(RAC每个节点都需要执行)

for i in b c;

do

echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""      >> /etc/udev/rules.d/99-oracle-asmdevices.rules

done

[root@rac1 multipath]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB921c6ad1-c9485179", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB5964a173-24bde291", NAME="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"

 

启动:/sbin/start_udev

 

查看ASM磁盘ll /dev/asm-*

 

 

4.Clusterware安装

5.Oracle软件安装