一、环境准备
操作系统CENTOS7.5
数据库ORACLE11.2.0.4
虚拟机ORACLE VM virtualbox6.0
1、新建2台虚拟机
虚拟机配置,内存4G(最好是给4G,不然会后悔的,后悔的截图在最后一行),CPU1核,本地磁盘50G,共享磁盘需要详细的写一下,如下所述:
RAC1:
创建新虚拟盘




1节点创建好2个固定磁盘
进入 (ORACLE VM)虚拟介质管理界面

将刚刚创建的2块磁盘设置为共享属性,应用
OCR磁盘最小1G,DATA磁盘最小3G
2节点直接使用刚刚创建的两块现有共享磁盘

每台虚拟机一共3块网卡,其中2块hostonly,1块桥接
2块hostonly的网段也要区分开
不同网段可以在(ORACLE VM)主机网络管理那里配置添加
IP地址和网卡配置自己搞定吧,太简单不写了
1 、host文件配置
#vi /etc/hosts
127.0.0.1 localhost
10.18.96.211 testdb1
10.18.96.212 testdb2
10.18.96.213 testdb1-vip
10.18.96.214 testdb2-vip
10.18.97.215 testdb1-pri
10.18.97.216 testdb2-pri
10.18.96.220 testdb-scan
( hosts 文件的 IP 对应名称最好只写一个,不要多余的)
以下很重要,不修改会在安装grid的时候会报错
节点1
vi /etc/hostname
testdb1
临时修改hostname
hostname testdb1
节点2
vi /etc/hostname
testdb2
临时修改hostname
hostname testdb2
2 、安装ORACLE11G所需环境包
yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel libcap.so.1
我用本地YUM源
3 、 参数配置
vi /etc/sysctl.conf
生产库的配置:最后一行添加,重复的去掉
kernel.shmall = 4294967295
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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 = 1048576
kernel.shmmax = 4294967295
这里
hugepage不配置了
使参数立即生效
sysctl -p
vi /etc/security/limits.conf
生产库的配置:最后一行添加,重复的去掉
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 10240
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
vi /etc/pam.d/login
session required pam_limits.so
4 、关闭防火墙
如果不关闭防火墙,在后面配置集群的时候会遇到麻烦的
service iptables stop
chkconfig iptables off
setenforce 0
getenforce
iptables -F
vi /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
5 、禁用NTP服务(可忽略)
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
rm -rf /etc/ntp.conf
6 、用户及用户组,权限目录创建
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 503 oper
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 505 asmoper
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/useradd -g oinstall -G dba,asmdba,oper oracle
/usr/sbin/useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
passwd oracle
passwd grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
7 、oracle及grid环境变量配置
以 oracle 用户登录(两个节点一样)
节点一
vi .bash_profile
export PATH
umask 022
export ORACLE_BASE=/ u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=testdb1
export LANG=en_US.UTF-8
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_PATH=${PATH}:$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
oracle用户,节点二
vi .bash_profile
export PATH
umask 022
export ORACLE_BASE=/ u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=testdb2
export LANG=en_US.UTF-8
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_PATH=${PATH}:$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
以 grid 用户登录
节点一:
vi .bash_profile
ORACLE_SID=+ASM1; export ORACLE_SID
JAVA_HOME=/usr/local/java;export JAVA_HOME
ORACLE_BASE=/ u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/ u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/ u01/app/oracle/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm;export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/ u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export LANG=en_US.UTF-8
alias sqlplus="rlwrap sqlplus"
umask 022
节点二:
vi .bash_profile
ORACLE_SID=+ASM2; export ORACLE_SID
JAVA_HOME=/usr/local/java;export JAVA_HOME
ORACLE_BASE=/ u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/ u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/ u01/app/oracle/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm;export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/ u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export LANG=en_US.UTF-8
alias sqlplus="rlwrap sqlplus"
umask 022
8 、ssh密匙互信配置
设置互信关系,这里记住oracle和grid用户都要设置互信,root也互信,且在测试的时候,2个节点都要进行测试
两个节点上分别操作
su - oracle
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
以下操作在一个节点上执行即可
cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys -公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh testdb2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys -第二个节点的公钥写到本机
ssh testdb2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testdb2:~/.ssh/authorized_keys
两个节点上分别验证
ssh testdb1 date
ssh testdb2 date
ssh testdb1-PRI date
ssh testdb2-PRI date
两个节点上分别操作
su - grid
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
以下操作在一个节点上执行即可
cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys -公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh testdb2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys -第二个节点的公钥写到本机
ssh testdb2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testdb2:~/.ssh/authorized_keys
两个节点上分别验证
ssh testdb1 date
ssh testdb2 date
ssh testdb1-PRI date
ssh testdb2-PRI date
二、ASM磁盘配置
1 、编辑 /etc/scsi_id.config 文件
vi /etc/scsi_id.configo
options=-g
2 、给磁盘分区,并查看磁盘的 uuid (磁盘分区只在一个节点执行即可)
fdisk /dev/sda
n
p
1
默认回车
默认回车
w
fidk /dev/sdb
n
p
1
默认回车
默认回车
w
查看UUID
/usr/lib/udev/scsi_id -g -u -d /dev/sda1
/usr/lib/udev/scsi_id -g -u -d /dev/sdb1
当然磁盘是哪个磁盘,这个要你们自己挂载的时候自己整好,lsblk查看磁盘
3 、编辑绑定文件,使用如下规则(这个配置在2个节点都写)
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="3628408eff0495d08ef004912d7d6b386", RUN+="/bin/sh -c 'mknod /dev/asmocrdisk b $major $minor; chown grid:asmadmin /dev/asmocrdisk; chmod 0660 /dev/asmocrdisk'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="361c104516049770bef80026911671d80", RUN+="/bin/sh -c 'mknod /dev/asmdatadisk1 b $major $minor; chown grid:asmadmin /dev/asmdatadisk1; chmod 0660 /dev/asmdatadisk1'"
4 、开始绑定
测试
/sbin/partprobe /dev/sda1
/sbin/udevadm test /block/sda/sda1
/sbin/partprobe /dev/sdb1
/sbin/udevadm test /block/sdb/sdb1
进行绑定命令:
/sbin/udevadm control --reload-rules
5 、绑定完成,可以使用命了 ls -l /dev/asm* 进行查看
lrwxrwxrwx. 1 root root 4 6月 6 16:14 /dev/asm-datadisk1 -> sdb1
lrwxrwxrwx. 1 root root 4 6月 6 16:05 /dev/asm-ocrdisk -> sda1
注意:这个时候可能你会发现ll /dev/asm* 下面啥都木有
这个就要记得,把防火墙关闭了,setenforce 0 iptables -F
然后改那个/etc/selinux/config 永久关闭,vi /dev/udev/rules.d/ 99-oracle-asmdevices.rules 一样的配置
再登陆2节点,lsblk发现为啥没有/dev/sda1 和/dev/sdb1,直接fdisk /dev/sda 和fdisk /dev/sdb然后直接q退出,不用操作
再次lsblk,就发现,ll /dev/asm* 有映射了。
然后回到1节点,ll /dev/asm*发现还是没有映射,那就和2节点一样的操作,fdisk /dev/sda 和fdisk /dev/sdb然后直接q退出,不用操作。再次lsblk,就发现,ll /dev/asm*有映射了。
如果ll /dev/asm* 还是看不到,那就直接reboot重启操作系统应该就能看到了。
磁盘不同,那些命令路径也有不同,自己看着来
三、GRID/ASM安装
1 )使用 oracle 用户解压安装包
2 )使用 grid 用户登录安装 grid
安装图形化
yum -y groupinstall "X Window System"
rpm -ivh /opt/grid/rpm/cvuqdisk-1.0.9-1.rpm ( 解压 grid 安装包里面可以找到,如果无法安装,请先安装yum install smartmontools这个 )
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm (这里必须安装这个版本)
注意事项:安装 GRID 时, VIP 设置的时候要全部小写, VIP 的 IP 不允许占用
图形化安装,自己搞定哈,或者在我其他博客里自己找
root用户xhost +回车
su - grid
export DISPLAY=192.168.159.6:0.0
cd /opt/grid/
./runInstaller
(1)步骤一

