一、部分理论
RAC,全称real application clusters, 译为“实时应用集群”,是Oracle新版数据库中采用的一项新技术,是高可用性的一-种,也是Oracle 数据库支持网格计算环境的核心技术。
●VIP -虚拟IP地址(Virtual IP)。TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制。其基本原理:在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。
如果没有虚拟IP,应用是使用主机网络IP进行连接,此时主机出现问题,网络将无法ping通,应用连接遇到TCPIP协议超时,才会出现报错无法连接,由于TCPIP时钟超时时间(暂时不清楚超时时间)如果使用VIP连接,由于VIP会自动飘逸到存活的节点
●OCR (Oracle Cluster Registr集群注册文件),记录每个节点的相关信息。
管理Oracle集群软件和Oracle RAC数据库配置信息;这也包含Oracle Local Registry (OLR),存在于集群的每个节点上,管理Oracle每个节点的集群配置信息。
●Voting Disk,仲裁机制用于仲裁多个节点向共享节点同时写的行为,这样做是为了避免发生冲突。
在Oracle 10g版本前,RAC集群所需的集群软件依赖于硬件厂商,在不同平台上实施RAC集群都需要安装和配置厂商的集群软件,而Oracle只提供了Linux和Windows平台上的集群软件,
叫Oracle Cluster Manager。但从10.1版本开始,Oracle推出了一个与平*立的集群产品:Cluster Ready Service,简称CRS,
从此RAC集群的实施不再依赖各个硬件厂商,从10.2版本开始,Oracle将这个集群产品改名为Oracle Clusterware,
在11g中又被称为GI(Oracle Grid Infrastructure),但我们叫惯了CRS,所以平时很多时候也就称之为CRS,
这个产品并不局限用于数据库的集群,其他应用都可以借用其API轻易实现集群功能
1、 外部冗余(external redundancy):表示 Oracle 不帮你管理镜像,功能由外部存储系统实现,比如通过 RAID 技术;有效磁盘空间是所有磁盘设备空间的大小之和。
2、 默认冗余(normal redundancy):表示 Oracle 提供 2 份镜像来保护数据(镜像数据一次),有效磁盘空间是所有磁盘设备大小之和的 1/2 (使用最多)。
3、 高度冗余(high redundancy):表示 Oracle 提供3份镜像来保护数据(镜像数据两次),以提高性能和数据的安全,最少需要三块磁盘(三个 failure group);有效磁盘空间是所有磁盘设备大小之和的 1/3,虽然冗余级别高了,但是硬件的代价也最高。
实例恢复(Instance Recovery):如果实例被SHUTDOWN ABORT方法强行关闭,或者因为断电等事故发生故障。数据文件、控制文件、联机日志都没有丢失,这时数据库再次启动时,利用联机日志进行恢复。
崩溃恢复(Crash Recovery):到了RAC环境下,同样也有Media Recovery和Instance Recovery。指某个实例发生了Crash后在其他实例上进行的Recovery。这里最重要的区别是发生地点不是在故障节点,而是在某个健康节点。这种Recovery有一个特殊要求:在健康节点执行Crash Recovery时,必须要保证故障节点不能再对共享数据进行操作,也就是要对故障节点进行IO隔离(IO Fencing),这是由CSS服务来保证的.
介质恢复(Media Recovery):如果发生数据文件丢失或破坏,就需要用备份、归档日志和联机日志来进行恢复,这种恢复操作就叫作介质恢复,并分成完全恢复和不完全恢复两种情况。
粗糙条带化以每个1MB为单位将文件扩展到所有的磁盘。粗糙条带化适合于具有高度并发的小I0请求的系统,例如OLTP环境。
细密条带化以128KB为单位扩展文件,它适合于传统的数据仓库环境或具有较低并发性的OLTP系统,可以最大化单个I/O请求的响应时间。
磁盘组快速同步镜像:oracle 11.1.0.0以上版本,当磁盘组中某个磁盘坏了之后,可以不让其offline。除非超过disk_repair_time设置的时间才会下线。这样可能磁盘控制器坏了导致的磁盘offline,当上线online时全部同步整个磁盘数据太慢。
公用网络:用于往返于节点和服务器之间的所有常规连接。
互连网络(或专用网络):支持集群内节点之间的通信,如节点状态信息和节点之间共享的实际数据块。这种接口速率应该尽可能地快,并且在此接口上不应进行其他类型的通信,否则会降低RAC数据库的性能。
虚拟IP地址:是分配给Oracle侦听程序的地址,并支持快速的连接时故障切换(rapidconnect-timefailover),该功能能够以远快于第三方高可用解决方案的速度将网络业务量和Oracle连接切换到RAC数据库中的-一个不同的实例上。每个虚拟地址必须和公用网络地址在同一个网段上。
SCAN IP(Single Client Access Name):是Oracle从11g R2开始推出的,客户端可以通过SCAN特性负载均衡地连接到RAC数据库。所以在Oracle 11gR2 中,引入了SCAN(Single ClientAccess Name)的特性。SCAN是一个域名,可以解析至少1个IP,最多解析3个SCAN IP,客户端可以通过这个SCAN 名字来访问数据库,另外SCAN ip必须与public ip和VIP在一个子网。
在共享磁盘子系统上,需要两个特殊的分区: 一个分区用于表决磁盘,另一个分区用于Oracle集群注册表(Oracle Cluster Registry, 0CR)。
在专用网络发生故障时,Oracle 的集群软件 集群就绪服务(CRS)使用 表决磁盘来仲裁集群的所有权。OCR磁盘用来维护与集群相关的所有元数据:集群配置和集群数据库配置。
多路径(multipath):普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系,而到了有光纤组成的SAN(Storage Area Network,存储网络)环境,
由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择,即主机到存储之间的I/O有多条路径可以选择。
既然每个主机到所对应的存储可以经过多条不同的路径,那么,若同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?
还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样在使用的时候,就给用户带来了困惑。
多路径软件(multipath)就是为了解决上面的问题应运而生的。多路径的主要功能就是和存储设备一起配合故障的切换和恢复、I/O流量的负载均衡以及磁盘的虚拟化。
1 RAID10+ 外部冗余
2 RAID 5 + 标准冗余
3 RAID10+ 标准冗余
4 RAID50 + 标准冗余
如果你考虑的是写性能那么 1>3>2
如果你考虑的是安全性那么 3>=2>1
二、安装要求
centos 7 的两台机器
内存至少2g以上,swap 4g以上
磁盘空间至少10G以上
使用如下命令来配置 /etc/sysctl.conf
[root@ocl ~]# sysctl -a | egrep 'sem|shm|file-max|ip_1ocal|rmem|wmem'
然后使用 sysctl -p 使其生效
需要增加用户和组
需要配置ssh免密通信
需要配置 ORACLE_HOME \ CRS_HOME等环境变量
Public ip,scan ip, vip 必须在相同网段
private ip 与上述ip 不能在相同网段;
配置项 主机节点1 主机节点2
主机名 rac1 rac2
Public 网卡名称 eth33
Public IP 192.168.100.111 192.168.100.112
Virtual IP 192.168.100.211 192.168.100.212
Scan IP 192.168.100.11
Private 网卡名称 eth32
Private IP 10.10.10.11 10.10.10.12
所有都选择默认冗余模式,那需要建如下逻辑磁盘
data1 放数据 5g
recov1 放归档 5g
ocr1 放Oracle Cluster Registr集群注册文件 1g . 注:从12c开始OCR磁盘组最少需要5G的空间
三、安装步骤
1.安装两台 centos 7 的虚拟机rac1 ,rac2,具体略。 系统安装完后安装如下两个基础工具包
yum -y install vim net-tools
2.虚拟网络编辑器新增网络 VMNET2。将子网改为 10.10.10.0
3.为rac1和rac2增加 网络适配器 2,rac1 的网络适配器选指定 VMNET8,网络适配器2选指定 VMNET2
4.为rac1和rac2增加虚拟磁盘,设置为立即分配磁盘空间 和 永久,选择高级,将磁盘虚拟设备节点选择为 1:0 1:1 1:2
data1 放数据 5g
recov1 放归档 5g
ocr1 放Oracle Cluster Registr集群注册文件 1g
修改RAC1和RAC2的虚拟机配置文件 rac1.vmx 和 rac2.vmx,在最后增加如下内容。防止两台机器启动时使用相同硬盘时报错
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
disk.locking = "FALSE"
disk.enableUUID = "TRUE"
scsi1:0.sharedBus = "virtual"
scsi1:1.sharedBus = "virtual"
scsi1:2.sharedBus = "virtual"
5.rac1配置
[root@rac1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1b76ee0d-ab10-4e46-88e1-1bf94ee3a4bc
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.111
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8
IPV6_PRIVACY=no
rac2配置
[root@rac2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=209a4763-fadb-413b-b4f2-afa3e230d41f
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.112
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8
IPV6_PRIVACY=no
虚拟网络配置 rac1
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
[root@rac1 network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=6a068162-6ea0-4d60-a588-580424a1d978
DEVICE=ens34
ONBOOT=yes
IPADDR=10.10.10.11
PREFIX=24
IPV6_PRIVACY=no
虚拟网络配置 rac2
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
[root@rac2 network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=5df21d9e-2fe0-480b-8055-f3d85651093b
DEVICE=ens34
ONBOOT=yes
IPADDR=10.10.10.12
PREFIX=24
IPV6_PRIVACY=no
两个网盘修改好后重启网络服务
systemctl restart network
两台机器执行
yum -y install binutils compat-libstdc++-33 glibc ksh libaio libgcc libstdc++ make compat-libcap1 gcc gcc-c++ glibc-devel libaio-devel libstdc++-devel sysstat elfutils-libelf-devel smartmontools
修改内核参数
vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 1661249126
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
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
sysctl -p 使参数生效
配置shell限制
vim /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
关闭selinux
[root@rac1 network-scripts]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# disabled - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of disabled.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
关闭防火墙
[root@rac1 network-scripts]# systemctl stop firewalld
[root@rac1 network-scripts]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@rac1 network-scripts]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
3月 26 21:36:48 rac1 systemd[1]: Starting firewalld - dynamic firewall daemon...
3月 26 21:36:48 rac1 systemd[1]: Started firewalld - dynamic firewall daemon.
3月 26 21:36:49 rac1 firewalld[741]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.
3月 26 22:03:33 rac1 systemd[1]: Stopping firewalld - dynamic firewall daemon...
3月 26 22:03:35 rac1 systemd[1]: Stopped firewalld - dynamic firewall daemon.
关闭网络管理服务
[root@rac1 network-scripts]# systemctl stop NetworkManager
[root@rac1 network-scripts]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
[root@rac1 network-scripts]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead) since 五 2021-03-26 22:15:54 CST; 13s ago
Docs: man:NetworkManager(8)
Main PID: 774 (code=exited, status=0/SUCCESS)
3月 26 21:46:21 rac1 NetworkManager[774]: <info> [1616766381.3219] device (ens37): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
3月 26 21:46:21 rac1 NetworkManager[774]: <info> [1616766381.3362] device (ens37): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
3月 26 21:46:21 rac1 NetworkManager[774]: <info> [1616766381.3402] device (ens37): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
3月 26 21:46:21 rac1 NetworkManager[774]: <info> [1616766381.3408] device (ens37): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
3月 26 21:46:21 rac1 NetworkManager[774]: <info> [1616766381.3411] device (ens37): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
3月 26 21:46:21 rac1 NetworkManager[774]: <info> [1616766381.3464] device (ens37): Activation: successful, device activated.
3月 26 22:15:54 rac1 NetworkManager[774]: <info> [1616768154.9202] caught SIGTERM, shutting down normally.
3月 26 22:15:54 rac1 systemd[1]: Stopping Network Manager...
3月 26 22:15:54 rac1 NetworkManager[774]: <info> [1616768154.9244] manager: NetworkManager state is now CONNECTED_SITE
3月 26 22:15:54 rac1 systemd[1]: Stopped Network Manager.
设置两台主机的主机名
hostnamectl set-hostname rac1
hostnamectl set-hostname rac2
增加地址解析
vim /etc/hosts
#PUBLIC
192.168.100.111 rac1
192.168.100.112 rac2
#PRIVATE
10.10.10.11 rac1-priv
10.10.10.12 rac2-priv
#VIP
192.168.100.211 rac1-vip
192.168.100.212 rac2-vip
#scan ip
192.168.100.11 rac-cluster-scan
创建用户和组
groupadd -g 1000 oinstall
groupadd -g 1001 dba
groupadd -g 1002 oper
groupadd -g 1003 asmadmin
groupadd -g 1004 asmdba
groupadd -g 1005 asmoper
useradd -u 1001 -g oinstall -G dba,asmadmin,asmdba,asmoper grid
useradd -u 1002 -g oinstall -G dba,oper,asmadmin,asmdba oracle
passwd grid
passwd oracle
vi /etc/profile
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
创建目录
mkdir -p /opt/app/oraInventory
chown -R grid:oinstall /opt/app/oraInventory
chmod -R 775 /opt/app/oraInventory
mkdir -p /opt/app/grid
chown -R grid:oinstall /opt/app/grid
chmod -R 775 /opt/app/grid
mkdir -p /opt/app/11.2.0.4/grid
chown -R grid:oinstall /opt/app/11.2.0.4/grid
chmod -R 775 /opt/app/11.2.0.4/grid
mkdir -p /opt/app/oracle
chown -R oracle:oinstall /opt/app/oracle
chmod -R 775 /opt/app/oracle
mkdir -p /opt/app/oracle/product/11.2.0.4/db_1
chown -R oracle:oinstall /opt/app/oracle/product/11.2.0.4/db_1
chmod -R 775 /opt/app/oracle/product/11.2.0.4/db_1
修改root环境变量
vi .bash_profile
export GRID_BASE=/opt/app/grid
export GRID_SID=+ASM1 #这里不一样
export GRID_HOME=/opt/app/11.2.0.4/grid
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:$PATH
export ORACLE_BASE=/opt/app/oracle
export ORACLE_SID=orcl1 #这里不一样
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1
export PATH=$ORACLE_HOME/bin:$PATH
下面会有两边不一样的地方
修改grid用户环境变量
su - grid
vi .bash_profile
export ORACLE_BASE=/opt/app/grid
export ORACLE_SID=+ASM1 #这里不一样
export ORACLE_HOME=/opt/app/11.2.0.4/grid
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
umask 022
修改oracle环境变量
su - oracle
vi .bash_profile
export ORACLE_BASE=/opt/app/oracle
export ORACLE_SID=orcl1 #这里不一样
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1
export PATH=$ORACLE_HOME/bin:$PATH
umask 022
SSH互信配置,配置免费登录
su - grid
ssh-keygen -t rsa #生成公钥和私钥
ssh-copy-id rac2 #本机对rac2机器免密登录
ssh-copy-id rac1 #本机对rac1自己也要免密登录
su - oracle
ssh-keygen -t rsa #生成公钥和私钥
ssh-copy-id rac2 #本机对rac2机器免密登录
ssh-copy-id rac1 #本机对rac1自己也要免密登录
-----------------------------------------------start 使用udev创建asm磁盘 --------------------------------------------------
为什么我强烈不推荐ASM环境下使用ASMLIB https://blog.csdn.net/askmaclean/article/details/7192487
[root@rac1 ~]# lsscsi --scsi_id -g
[0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda 36000c297f03deecc6d1d513106f44cb9 /dev/sg0
[2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 - /dev/sg1
[3:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sdb 36000c292d169095592aca7a901fde2f3 /dev/sg2
[3:0:1:0] disk VMware, VMware Virtual S 1.0 /dev/sdc 36000c29f3a6cf035b14ffb8225cf6e7d /dev/sg3
[3:0:2:0] disk VMware, VMware Virtual S 1.0 /dev/sdd 36000c29cbd0930c5f6a9f5bb5ff6be1e /dev/sg4
创建一个新的udev 规则文件
[root@rac1 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules linux6使用如下
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c290ea1b9b9d9e76575b36cc83b5", NAME="asm-disk1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29e3fac88c8dd48128dd2f8a3b6", NAME="asm-disk2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29acdaeeb157e2b47fd43288429", NAME="asm-disk3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29a046db8852156dd1a8bd78ce2", NAME="asm-disk4", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@rac1 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules linux7使用如下
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c292d169095592aca7a901fde2f3", RUN+="/bin/sh -c 'mknod /dev/asmdiskb b $major $minor; chown grid:asmadmin /dev/asmdiskb; chmod 0660 /dev/asmdiskb'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29f3a6cf035b14ffb8225cf6e7d", RUN+="/bin/sh -c 'mknod /dev/asmdiskc b $major $minor; chown grid:asmadmin /dev/asmdiskc; chmod 0660 /dev/asmdiskc'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29cbd0930c5f6a9f5bb5ff6be1e", RUN+="/bin/sh -c 'mknod /dev/asmdiskd b $major $minor; chown grid:asmadmin /dev/asmdiskd; chmod 0660 /dev/asmdiskd'"
[root@rac2 ~]# udevadm control --reload-rules
[root@rac2 ~]# udevadm trigger --type=devices --action=change
[root@rac1 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Apr 1 16:37 /dev/asmdiskb
-----------------------------------------------end 使用udev创建asm磁盘 --------------------------------------------------
-----------------------------------------------start 使用asmlib创建asm磁盘 --------------------------------------------------
[root@rac1 ~]# yum -y install kmod-oracleasm
[root@rac1 ~]# rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm #先下载此软件 https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html
警告:oracleasmlib-2.0.12-1.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:oracleasmlib-2.0.12-1.el7 ################################# [100%]
[root@rac1 ~]# rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm #先下载此软件 https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html
警告:oracleasm-support-2.1.11-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:oracleasm-support-2.1.11-2.el7 ################################# [100%]
注意:正在将请求转发到“systemctl enable oracleasm.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/oracleasm.service to /usr/lib/systemd/system/oracleasm.service.
[root@rac1 ~]# scp -r oracleasm* root@192.168.100.112:/root/
[root@rac1 ~]# fdisk /dev/sdb #在一个节点执行即可
[root@rac1 ~]# fdisk /dev/sdc #在一个节点执行即可
[root@rac1 ~]# fdisk /dev/sdd #在一个节点执行即可
[root@rac1 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 4月 6 09:31 /dev/sda
brw-rw---- 1 root disk 8, 1 4月 6 09:31 /dev/sda1
brw-rw---- 1 root disk 8, 2 4月 6 09:31 /dev/sda2
brw-rw---- 1 root disk 8, 16 4月 6 09:40 /dev/sdb
brw-rw---- 1 root disk 8, 17 4月 6 09:40 /dev/sdb1
brw-rw---- 1 root disk 8, 32 4月 6 09:40 /dev/sdc
brw-rw---- 1 root disk 8, 33 4月 6 09:40 /dev/sdc1
brw-rw---- 1 root disk 8, 48 4月 6 09:40 /dev/sdd
brw-rw---- 1 root disk 8, 49 4月 6 09:40 /dev/sdd1
[root@rac1 ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@rac1 ~]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@rac1 ~]# oracleasm createdisk DISK01 /dev/sdb1 #在一个节点执行即可
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DISK02 /dev/sdc1 #在一个节点执行即可
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DISK03 /dev/sdd1 #在一个节点执行即可
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm listdisks
DISK01
DISK02
DISK03
其它节点直接使用 oracleasm scandisks #扫描出磁盘即可, 然后也可以看到磁盘 oracleasm listdisks
-----------------------------------------------end 使用asmlib创建asm磁盘 --------------------------------------------------
安装grid
[root@rac1 root]# su - root
[root@rac1 root]# yum -y install unzip
[root@rac1 root]# mv p13390677_112040_Linux-x86-64_3of7.zip /home/grid/
[root@rac1 root]# chmod 777 /home/grid/p13390677_112040_Linux-x86-64_3of7.zip
[root@rac1 root]# su - grid
[grid@rac1 grid]# unzip /home/grid/p13390677_112040_Linux-x86-64_3of7.zip
[grid@rac1 grid]# su - root
[root@rac1 grid]# cd /home/grid/grid/rpm/
[root@rac1 grid]# rpm -ivh /home/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm #节点二也安装此软件
[root@rac1 rpm]# scp cvuqdisk-1.0.9-1.rpm root@192.168.100.112:/root/
[root@rac1 grid]# su - grid
[grid@rac1 grid]# /home/grid/grid/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
检查: "pdksh" 的 包存在性
节点名 可用 必需 状态
------------ ------------------------ ------------------------ ----------
rac2 缺失 pdksh-5.2.14 失败
rac1 缺失 pdksh-5.2.14 失败
结果:"pdksh" 的 包存在性 检查失败 此可忽略
1.创建交换分区的文件:增加2G大小的交换分区
dd if=/dev/zero of=/var/swapfile bs=1M count=2048
2.设置交换文件
mkswap /var/swapfile
3.启用交换分区文件
swapon /var/swapfile
4.在/etc/fstab添加
echo '/var/swapfile swap swap defaults 0 0'>>/etc/fstab
5.检查
free -m
在win10客户端启动xlaunch,记得勾选 No Access Control
ssh -Y root@192.168.100.111
[root@rac1 ~]# yum -y install xdpyinfo xhost
[root@rac1 ~]# xhost +
access control disabled, clients can connect from any host
[root@rac1 ~]# su - grid
[grid@rac1 grid]$ export DISPLAY=192.168.100.100:0.0
[grid@rac1 grid]$ export LANG=en_US.UTF-8
[grid@rac1 grid]$ cd /home/grid/grid/
[grid@rac1 grid]$ ./runInstaller # SCAN Port为1521,注意SCAN Name必须与/etc/hosts文件中设置的一致;
下面的一定要按照顺序执行,几次没安装成功都是执行顺序问题
[root@rac1 ~]# /opt/app/oraInventory/orainstRoot.sh
Changing permissions of /opt/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /opt/app/oraInventory to oinstall.
The execution of the script is complete.
[root@rac2 ~]# /opt/app/oraInventory/orainstRoot.sh
Changing permissions of /opt/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /opt/app/oraInventory to oinstall.
The execution of the script is complete.
[root@rac1 ~]# /opt/app/11.2.0.4/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /opt/app/11.2.0.4/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /opt/app/11.2.0.4/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding Clusterware entries to inittab
----------------------报错处理 start,问题1,执行到此处会一直卡着。需要开其它窗口执行如下----------------
[root@rac1 ~]# touch /usr/lib/systemd/system/ohas.service
[root@rac1 ~]# chmod 777 /usr/lib/systemd/system/ohas.service
[root@rac1 ~]# vi /usr/lib/systemd/system/ohas.service
[Unit]
Description=Oracle High Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
[root@rac1 ~]# systemctl daemon-reload
[root@rac1 ~]# systemctl enable ohas.service
Created symlink from /etc/systemd/system/multi-user.target.wants/ohas.service to /usr/lib/systemd/system/ohas.service.
[root@rac1 ~]# systemctl start ohas.service
[root@rac1 ~]# systemctl status ohas.service
-----------------------报错处理 end------------------------
CRS-2672: Attempting to start 'ora.mdnsd' on 'rac1'
CRS-2676: Start of 'ora.mdnsd' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'rac1'
CRS-2676: Start of 'ora.gpnpd' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac1'
CRS-2672: Attempting to start 'ora.gipcd' on 'rac1'
CRS-2676: Start of 'ora.cssdmonitor' on 'rac1' succeeded
CRS-2676: Start of 'ora.gipcd' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'rac1'
CRS-2672: Attempting to start 'ora.diskmon' on 'rac1'
CRS-2676: Start of 'ora.diskmon' on 'rac1' succeeded
CRS-2676: Start of 'ora.cssd' on 'rac1' succeeded
已成功创建并启动 ASM。
已成功创建磁盘组DATA。
clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4256: Updating the profile
Successful addition of voting disk 4cc88c42a5bf4ff8bf96b698bdec25fe.
Successfully replaced voting disk group with +DATA.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 4cc88c42a5bf4ff8bf96b698bdec25fe (/dev/asmdiskb) [DATA]
Located 1 voting disk(s).
CRS-2672: Attempting to start 'ora.asm' on 'rac1'
CRS-2676: Start of 'ora.asm' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.DATA.dg' on 'rac1'
CRS-2676: Start of 'ora.DATA.dg' on 'rac1' succeeded
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
http://www.itpub.net/thread-1836169-1-1.html
[root@rac1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.111 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::20c:29ff:fef3:2014 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f3:20:14 txqueuelen 1000 (Ethernet)
RX packets 204451 bytes 47085602 (44.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3045391 bytes 8370683243 (7.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.211 netmask 255.255.255.0 broadcast 192.168.100.255
ether 00:0c:29:f3:20:14 txqueuelen 1000 (Ethernet)
ens33:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.11 netmask 255.255.255.0 broadcast 192.168.100.255
ether 00:0c:29:f3:20:14 txqueuelen 1000 (Ethernet)
ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.10.11 netmask 255.255.255.0 broadcast 10.10.10.255
inet6 fe80::20c:29ff:fef3:201e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f3:20:1e txqueuelen 1000 (Ethernet)
RX packets 539 bytes 93019 (90.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 568 bytes 94606 (92.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens34:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.202.39 netmask 255.255.0.0 broadcast 169.254.255.255
ether 00:0c:29:f3:20:1e txqueuelen 1000 (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 5049 bytes 3690700 (3.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5049 bytes 3690700 (3.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@rac2 ~]# /opt/app/11.2.0.4/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /opt/app/11.2.0.4/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /opt/app/11.2.0.4/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
Adding Clusterware entries to inittab
----------------------报错处理 start,问题1,执行到此处会一直卡着。需要开其它窗口执行如下----------------
[root@rac1 ~]# touch /usr/lib/systemd/system/ohas.service
[root@rac1 ~]# chmod 777 /usr/lib/systemd/system/ohas.service
[root@rac1 ~]# vi /usr/lib/systemd/system/ohas.service
[Unit]
Description=Oracle High Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
[root@rac1 ~]# systemctl daemon-reload
[root@rac1 ~]# systemctl enable ohas.service
Created symlink from /etc/systemd/system/multi-user.target.wants/ohas.service to /usr/lib/systemd/system/ohas.service.
[root@rac1 ~]# systemctl start ohas.service
[root@rac1 ~]# systemctl status ohas.service
-----------------------报错处理 end------------------------
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node rac1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
安装完成后验证集群情况
[grid@rac1 grid]$ ./runcluvfy.sh stage -post crsinst -n rac1,rac2
执行 集群服务设置 的后期检查
正在检查节点的可访问性...
节点 "rac1" 的节点可访问性检查已通过
正在检查等同用户...
用户 "grid" 的等同用户检查已通过
正在检查节点连接性...
正在检查主机配置文件...
主机配置文件的验证成功
检查: 接口 "ens33" 的节点连接性
接口 "ens33" 的节点连接性检查已通过
子网 "192.168.100.0" 的 TCP 连接性检查通过
检查: 接口 "ens34" 的节点连接性
接口 "ens34" 的节点连接性检查已通过
子网 "10.10.10.0" 的 TCP 连接性检查通过
正在检查子网掩码一致性...
子网 "192.168.100.0" 的子网掩码一致性检查已通过。
子网 "10.10.10.0" 的子网掩码一致性检查已通过。
子网掩码一致性检查已通过。
节点连接性检查已通过
正在检查多点传送通信...
正在检查子网 "192.168.100.0" 是否能够与多点传送组 "230.0.1.0" 进行多点传送通信...
子网 "192.168.100.0" 是否能够与多点传送组 "230.0.1.0" 进行多点传送通信的检查已通过。
正在检查子网 "10.10.10.0" 是否能够与多点传送组 "230.0.1.0" 进行多点传送通信...
子网 "10.10.10.0" 是否能够与多点传送组 "230.0.1.0" 进行多点传送通信的检查已通过。
多点传送通信检查已通过。
时区一致性 检查已通过
正在检查 Oracle 集群表决磁盘配置...
“ASM 运行”检查通过。ASM 正在所有指定节点上运行
Oracle 集群表决磁盘配置检查已通过
正在检查集群管理器完整性...
正在检查 CSS 守护程序...
Oracle 集群同步服务似乎处于联机状态。
集群管理器完整性检查已通过
OCR 位置 的 UDev 属性检查开始...
OCR 位置 的 UDev 属性检查通过
表决磁盘位置 的 UDev 属性检查开始...
表决磁盘位置 的 UDev 属性检查通过
默认用户文件创建掩码检查已通过
正在检查集群完整性...
集群完整性检查已通过
正在检查 OCR 完整性...
正在检查是否缺少非集群配置...
所有节点都没有非集群的, 仅限本地的配置
“ASM 运行”检查通过。ASM 正在所有指定节点上运行
正在检查 OCR 配置文件 "/etc/oracle/ocr.loc"...
OCR 配置文件 "/etc/oracle/ocr.loc" 检查成功
ocr 位置 "+ocr" 的磁盘组在所有节点上都可用
NOTE:
此检查不验证 OCR 内容的完整性。请以授权用户的身份执行 'ocrcheck' 以验证 OCR 的内容。
OCR 完整性检查已通过
正在检查 CRS 完整性...
集群件版本一致性测试已通过
CRS 完整性检查已通过
正在检查节点应用程序是否存在...
检查 VIP 节点应用程序是否存在 (必需)
VIP 节点应用程序检查通过
检查 NETWORK 节点应用程序是否存在 (必需)
NETWORK 节点应用程序检查通过
检查 GSD 节点应用程序是否存在 (可选)
节点 "rac2,rac1" 上的 GSD 节点应用程序已脱机
检查 ONS 节点应用程序是否存在 (可选)
ONS 节点应用程序检查通过
正在检查单客户机访问名 (SCAN)...
正在检查 TCP 与 SCAN 监听程序之间的连接性...
所有集群节点上都存在 TCP 与 SCAN 监听程序之间的连接性
正在检查 "rac-cluster-scan" 的名称解析设置...
Checking integrity of name service switch configuration file "/etc/nsswitch.conf" ...
All nodes have same "hosts" entry defined in file "/etc/nsswitch.conf"
Check for integrity of name service switch configuration file "/etc/nsswitch.conf" passed
ERROR:
PRVG-1101 : SCAN 名称 "rac-cluster-scan" 无法解析
ERROR:
PRVF-4657 : "rac-cluster-scan" (IP 地址: 192.168.100.11) 的名称解析设置检查失败
ERROR:
PRVF-4664 : 发现与 SCAN 名称 "rac-cluster-scan" 不一致的名称解析条目
未能验证 SCAN VIP 和监听程序设置
正在检查 OLR 完整性...
正在检查 OLR 配置文件...
OLR 配置文件检查成功
正在检查 OLR 文件属性...
OLR 文件检查成功
WARNING:
此检查不验证 OLR 内容的完整性。请以授权用户的身份执行 'ocrcheck -local' 以验证 OLR 的内容。
OLR 完整性检查通过
用户 "grid" 不属于 "root" 组。检查已通过
正在检查是否在所有节点上安装了集群件...
集群件的安装检查通过
正在检查 CTSS 资源是否在所有节点上运行...
CTSS 资源检查通过
正在查询所有节点上时间偏移量的 CTSS...
时间偏移量的 CTSS 查询通过
检查 CTSS 状态已启动...
CTSS 处于活动状态。正在继续检查所有节点上的时钟时间偏移量...
时钟时间偏移量检查通过
Oracle 集群时间同步服务检查已通过
检查 VIP 配置。
检查 VIP 子网配置。
VIP 子网配置检查通过。
检查 VIP 可访问性
VIP 子网可访问性检查通过。
在所有节点上 集群服务设置 的后期检查失败。
[grid@rac1 grid]$ crsctl status resource -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ARCH.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.DATA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.LISTENER.lsnr
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.OCR.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.asm
ONLINE ONLINE rac1 Started
ONLINE ONLINE rac2 Started
ora.gsd
OFFLINE OFFLINE rac1
OFFLINE OFFLINE rac2
ora.net1.network
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.ons
ONLINE ONLINE rac1
ONLINE ONLINE rac2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1
ora.cvu
1 ONLINE ONLINE rac1
ora.oc4j
1 ONLINE ONLINE rac1
ora.orcl.db
1 ONLINE ONLINE rac1 Open
2 ONLINE ONLINE rac2 Open
ora.rac1.vip
1 ONLINE ONLINE rac1
ora.rac2.vip
1 ONLINE ONLINE rac2
ora.scan1.vip
1 ONLINE ONLINE rac1
[grid@rac1 grid]$ crsctl status server
NAME=rac1
STATE=ONLINE
NAME=rac2
STATE=ONLINE
[grid@rac1 grid]$ srvctl status asm -a
ASM is running on rac2,rac1
ASM is enabled.
[root@rac1 ~]# crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[root@rac1 ~]# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[root@rac1 ~]# srvctl status nodeapps
VIP rac1-vip 已启用
VIP rac1-vip 正在节点上运行: rac1
VIP rac2-vip 已启用
VIP rac2-vip 正在节点上运行: rac2
网络已启用
网络正在节点上运行: rac1
网络正在节点上运行: rac2
GSD 已禁用
GSD 没有运行的节点: rac1
GSD 没有运行的节点: rac2
ONS 已启用
ONS 守护程序正在节点上运行:rac1
ONS 守护程序正在节点上运行:rac2
[root@rac1 ~]# srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: rac2,rac1
四、oracle软件安装
上传软件安装包到 /home/oracle目录
su - oracle
oracle rac也可以安装前验证
[oracle@rac1 database]$ ./runcluvfy.sh stage -pre dbinst -n rac1,rac2 -osdba dba
[oracle@rac1 database]$ ./runcluvfy.sh stage -pre dbcfg -n rac1,rac2 -d
[oracle@rac1 database]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
[oracle@rac1 database]$ unzip p13390677_112040_Linux-x86-64_2of7.zip
[oracle@rac1 database]$ export DISPLAY=192.168.100.100:0.0
[oracle@rac1 database]$ export LANG=en_US.UTF-8
[oracle@rac1 database]$ cd /home/oracle/database
[oracle@rac1 database]$ ./runInstaller
/opt/app/oraInventory/logs/installActions2021-04-06_10-05-03AM.log
Error in invoking target 'agent nmhs' of makefile '/opt/app/oracle/product/11.2.0.4/db_1/sysman/lib/ins_emagent.mk'. See '/opt/app/oraInventory/logs/installActions2021-04-05_08-44-43AM.log' for details.
[root@rac1 ~]# cd $ORACLE_HOME/sysman/lib
[root@rac1 lib]# cp ins_emagent.mk ins_emagent.mk.bak
[root@rac1 lib]# vi ins_emagent.mk
进入vi编辑器后 命令模式输入/NMECTL 进行查找,快速定位要修改的行
在后面追加参数-lnnz11 第一个是字母l 后面两个是数字1
[root@rac1 lib]# /opt/app/oracle/product/11.2.0.4/db_1/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /opt/app/oracle/product/11.2.0.4/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@rac2 ~]# /opt/app/oracle/product/11.2.0.4/db_1/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /opt/app/oracle/product/11.2.0.4/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
五、创建ASM磁盘组
[root@rac1 ~]# su - grid
[grid@rac1 ~]$ export DISPLAY=192.168.100.100:0.0
[grid@rac1 ~]$ export LANG=en_US.UTF-8
[grid@rac1 ~]$ asmca
六、创建数据库
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ export DISPLAY=192.168.100.100:0.0
[oracle@rac1 ~]$ export LANG=en_US.UTF-8
[oracle@rac1 ~]$ dbca
https://www.oracle.com/cn/technical-resources/articles/hunter-rac11gr2-iscsi.html
https://oracle-base.com/articles/11g/oracle-db-11gr2-rac-installation-on-ol5-using-vmware-server-2