目录
前言
此文档是基于VMware vSAN环境安装配置Oracle RAC的一份安装配置指导手册,经过实际的验证与调整优化,结合了vSAN及Oracle DB的特点形成了相应较为完善的最佳实践。
读者参考此文章时,请一定要注意着重做好前期的规划,包括虚拟SCSI与不同Oracle类型磁盘VMDK的对应关系,以及共享磁盘的配置;在实际使用中,对于Oracle的Data盘,一定要记得修改vSAN的存储策略改为100%置备(注意:非虚机中的厚置备);同时,为了减少硬件故障对Oracle RAC影响的机率,需要为RAC中的节点做好反关联规则。
以上具体配置信息,可以参考文内截图与说明。
1. 基础规划
1.1 vSAN内针对Oracle RAC的磁盘规划
NAME | SCSI TYPE | SCSI ID (CONTROLLER,LUN) | SIZE (GB) | ASM DISK GROUP | DISK MODE |
---|---|---|---|---|---|
Operating System(OS) | Paravirtual | SCSI (0:0) | 140 | Not Applicable | Default (Dependent) |
Oracle Binary / u01 | Paravirtual | SCSI (0:0) | 60 | Not Applicable | Default (Dependent) |
Oracle Backup / DBBAK Vmdk_1 | Paravirtual | SCSI (0:1) | 1024 | Not Applicable | Default (Dependent) |
Cluster Vote Disk 01 Vmdk_2 | Paravirtual | SCSI (1:0) | 10 | VOTE & CRS | Independent-Persistent / multi-writer |
Cluster Vote Disk 02 Vmdk_3 | Paravirtual | SCSI (1:1) | 10 | VOTE & CRS | Independent-Persistent / multi-writer |
Cluster Vote Disk 03 Vmdk_4 | Paravirtual | SCSI (1:2) | 10 | VOTE & CRS | Independent-Persistent / multi-writer |
MGMT Disk 01 Vmdk 05 | Paravirtual | SCSI (1:3) | 100 | MGMT | Independent-Persistent / multi-writer |
Data Disk 01 Vmdk_6 | Paravirtual | SCSI (2:0) | 1024 | DATA | Independent-Persistent / multi-writer |
FRA Disk 01 Vmdk_7 | Paravirtual | SCSI (3:0) | 500 | FRA | Independent-Persistent / multi-writer |
1.2 操作系统空间规划
Mount Point | VG name | LV name | Size(GB) |
/boot | N/A | N/A | 1 |
swap | orac | swap | 64 |
ora/u01 | u01 | 60 | |
/ | root | 76 |
1.3 操作系统配置规划
Host Name | orac01 | orac02 |
---|---|---|
Cluster Mode | node1 | node2 |
CPU | 16core | 16core |
RAM | 128GB | 128GB |
IP Addr. | 10.0.209.11 | 10.0.209.13 |
VIP Addr. | 10.0.209.12 | 10.0.209.14 |
HeartBeat | 172.17.0.1 | 172.17.0.2 |
SCAN IP Addr. | 10.0.209.1 | |
SCAN Name | orac-scan |
2. VMware环境及系统准备
2.1 基础虚机安装与配置
2.1.1 新建虚机
1). 登入vCenter管理界面,点”新建虚拟机”,在弹出的”新建虚拟机”页面中选择“创建新虚拟机”,然后下一步;
2). 给新虚拟机命名,并选择所存放的目录位置;
3). 选择目标计算资源
4). 选择存储位置(这里可以选择vSAN中不同的存储策略)
5). 选择兼容性
6). 选择操作系统和版本
7). 在自定义硬件中配置CPU/内存/硬盘大小,并新增一块网卡
8). 为网卡选择网络,一块选择NSX中的DB,一块选择NSX中的HeartBeat
9). 选择系统ISO文件,并在选择后,将“连接”前的复选框给选中
10). 开启虚机UUID参数
在虚机“编辑设置”->“虚拟机选项”->高级->配置参数的“编辑配置”->添加以下信息:
名称:disk.EnableUUID 值:TRUE
11). 禁用快照功能
在虚机“编辑设置”->“虚拟机选项”->高级->配置参数的“编辑配置”->添加以下信息:
名称:“snapshot.MaxSnapshots”,值:“0”,保存配置,然后重新打开虚拟机电源。
2.1.2 虚拟机安装
1). 选择语言
2). 在“安装信息摘要”页面,关闭KDUMP;
3). 在“安装信息摘要”页面,点击“网络和主机名”,分别配置主机名,和两个网卡的IP:
(也可以进系统后配置)
3). 完成以上步骤后,在“安装信息摘要”页面,点击“日期和时间”,添加内部NTP服务器地址。
如果没有在安装时配置网络,则需要进系统后配置NTP。
4). 在“安装信息摘要”页面,点击“软件选择”,在弹出的页面选中“带GUI的服务器”即可。
5). 在“安装信息摘要”页面,点击“安装位置”,在弹出的页面选中“我要配置分区”,然后点“完成”;
在弹出的页面中先点击“点击这里自动创建他们”,然后修改配置如下:
修改Volume Group名称为“orac”;
删除home文件系统;
调整swap至64GB;
新增一个挂载点“/u01”,并设定为60GB的空间,用于安装Oracle;
剩余的所有空间划入“/”。
6). 根据提示注册系统,以便使用yum(仅RedHat)。
subscription-manager register --username <username> --password <password> --auto-attach
2.1.3 基础系统环境准备
1). 安装VMtools
如安装的操作系统与新建时一致,则VMtools被默认安装;
2). 配置NTP服务
安装NTP服务:
yum install ntp -y
配置NTP:
vi /etc/ntp.conf
server 10.0.0.10 iburst
server 10.0.0.11 iburst
server cn.ntp.org.cn iburst
停止chrony服务,并启用NTP
systemctl stop chronyd.service
systemctl disable chronyd.service
systemctl enable ntpd.service
systemctl start ntpd.service
3). 配置网卡(如果未在安装时配置)
用ifconfig查看网卡名称,然后进入/etc/sysconfig/network-scripts/目录
cd /etc/sysconfig/network-scripts/
配置网卡:
vi ifcfg-eno16778240
ONBOOT="yes"
IPADDR="10.0.209.11"
PREFIX="24"
GATEWAY="10.0.209.254"
DNS1="10.0.0.10"
DNS2="10.0.0.11"
IPV6_PRIVACY="no"
vi ifcfg-eno33557504
ONBOOT=yes
IPADDR=172.17.0.1
PREFIX=29
IPV6_PRIVACY=no
4). 关闭SELinux和Firewall
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
vi /etc/selinux/config
把SELINUX=enforcing 改成 SELINUX=disabled
5). 禁用Transparent HugePages功能
检查系统是否有开启:
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
禁用:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
再检查:
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
6). 禁用libvirtd服务
systemctl disable libvirtd.service
7). 禁用avahi-daemon服务
systemctl stop avahi-dnsconfd
systemctl stop avahi-daemon
systemctl disable avahi-dnsconfd
systemctl disable avahi-daemon
8). 禁用RemoveIPC
配置/etc/systemd/logind.conf,将RemoveIPC改为no
vi /etc/systemd/logind.conf
RemoveIPC=no
重启服务器或者重启systemd-logind
systemctl daemon-reload
systemctl restart system-logind
9). 配置/dev/shm空间(建议配置和大于你计划的SGA+PGA的大小)
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=64g 0 0
10). 开启XDMCP功能
修改vi /etc/gdm/custom.conf文件,将其security和xdmcp部分修改如下:
[security]
AllowRemoteRoot=true
DisallowTCP=False
[xdmcp]
Enable=true
Port=177
LightGDM:
PSRHEL7的Gnome界面使用了硬件加速功能,不支持Xmanger远程访问。如需使用XDMCP功能,则需要安装lightdm。
从阿里源中下载epel-7.repo,放在/etc/yum.repos.d目录下:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install lightdm -y
修改配置文件
vi /etc/lightdm/lightdm.conf
[XDMCPServer]
enabled=true
port=177
将显示管理切换为lightdm,并启动
systemctl disable gdm && systemctl enable lightdm
systemctl stop gdm && systemctl start lightdm
11). 用yum更新系统(不建议更新)
如果安装完系统时未能正常注册,可在保证主机能上网的情况下,使用以下命令注册:
subscription-manager register --username <username> --password <password> --auto-attach
完成注册后,在主页上为注册的主机分配订阅,然后用以下命令刷新:
subscription-manager refresh
完成后使用以下命令更新系统:
yum clean all
yum update -y
12). 修改系统语言
将系统语言修改为英文:
localectl set-locale LANG=en_US.UTF-8
中文:localectl set-locale LANG=zh_CN.utf8
2.1.4 Oracle安装环境准备
1). 更新Oracle必备软件包
mkdir /software && cd /software
vi oracle-rpm.txt
binutils
libX11
compat-libcap1
libXau
compat-libstdc++-33
libaio
gcc
libaio-devel
gcc-c++
libdmx
glibc-devel
glibc
ksh
make
libgcc
sysstat
libstdc++
xorg-x11-utils
libstdc++-devel
xorg-x11-xauth
libXext
libXv
libXtst
libXi
libxcb
libXt
libXmu
libXxf86misc
libXxf86dga
LibXxf86vm
nfs-utils
yum install `awk '{print $1}' ./oracle-rpm.txt` -y
解压grid或database后,会有一个rpm的文件夹,进入后安装里面的rpm包(前提是已建好Oracle的系统帐号和组):
find /u01/app -name cvuqdisk*
/u01/app/12.2.0.1/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
rpm -ivh cvuqdisk-1.0.10-1.rpm
2). 配置内核参数
vi /etc/sysctl.conf
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.shmmax = 4398046511104
kernel.shmall = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
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
修改后,直接应用:sysctl -p /etc/sysctl.conf
3). 配置系统参数
vi /etc/security/limits.d/99-grid-oracle-limits.conf
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
在/etc/profile.d/目录内新建oracle-grid.sh脚本,具体如下:
vi /etc/profile.d/oracle-grid.sh
#Setting the appropriate ulimits for oracle and grid user
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -u 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
if [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -u 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
检测/etc/security/limits.conf,看最后是否有两行参数配置如下:
oracle hard memlock 59379534
oracle soft memlock 59379534
其中59379534是指DB中配置的RAM大小。
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 asmdba
groupadd -g 54324 asmoper
groupadd -g 54325 asmadmin
groupadd -g 54326 oper
groupadd -g 54327 backupdba
groupadd -g 54328 dgdba
groupadd -g 54329 kmdba
useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmoper,backupdba,dgdba,kmdba oracle
passwd oracle
useradd -u 54322 -g oinstall -G dba,asmadmin,asmdba,asmoper grid
passwd grid
5). 创建和定义安装目录
因Oracle 12cR2的grid安装是需要解压到安装目标目录直接安装,所以需要先上传grid安装包。
mkdir -p /u01/app/grid
mkdir -p /u01/app/12.2.0.1/grid
cd /u01/app/12.2.0.1/grid
unzip -q /software/linuxx64_12201_grid_home.zip
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/12.2.0.1/dbhome_1
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
6). 配置DNS服务和Host文件
编辑DNS服务器配置文件,添加Oracle Node所在域的名称与内部DNS服务器地址:
vi /etc/resolv.conf
search corp.tanzu
nameserver 10.0.0.10
nameserver 10.0.0.11
vi /etc/hosts
127.0.0.1 orac01 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 orac01 localhost localhost.localdomain localhost6 localhost6.localdomain6
#eth0 eno16778240 Public
10.0.209.11 orac01 orac01.corp.tanzu
10.0.209.13 orac02 orac02.corp.tanzu
#Virtual IP
10.0.209.12 orac01-vip orac01-vip.corp.tanzu
10.0.209.14 orac02-vip orac02-vip.corp.tanzu
#eth1 eno33557504 Private
172.17.0.1 orac01-priv orac01-priv.corp.tanzu
172.17.0.2 orac02-priv orac02-priv.corp.tanzu
#Scan
10.0.209.1 orac-scan orac-scan.corp.tanzu
2.2 克隆虚机并修改配置
2.2.1 克隆虚机
2.2.2 修改克隆机器的配置
1). 查看网络接口信息
Ifconfig -a | more
2). 修改主机名
hostnamectl set-hostname orac02
或 vi /etc/hostname
3). 修改IP
cd /etc/sysconfig/network-scripts/
用ls命令查看网卡的配置文件名,然后用vi命令进行编辑
vi ifcfg-eno16778240
vi ifcfg-eno33557504
4). 某些情况下的机器需要调整网卡发现策略和配置
cd /etc/udev/rules.d
vi 70-persistent-net.rules
删除原网卡的信息行,并将新网卡的名称调整为原网卡的名字。
然后 进入网卡配置文件目录,将原网卡名提前的配置文件内的内容改成现在网卡的MAC和IP
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens192 修改MAC和IP
2.3 虚机中共享盘添加与配置
2.3.1 vSAN策略配置
“主页”->“策略和配置文件”->“创建虚拟机存储策略”
2.3.2 添加共享盘
ORAC01:
按以上的方式,向虚机内添加入剩下的磁盘,一定需要注意磁盘控制器的选择(参考第一章节的规划表);
ORAC02:
按以上的方式,向虚机内添加入剩下的磁盘,一定需要注意磁盘控制器的选择,要与node1一致(参考第一章节的规划表);
2.3.3 系统配置
1). 分别在node1和node2内,在命令行输入fdisk -l查看磁盘设备,如下图:
2). 系统中已可以看到设备,但还不能正常使用,需要对其进行挂载并修改拥有者与权限。
物理环境中,或是VM的controller中配置了UUID功能,则要添加对应磁盘的scsi ID,可用以下命令检查:
/lib/udev/scsi_id -g -u /dev/sdb
将得到的结果加入以上命令的对应磁盘所在的行,格式如下:
ENV{ID_SERIAL}=="36006016004503e0017f99d58603c7c1e",
新建一个脚本,自动生成rules文件:
vim genasmdisk.sh
#!/bin/bash
cat /dev/null > /etc/udev/rules.d/99-oracle-asmdevices.rules
for i in b c d e f g;
do
echo "KERNEL==\"sd?\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d /dev/\$name\", RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd${i}`\", SYMLINK+=\"asmdisk/asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
3). 调用新建的udev rules:
udevadm control --reload-rules
udevadm trigger
2.3.4 为Oracle RAC虚机配置反关联规则
为最是大化减少硬件故障对Oracle的影响,建议对oracle RAC node节点使用反关联规则,使node节点运行在不同的ESXi主机内。
在vCenter中选中集群配置虚拟机/主机规则添加
在弹出的页面中为虚机规则起个名称,然后类型选择为“单独的虚拟主机”,并将Oracle RAC Node虚机添加进规则内,保存即可。
3. Oracle12c安装与配置
3.1 修改用户环境变量
修改grid用户bash_profile,方法:vi /home/grid/.bash_profile
Node1:
ORACLE_SID=+ASM1
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/12.2.0.1/grid
PATH=$PATH:$ORACLE_HOME/bin
export PATH ORACLE_SID ORACLE_BASE ORACLE_HOME
Node2:
ORACLE_SID=+ASM2
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/12.2.0.1/grid
PATH=$PATH:$ORACLE_HOME/bin
export PATH ORACLE_SID ORACLE_BASE ORACLE_HOME
修改oracle用户bash_profile,方法:vi /home/oracle/.bash_profile
Node1:
ORACLE_SID=PRDCDB1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/dbhome_1
PATH=$PATH:$ORACLE_HOME/bin
export PATH ORACLE_SID ORACLE_BASE ORACLE_HOME
Node2:
ORACLE_SID=PRDCDB2
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/dbhome_1
PATH=$PATH:$ORACLE_HOME/bin
export PATH ORACLE_SID ORACLE_BASE ORACLE_HOME
修改完成后重启机器,或是当前帐号的当前目录下用命令source .bash_profile 来立即启用。
3.2 ASM安装
3.3 添加磁盘组
在grid帐号下运行"asmca"
3.4 Database安装
在所有节点执行按顺序执行root.sh,执行完毕后,点击OK,继续安装