步骤二

步骤三

步骤四

步骤五

步骤六

步骤七

步骤八

步骤九

步骤十

步骤十一

步骤十二

步骤十三

步骤十四

步骤十五

步骤十六

以上这些都可以忽略
步骤十七

步骤十八
两个节点分别执行脚本,先在一个节点执行完2个脚本,再去第二个节点执行

在执行第二个脚本时,
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
运行到这一句,开始,就可以做以下操作了
步骤如下:
1. 以root用户创建服务文件
#touch /usr/lib/systemd/system/ohas.service
#chmod 777 /usr/lib/systemd/system/ohas.service
2. 将以下内容添加到新创建的ohas.service文件中
[root@rac1 init.d]# cat /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
3. 以root用户运行下面的命令
systemctl daemon-reload
systemctl enable ohas.service
systemctl start ohas.service
4. 查看运行状态
[root@rac1 init.d]# systemctl status ohas.service
看到 Active: active (running) 这个状态就OK了,不用管,继续让它自己自动执行。
如果遇到另外一个报错:
Failed to create keys in the OLR, rc = 127, Message:
/u01/app/11.2.0/grid/bin/clscfg.bin: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory
Failed to create keys in the OLR at /u01/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 7660.
解决方案:
执行如下操作,就可以在此执行root.sh了
[root@rac1 ~]# cd /lib64
[root@rac1 lib64]# ls libcap*
libcap-ng.so.0 libcap-ng.so.0.0.0 libcap.so.2 libcap.so.2.22
[root@rac1 lib64]# ln -s libcap.so.2.22 libcap.so.1
2节点一样的操作
cd /lib64
[root@rac2 lib64]# ln -s libcap.so.2.22 libcap.so.1
如果遇到这个报错:
FirstNode configuration failed at /oracle/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 9379.
/oracle/app/11.2.0/grid/perl/bin/perl -I/oracle/app/11.2.0/grid/perl/lib -I/oracle/app/11.2.0/grid/crs/install /oracle/app/11.2.0/grid/crs/install/rootcrs.pl execution failed
添加一条记录
vi /etc/hosts
127.0.0.1 localhost
如果遇到这个报错:
Adding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2021-05-17 16:16:09.812:
[client(9412)]CRS-2101:The OLR was formatted using version 3.
那就要检查你的/etc/hosts 和/etc/hostname 主机名是否修改正确
sr/lib
完成安装
出现这个报错可以忽略
四、 配置 ASM 磁盘
使用grid 用户在桌面图形环境中运行asmca
创建数据磁盘组



