Centos 7.4 配置RAC+ASM( oracle19c)
一、安装准备
1 环境规划:
类型 | 配置 |
---|---|
操作系统 | vmare+Centos 7.4 两台 |
磁盘 | 50G |
内存 | 4G |
网络 | 建议绑定双网卡 |
数据库版本 | oracle 19c |
共享存储 | ASM |
需配置两个网卡,一块共享磁盘。
说明:当前为测试环境,生产环境建议参考官方建议配置。
2 ip规划:
节点1和节点2配置一样: #public-ip 192.169.100.194 green1 192.169.100.195 green2 #VIP 192.169.100.196 rac1-vip 192.169.100.197 rac2-vip #priv-ip 10.0.0.1 rac1-priv1 10.0.0.2 rac2-priv2 #scan-ip 192.169.100.198 rac-scan public ip: 必须是专用ip,必须在安装oracle rac前配置好,能与网络连通。public ip,vip,scan ip必须在同一个网络网段内。 类似与单实例的oracle数据库ip,主要用于管理访问。 必须是专用ip,必须在安装前配置好,必须在一个专用私有网络中,只能被另外的rac节点解析,不能被其它网络解析。从11.2.0.2开始,oracle可以自动使用至多4块私有网卡,以实现内部节点的负载均衡及冗余。 virtual ip(vip): 必须是专用ip,不需要配置(grid集群安装之后才能ping通),public ip,vip,scan ip必须在同一个网络网段内。该ip及域名虽然配置,但必须保持不能使用(不能被访问,如ping)。 oracle在rac架构中专用,这个vip用于实现故障转移,当一个节点发生故障时,其vip会“浮动”到另外一个正常的节点,也即该正常节点对应着两个vip了。(和publi IP同一个网段) SCAN: Single Client Access Name,单一客户访问名称,意思是客户端(如jdbc,pl/sql等)访问数据库时的公共域名,由于rac是多节点的,客户端要访问数据库,通过scan机制,只需要提供一个访问名称,oracle rac会自动为客户端分配一个节点,这对客户端来说是透明的。(和publi IP同一个网段) 建议通过dns配置三个专用ip,在安装前必须配置好,当有请求者时,由dns随机分配。暂不使用。scan ip需要给出唯一的名字,也即三个ip对应一个域名。名字只能是字符和'-'。oracle不推荐通过hosts文件来配置,那样只能得到一个scan ip。 scan也是一个虚拟ip名,类似与虚拟ip名,但不同的是,虚拟ip是一个节点一个ip地址一个域名,scan是针对整个cluster的,一个域名对应着多个节点,多个ip地址。 private ip:私有ip,oracle 内部用于节点间通讯的ip,不对外开放。
系统中只需要配置public ip和private IP即可,但是需要配置两块网卡,其他的ip规划之后需要配置好集群才能ping 通。
3 共享存储配置
oracle rac为共享架构,需要先配置好共享存储。
每台虚拟机两块硬盘(或者多块硬盘,这里建议使用多块硬盘,这样可以保证不会同时坏掉多张硬盘)、两个网卡(这里均使用桥接模式) 两块硬盘均不要选择独立,且不要在同一节点上
这里硬盘1选0:1
这里硬盘2选1:0
选择同一块盘之后,修改vmx问你件,然后再到vmx文件中添加对应节点的类似如下的语句:
scsi1:0.SharedBus = "virtual" disk.locking = "FALSE"
4 网络配置
两块网卡只需要配置两个ip地址即可,且要保证两个ip地址能互相ping通,也就是priv和public两个ip地址。两个网卡(这里均使用桥接模式)
注意上面etc/hosts文件中每台机器有public、priv、vip和scan ip一共四个ip 但是在配置的时候只需要配置public、priv 两个ip就可以了。另外两个vip和scan ip只要 只要和public在同一个网段即可,并且只需要在grid安装成功之后ping通,这也是验证grid安装是否成功的关键。 其中 public 和 priv 需要在配置好之后就能ping通,但是其是哪个网络则只会在grid安装完成之后才会ping通。
public ip:
DEVICE="eth0"
BOOTPROTO=static
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
#HWADDR=
IPADDR=192.169.100.194
GATEWAY=192.169.103.255
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NETMASK=255.255.252.0
private-ip
DEVICE="ens36"
BOOTPROTO=static
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
#HWADDR=
IPADDR=10.0.0.1
GATEWAY=192.169.103.255
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NETMASK=255.255.252.0
5 ASM磁盘规划
11G的ASM分为:crs,data,recovery 3组(暂不考虑failure group等),crs需要磁盘空间很小,而data和recovery使用的空间因系统而异。
假如有一个系统5年之内数据都不会超过200GB, 使用物理磁盘的大小为500GB,那么 1.每一个ASM磁盘组中的每一个成员使用单独一个物理磁盘 2.是将一个物理磁盘分区之后供不同磁盘组使用,比如分出300GB作为data,3--5GB作为crs,剩余作recovery 使用Raid先做好镜像在ASM中选择外部 还是 直接使用磁盘通过ASM来实现冗余,这两种说法是否是等效的?只是个人喜好问题呢?
11G的ASM分为: crs, 表决磁盘 data, 数据盘 recovery 恢复 failure group 故障恢复盘
磁盘功能 | 个数 | 每个大小(GB) |
---|---|---|
OCR | 3 | 1 3G |
DATA | 3 | 10 10G |
ARCHIVE | 1 | 10 5G |
二、安装流程
1.规划ip
vi /etc/hosts
192.169.100.194 Ocenbase01
192.169.100.195 Ocenbase02
#VIP
192.169.100.196 Ocenbase01-vip
192.169.100.197 Ocenbase02-vip
#priv-ip
10.0.0.1 Ocenbase01-priv1
10.0.0.2 Ocenbase02-priv2
#scan-ip
192.169.100.198 Ocenbase-scan
2、安装依赖
yum -y install binutils* compat-libstdc* compat-db* compat-lib* compat-glibc* compat-gcc* elfutils-libelf* elfutils* pdskn*install gcc-c++* gcc* gdb* glibc* glibc* glibc-devel* libaio* libaio* libgcc* libstdc* libaio-devel* libstdc++* make*
3.添加用户和组
groupadd -g 501 oinstall groupadd -g 502 dba groupadd -g 503 oper groupadd -g 504 asmadmin groupadd -g 505 asmoper groupadd -g 506 asmdba useradd -u 600 -g oinstall -G dba,asmdba,oper oracle useradd -u 601 -g oinstall -G dba,oper,asmadmin,asmoper,asmdba grid passwd oracle passwd grid
4. 创建目录并授权
mkdir -p /u01/app/ chown -R grid:oinstall /u01/app/ chmod -R 775 /u01/app/ mkdir -p /u01/app/oraInventory chown -R grid:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oraInventory mkdir -p /u01/app/grid mkdir -p /u01/app/oracle chown -R grid:oinstall /u01/app/grid chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/app/oracle chmod -R 775 /u01/app/grid
5. 修改系统参数
vi /etc/security/limits.conf 增加以下内容 grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
vi /etc/pam.d/login
增加以下内容
session required pam_limits.so
vi /etc/sysctl.conf
增加以下内容
kernel.shmmax = 1024000000
kernel.shmall = 2097152
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 = 4194304
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
sysctl -p ---执行,使上方参数生效
mv /etc/ntp.conf /etc/ntp.conf.bak ----取消时间同步,让ORACLE自动同步
6.禁用NTP server
service ntpd stop chkconfig ntpd off mv /etc/ntp.conf /etc/ntp.conf.bak
7.使用chrond做时间同步
8.关闭selinux:
vim /etc/sysconfig/selinux 将SELINUX=enforcing修改成SELINUX=disabled 重启后才能生效。 临时关闭防火墙: service iptables stop
systemctl stop firewalld 永久关闭防火墙: chkconfig iptables off
9. 配置环境变量
vi /home/grid/.bash_profile 增加以下内容 TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_SID=+ASM1; export ORACLE_SID ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=/u01/app/grid/product/11.2.0; export ORACLE_HOME NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT THREADS_FLAG=native; export THREADS_FLAG PATH=$ORACLE_HOME/bin:$PATH; export PATH THREADS_FLAG=native; export THREADS_FLAG PATH=$ORACLE_HOME/bin:$PATH; export PATH if [ $USER = "oracle" ] || [ $USER = "grid" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi
vi /home/oracle/.bash_profile
增加以下内容
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0; export ORACLE_HOME
ORACLE_SID=rac1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
9. 配置SSH信任关系
su - oracle
mkdir -p .ssh
chmod 700 .ssh
cd .ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cat *.pub >> /home/oracle/.ssh/authorized_keys
ssh Ocenbase02 cat /home/oracle/.ssh/authorized_keys >> /home/oracle/.ssh/authorized_keys
scp /home/oracle/.ssh/authorized_keys Ocenbase02:/home/oracle/.ssh/authorized_keys
cat *.pub >> /home/oracle/.ssh/authorized_keys
ssh Ocenbase01 cat /home/oracle/.ssh/authorized_keys >> /home/oracle/.ssh/authorized_keys
scp /home/oracle/.ssh/authorized_keys Ocenbase01:/home/oracle/.ssh/authorized_keys
ssh Ocenbase01 date
ssh Ocenbase02 date
ssh Ocenbase01-priv date
ssh Ocenbase02-priv date
su - grid
mkdir -p .ssh
chmod 700 .ssh
cd .ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cat *.pub >> /home/grid/.ssh/authorized_keys
ssh Ocenbase01 cat /home/grid/.ssh/authorized_keys >> /home/grid/.ssh/authorized_keys
scp /home/grid/.ssh/authorized_keys Ocenbase01:/home/grid/.ssh/authorized_keys
方式2:
oracle用户:
su - oracle
ssh-keygen -t rsa
ssh-keygen -t dsa
ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@192.169.100.195
ssh oracle@192.169.100.195 date
ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@192.169.100.194
ssh oracle@192.169.100.194 date
gird用户:
su - grid
ssh-keygen -t rsa
ssh-keygen -t dsa
ssh-copy-id -i ~/.ssh/id_rsa.pub grid@192.169.100.195
ssh grid@192.169.100.195 date
ssh-copy-id -i ~/.ssh/id_rsa.pub grid@192.169.100.194
ssh grid@192.169.100.194 date
10 查看补丁是否齐全
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' \ binutils \ compat-db \ compat-libstdc++ \ control-center \ gcc \ gcc-c++ \ glibc \ glibc-common \ gnome-libs \ libstdc++ \ libstdc++-devel \ make \ pdksh sysstat \ xscreensaver \ setarch \ glibc-devel \ libaio\ libaio-devel\ unixODBC\ unixODBC-devel
11 udev裸设备配置
cat /etc/udev/rules.d/70-persistent-ipoib.rules
# Enter raw device bindings here. # # An example would be: # ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N" # to bind /dev/raw/raw1 to /dev/sda, or # ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m" # to bind /dev/raw/raw2 to the device with major 8, minor 1. ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="33", RUN+="/bin/raw /dev/raw/raw1 %M %m" ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="34", RUN+="/bin/raw /dev/raw/raw2 %M %m" ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="35", RUN+="/bin/raw /dev/raw/raw3 %M %m" ACTION=="add", KERNEL=="raw1", OWNER="grid", GROUP="asmadmin", MODE="660" ACTION=="add", KERNEL=="raw2", OWNER="grid", GROUP="asmadmin", MODE="660" ACTION=="add", KERNEL=="raw3", OWNER="grid", GROUP="asmadmin", MODE="660"
但在linux 7.x 中已经没有start_udev命令,在配置完UDEV 后,需要执行:
[dave@www.cndba.cn ~]# /sbin/udevadm trigger --type=devices --action=change
或者:
[dave@www.cndba.cn ~]# /sbin/udevadm control --reload
[dave@www.cndba.cn rules.d]# ll /dev/raw*
brw-rw---- 1 grid asmadmin 8, 16 Mar 21 22:01 /dev/asmdiskb
brw-rw---- 1 grid asmadmin 8, 32 Mar 21 22:01 /dev/asmdiskc
brw-rw---- 1 grid asmadmin 8, 48 Mar 21 22:01 /dev/asmdiskd
brw-rw---- 1 grid asmadmin 8, 64 Mar 21 22:01 /dev/asmdiske
brw-rw---- 1 grid asmadmin 8, 80 Mar 21 22:01 /dev/asmdiskf
systemctl restart systemd-udev-trigger.service
准备安装软件包
1.
[root@rac1 rpm]# vi /etc/sysconfig/network
NOZEROCONF=yes
安装前验证:
./runcluvfy.sh stage -pre crsinst -n "Ocenbase01,Ocenbase02" -verbose
标签:oracle19c,RAC,Centos,ip,ORACLE,grid,ssh,oracle,export From: https://www.cnblogs.com/xulinforDB/p/14718110.html