使用ORACLE 用户登录,./runInstaller
图形界面啥的,自己搞定或者看我其他博客文章
开始安装









出现红色框框的报错,ping以下你在/etc/hosts配置的scan的IP地址,能PING通就直接忽略,然后安装。
在安装过程中如果遇到报错
Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'
解决方法:(只需要在1节点改就可以了,2节点会自动同步的)
解决方案: 保留安装过程,另外开启一个终端窗口,将ins_emagent.mk文件中的 (MK_EMAGENT_NMECTL)更改为$(MK_EMAGENT_NMECTL) -lnnz11,然后在安装过程中点击Retry即可。
这个添加的-lnnz11 是 减号小写字母l ,两个数字1,你们懂得
如果遇到这个警告

是因为主机名里面有- 这种符号,以后主机名命名要注意
然后就是在两个节点上分别执行弹出框框的root脚本完成安装
使用 oracle 用户登录,执行 dbca
创建实例
后面的就直接下一步下一步,安装好2个节点实例,搞定,反正测试的不用搞那么多花里胡哨
安装完成
后面的截图不想写了,,,写了一大堆,这博客突然傻掉,不知道干嘛突然自动退出,没保存到截图,吐了,不写了。后面的和我其他博客里写的安装方法一样的。
比如下面我写的这篇就很详细了,包含了各种遇到的报错处理,各种注意事项,以后还有什么会继续补充完善
反正最重要的是前面那里配置VM磁盘的,而且只是写给自己看的,又不能设置只给自己看,莫得办法啊。

一个字,慢死了!!!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28371090/viewspace-2682228/ ,如需转载,请注明出处,否则将追究法律责任。