VMware Centos7.4+UDEV+AMS+ORACLE 配置RAC环境

目录

一、准备工作

1.1 服务器准备

1.2 IP地址准备

1.3 用户及组准备

1.4 SSH信任关系准备

1.5 文件目录准备(crmtest1和crmtest2)

1.6 RPM包准备

1.7 共享磁盘准备

1.8 系统参数修改

1.9 DNS服务器搭建(可选)

二、安装RAC

2.1 安装grid

2.2 asmca创建data/fra datagroup

2.3 安装database


一、准备工作

1.1 服务器准备

本次准备搭建一个RAC的测试环境,采用的是在VMware Workstation中搭建两台Centos虚拟机,以此搭建RAC的集群环境。虚拟机的信息如下:

 

IP

主机名

域名后缀

用户名密码

安装目录

DB

192.168.150.128

crmtest1

tp-link.net

oracle/grid

/u1/db

192.168.150.129

crmtest2

tp-link.net

oracle/grid

/u1/db

1.2 IP地址准备

RAC的IP地址规划如下。需要注意的是,搭建或者克隆Oracle数据库的时候,一定要先记得配置好/etc/hosts文件,否则有可能会出现数据库一直处理connected状态。

##public IP
192.168.150.128 crmtest1.tp-link.net    crmtest1
192.168.150.139 crmtest2.tp-link.net    crmtest2

##Virtual IP
192.168.150.130 crmtest1-vip.tp-link.net        crmtest1-vip
192.168.150.131 crmtest2-vip.tp-link.net        crmtest2-vip

##Private IP
192.168.37.128  crmtest1-priv.tp-link.net       crmtest1-priv
192.168.37.129  crmtest2-priv.tp-link.net       crmtest2-priv

##Scan IP
192.168.150.135 crmtest-scan.tp-link.net    crmtest-scan
192.168.150.136 crmtest-scan.tp-link.net    crmtest-scan
192.168.150.137 crmtest-scan.tp-link.net    crmtest-scan

为了规划上述IP,需要对Centos虚拟机另外绑定一个网卡。

网卡1:

网卡2:

然后将网卡动态绑定的IP设定为静态IP

[root@crmtest1 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@crmtest1 network-scripts]# vim 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
IPADDR=192.168.150.128
NAME=ens33
UUID=4747bd04-7e51-40b7-9d24-04969f2c5196
DEVICE=ens33
ONBOOT=yes
PREFIX=24
GATEWAY=192.168.150.2

[root@crmtest1 network-scripts]# vim ifcfg-Wired_connection_1
HWADDR=00:0C:29:88:E0:AB
MACADDR=00:0C:29:88:E0:AB
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.37.128
PREFIX=24
GATEWAY=192.168.37.2
DEFROUTE=yes
PEERDNS=no
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Wired connection 1"
UUID=21cde08c-d753-3558-b7d4-6aa9f2604e45
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999

crmtest2和上述步骤一样,设定静态IP,不需要设定VIP IP

1.3 用户及组准备

[root@crmtest1 ~]# groupadd -g 1000 oinstall
[root@crmtest1 ~]# groupadd -g 1200 asmadmin
[root@crmtest1 ~]# groupadd -g 1201 asmdba
[root@crmtest1 ~]# groupadd -g 1202 asmoper
[root@crmtest1 ~]# groupadd -g 1300 dba
[root@crmtest1 ~]# groupadd -g 1301 oper
[root@crmtest1 ~]# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba -s /bin/bash -c "Grid Infrastructure Owner" grid
[root@crmtest1 ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba,asmadmin -s /bin/bash -c "Oracle Software Owner" oracle

[root@crmtest2 ~]# groupadd -g 1000 oinstall
[root@crmtest2 ~]# groupadd -g 1200 asmadmin
[root@crmtest2 ~]# groupadd -g 1201 asmdba
[root@crmtest2 ~]# groupadd -g 1202 asmoper
[root@crmtest2 ~]# groupadd -g 1300 dba
[root@crmtest2 ~]# groupadd -g 1301 oper
[root@crmtest2 ~]# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba -s /bin/bash -c "Grid Infrastructure Owner" grid
[root@crmtest2 ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba,asmadmin -s /bin/bash -c "Oracle Software Owner" oracle

软件组件

操作系统用户

主组

辅助组

Oracle基目录/Oracle主目录

Grid Infrastructure

grid

oinstall

asmadminasmdbaasmoper

/u1/db/grid

/u1/db/11.2.0/grid

Oracle RAC

oracle

oinstall

dbaoperasmdbaasmadmin

/u1/db/oracle

/u1/db/oracle/product/11.2.0/db_1

1.4 SSH信任关系准备

oracle用户建立信任关系

在crmtest1节点执行:
[oracle@crmtest1 ~]$ mkdir ~/.ssh
[oracle@crmtest1 ~]$ chmod 700 ~/.ssh
[oracle@crmtest1 ~]$ ssh-keygen -t rsa
[oracle@crmtest1 ~]$ ssh-keygen -t dsa
在crmtest2节点执行
[oracle@crmtest2 ~]$ mkdir ~/.ssh
[oracle@crmtest2 ~]$ chmod 700 ~/.ssh
[oracle@crmtest2 ~]$ ssh-keygen -t rsa
[oracle@crmtest2 ~]$ ssh-keygen -t dsa

在crmtest1节点执行:
[oracle@crmtest1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[oracle@crmtest1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[oracle@crmtest1 ~]$ ssh crmtest2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[oracle@crmtest1 ~]$ ssh crmtest2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[oracle@crmtest1 ~]$ scp ~/.ssh/authorized_keys  oracle@crmtest2:~/.ssh/authorized_keys

grid用户建立信任关系

在crmtest1节点执行:
[grid@crmtest1 ~]$ mkdir ~/.ssh
[grid@crmtest1 ~]$ chmod 700 ~/.ssh
[grid@crmtest1 ~]$ ssh-keygen -t rsa
[grid @crmtest1 ~]$ ssh-keygen -t dsa
在crmtest2节点执行
[grid@crmtest2 ~]$ mkdir ~/.ssh
[grid@crmtest2 ~]$ chmod 700 ~/.ssh
[grid@crmtest2 ~]$ ssh-keygen -t rsa
[grid@crmtest2 ~]$ ssh-keygen -t dsa

在crmtest1节点执行:
[grid@crmtest1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[grid@crmtest1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[grid@crmtest1 ~]$ ssh crmtest2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[grid@crmtest1 ~]$ ssh crmtest2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[grid@crmtest1 ~]$ scp ~/.ssh/authorized_keys  grid@crmtest2:~/.ssh/authorized_keys

1.5 文件目录准备(crmtest1和crmtest2

a)创建inventory directory
[root@crmtest1 ~]# mkdir -p /u1/db/oraInventory
[root@crmtest1 ~]# chown -R grid:oinstall /u1/db/oraInventory/
[root@crmtest1 ~]# chmod -R 775 /u1/db/oraInventory/

b)创建grid base,grid home directory
[root@crmtest1 ~]# mkdir -p /u1/db/grid
[root@crmtest1 ~]# chown -R grid:oinstall /u1/db/grid/
[root@crmtest1 ~]# chmod -R 775 /u1/db/grid/

[root@crmtest1 ~]# mkdir -p /u1/db/11.2.0/grid
[root@crmtest1 ~]# chown -R grid:oinstall /u1/db/11.2.0/
[root@crmtest1 ~]# chmod -R 775 /u1/db/11.2.0/

c)创建oracle base,oracle home directory
[root@crmtest1 ~]# mkdir -p /u1/db/oracle/cfgtoollogs
[root@crmtest1 ~]# chown -R oracle:oinstall /u1/db/oracle/
[root@crmtest1 ~]# chmod -R 775 /u1/db/oracle/

[root@crmtest1 ~]# mkdir -p /u1/db/oracle/product/11.2.0/db_1
[root@crmtest1 ~]# chown -R oracle:oinstall /u1/db/oracle/product/11.2.0/db_1/
[root@crmtest1 ~]# chmod -R 775 /u1/db/oracle/product/11.2.0/db_1/

1.6 RPM包准备

##这里建议创建一个yum.sh脚本来执行。
yum install -y compat-glibc
yum install -y compat-glibc-headers
yum install -y compat-libstdc++-296
yum install -y compat-libstdc++-296.i686
yum install -y compat-libstdc++-33.i686
yum install -y compat-libstdc++-33
yum install -y gcc
yum install -y gcc-c++
yum install -y gdbm
yum install -y gdbm.i686
yum install -y glibc
yum install -y glibc.i686
yum install -y glibc-common
yum install -y glibc-devel
yum install -y glibc-devel.i686
yum install -y libaio
yum install -y libaio.i686
yum install -y libaio-devel
yum install -y libaio-devel.i686
yum install -y libgcc
yum install -y libgcc.i686
yum install -y libgomp
yum install -y libgomp.i686
yum install -y libstdc++
yum install -y libstdc++.i686
yum install -y libstdc++-devel
yum install -y libstdc++-devel.i686
yum install -y libXp
yum install -y libXp.i686
yum install -y libXp-devel
yum install -y libXp-devel.i686
yum install -y libXtst
yum install -y libXtst.i686
yum install -y libXt
yum install -y libXt.i686
yum install -y libXt-devel
yum install -y libXt-devel.i686
yum install -y make
yum install -y sysstat
yum install -y elfutils-libelf-devel
yum install -y elfutils-libelf-devel.i686
yum install -y unixODBC
yum install -y unixODBC.i686
yum install -y unixODBC-devel
yum install -y unixODBC-devel.i686
yum install -y kernel-headers
yum install -y lrzsz
yum install -y libXrender
yum install -y compat-libcap1
yum install -y binutils
yum install -y ksh

在yum安装过程中,有可能由于Centos7.4一些依赖包的版本过高,需要对一些依赖包进行降级

[root@crmtest1 ~]# yum list --showduplicates glibc
[root@crmtest1 ~]# yum downgrade glibc glibc-common glibc-devel glibc-headers

[root@crmtest1 ~]# yum downgrade gcc cpp libgomp
[root@crmtest1 ~]# yum downgrade libgcc
[root@crmtest1 ~]# yum downgrade libstdc++
[root@crmtest1 software]# rpm -ivh openmotif21-2.1.30-11.EL5.i386.rpm 
[root@crmtest1 software]# rpm -ivh xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386.rpm 

1.7 共享磁盘准备

在VMware Centos中配置RAC共享磁盘。第1台虚拟机Centos添加新建磁盘,第2台虚拟机Centos添加第1台虚拟机新建的VMDK文件,磁盘设置为永久模式,共享磁盘的位置到SCSI 1设备节点上。

 

如果是节点2添加磁盘,则选择使用现有虚拟磁盘

 

如上步骤分别添加硬盘2(SCSI 1:1)、硬盘3(SCSI 1:2)、硬盘4(SCSI 1:3)

确认磁盘位置信息,分别修改两台虚拟机的VMX文件

#shared disks configure
disk.EnableUUID="TRUE" 
disk.locking="FALSE" 
diskLib.dataCacheMaxSize="0" 
diskLib.dataCacheMaxReadAheadSize="0" 
diskLib.dataCacheMinReadAheadSize="0" 
diskLib.dataCachePageSize="4096" 
diskLib.maxUnsyncedWrites="0"
scsi1.sharedBus="VIRTUAL"
scsi1.virtualDev = "lsilogic"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "E:\Centos-ASM\ASM1.vmdk"
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "E:\Centos-ASM\ASM2.vmdk"
scsi1:2.mode = "independent-persistent"
scsi1:2.deviceType = "disk"
scsi1:3.present = "TRUE"
scsi1:3.fileName = "E:\Centos-ASM\ASM3.vmdk"
scsi1:3.mode = "independent-persistent"
scsi1:3.deviceType = "disk"
scsi1:1.redo = ""
scsi1:3.redo = ""
scsi1:2.redo = ""

共享磁盘信息如下

+CRSDG               1个10G的磁盘           /dev/sdb               crs vote/ocr专用

+DATADG            1个20G的磁盘           /dev/sdc               数据存储专用

+FRADG               1个20G的磁盘           /dev/sdd               归档日志存储专用

[root@crmtest1 ~]# fdisk -l | grep /dev
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     8744959     4064256   82  Linux swap / Solaris
/dev/sda3         8744960    83886079    37570560   83  Linux
Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors

创建udev

查找磁盘的UUID

[root@crmtest1 ~]# for i in b c d
>do
>/usr/lib/udev/scsi_id -g -u -d /dev/sd$i
>done
36000c2947a6468b10cc6cd64589e2028
36000c291f4d76644081f3089bc7701d3
36000c29e1859fa556a72c06fc8f48d2d

编辑 UDEV Rules File

vim /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=="36000c2947a6468b10cc6cd64589e2028", RUN+="/bin/sh -c 'mknod /dev/asmdisk1 b $major $minor; chown grid:asmadmin /dev/asmdisk1; chmod 0660 /dev/asmdisk1'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c291f4d76644081f3089bc7701d3", RUN+="/bin/sh -c 'mknod /dev/asmdisk2 b $major $minor; chown grid:asmadmin /dev/asmdisk2; chmod 0660 /dev/asmdisk2'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29e1859fa556a72c06fc8f48d2d", RUN+="/bin/sh -c 'mknod /dev/asmdisk3 b $major $minor; chown grid:asmadmin /dev/asmdisk3; chmod 0660 /dev/asmdisk3'"

启动udev

[root@crmtest1 rules.d]# /sbin/udevadm trigger --type=devices --action=change

查看磁盘

[root@crmtest1 rules.d]# ll -ltr /dev/asm*
brw-rw----. 1 grid asmadmin 8, 16 Oct 30 11:03 /dev/asmdisk1
brw-rw----. 1 grid asmadmin 8, 48 Oct 30 11:03 /dev/asmdisk3
brw-rw----. 1 grid asmadmin 8, 32 Oct 30 11:03 /dev/asmdisk2

1.8 系统参数修改

#在/etc/sysctl.conf增加如下参数:
kernel.shmall = 33057936
kernel.shmmax = 67702652928
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

#/etc/security/limits.conf文件增加:
*  hard  nofile  65536
*  soft  nofile  4096
*  hard  nproc   16384
*  soft  nproc   4096

使上述参数生效

[root@crmtest1 ~]# /sbin/sysctl -p

1.9 DNS服务器搭建(可选)

由于RAC集群安装的时候需要各种DNS解析,我在crmtest1服务器上搭建一个DNS服务器。

[root@crmtest1 ~]# yum –y install bind*

打开DNS的主配置文件

[root@crmtest1 ~]# vim /etc/named.conf
options {
        # listen-on port 53 { 127.0.0.1; };  #删除本行后会默认在所有接口的UDP 53端口监听服务,建议删除
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        # allow-query     { localhost; };   删除本行会默认相应所有客户机的查询请求,建议删除 
        recursion yes;    #开启递归查询
        dnssec-enable yes;
        dnssec-validation yes;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

在/etc/named.rfc1912.zones文件中添加自己所需域名的正向解析

……
zone "tp-link.net" IN {
        type master;
        file "tp-link.net.zone";
        allow-update { none; };
};

编辑tp-link.net.zone文件

[root@crmtest1 /]# cd /var/named/
[root@crmtest1 named]# cp named.localhost tp-link.net.zone
[root@crmtest1 named]# vim tp-link.net.zone
$TTL 1D
@       IN SOA  tp-link.net. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
crmtest1        IN      A       192.168.150.128
crmtest2        IN      A       192.168.150.129
crmtest1-vip    IN      A       192.168.150.130
crmtest2-vip    IN      A       192.168.150.131
crmtest1-priv   IN      A       192.168.37.128
crmtest2-priv   IN      A       192.168.37.129
crmtest-scan    IN      A       192.168.150.135
crmtest-scan    IN      A       192.168.150.136
crmtest-scan    IN      A       192.168.150.137

全部配置文件编写完成后可以使用以下命令对所有DNS相关的配置文件进行检查,如有语法错误的地方,会依次指出。

[root@crmtest1 /]# named-checkconf /etc/named.conf
[root@crmtest1 /]# named-checkzone tp-link.net /var/named/tp-link.net.zone

#启动DNS服务器
[root@crmtest1 /]# systemctl start named.service

#加入到开机自启动
[root@crmtest1 /]# systemctl enable named.service

二、安装RAC

下载grid软件包p10404530_112030_Linux-x86-64_3of7.zip,解压,安装之前检查。

[grid@crmtest1 ~]$ unzip p10404530_112030_Linux-x86-64_3of7.zip
[grid@crmtest1 ~]$ ll grid/
total 56
drwxr-xr-x.  9 grid oinstall   178 Sep 22  2011 doc
drwxr-xr-x.  4 grid oinstall  4096 Sep 22  2011 install
-rwxr-xr-x.  1 grid oinstall 28122 Sep 22  2011 readme.html
drwxr-xr-x.  2 grid oinstall    30 Sep 22  2011 response
drwxr-xr-x.  2 grid oinstall    34 Sep 22  2011 rpm
-rwxr-xr-x.  1 grid oinstall  4878 Sep 22  2011 runcluvfy.sh
-rwxr-xr-x.  1 grid oinstall  3227 Sep 22  2011 runInstaller
drwxr-xr-x.  2 grid oinstall    29 Sep 22  2011 sshsetup
drwxr-xr-x. 14 grid oinstall  4096 Sep 22  2011 stage
-rwxr-xr-x.  1 grid oinstall  4326 Sep  2  2011 welcome.html
[grid@crmtest1 ~]$ cd grid/
[grid@crmtest1 grid]$  ./runcluvfy.sh stage -pre crsinst -n crmtest1,crmtest2 -verbose

Performing pre-checks for cluster services setup 

Checking node reachability...

Check: Node reachability from node "crmtest1"
  Destination Node                      Reachable?              
  ------------------------------------  ------------------------
  crmtest1                              yes                     
  crmtest2                              yes                     
Result: Node reachability check passed from node "crmtest1"


Checking user equivalence...

Check: User equivalence for user "grid"
  Node Name                             Status                  
  ------------------------------------  ------------------------
  crmtest2                              passed                  
  crmtest1                              failed                  
Result: PRVF-4007 : User equivalence check failed for user "grid"

WARNING: 
User equivalence is not set for nodes:
	crmtest1
Verification will proceed with nodes:
	crmtest2

Checking node connectivity...

Checking hosts config file...
  Node Name                             Status                  
  ------------------------------------  ------------------------
  crmtest2                              passed                  

Verification of the hosts config file successful

……

Check: TCP connectivity of subnet "192.168.122.0"
  Source                          Destination                     Connected?      
  ------------------------------  ------------------------------  ----------------
  crmtest1:192.168.122.1          crmtest2:192.168.122.1          failed          

ERROR: 
PRVF-7617 : Node connectivity between "crmtest1 : 192.168.122.1" and "crmtest2 : 192.168.122.1" failed
Result: TCP connectivity check failed for subnet "192.168.122.0"

……
Check: Package existence for "pdksh" 
  Node Name     Available                 Required                  Status    
  ------------  ------------------------  ------------------------  ----------
  crmtest2      missing                   pdksh-5.2.14              failed    
Result: Package existence check failed for "pdksh"

……

All nodes have one search entry defined in file "/etc/resolv.conf"
Checking DNS response time for an unreachable node
  Node Name                             Status                  
  ------------------------------------  ------------------------
  crmtest2                              failed                  
  crmtest1                              failed                  
PRVF-5637 : DNS response time could not be checked on following nodes: crmtest2,crmtest1

File "/etc/resolv.conf" is not consistent across nodes

处理前置安装检查问题

Result: PRVF-4007 : User equivalence check failed for user "grid"

分别在crmtest1和crmtest2上验证PUBLIC IP,VIP IP,PRIVATE IP
[grid@crmtest1 ~]$ ssh crmtest1 date
[grid@crmtest1 ~]$ ssh crmtest1-vip date
[grid@crmtest1 ~]$ ssh crmtest1-priv date
[grid@crmtest1 ~]$ ssh crmtest2 date
[grid@crmtest1 ~]$ ssh crmtest2-vip date
[grid@crmtest1 ~]$ ssh crmtest2-priv date

[grid@crmtest2 ~]$ ssh crmtest1 date
[grid@crmtest2 ~]$ ssh crmtest1-vip date
[grid@crmtest2 ~]$ ssh crmtest1-priv date
[grid@crmtest2 ~]$ ssh crmtest2 date
[grid@crmtest2 ~]$ ssh crmtest2-vip date
[grid@crmtest2 ~]$ ssh crmtest2-priv date


PRVF-7617 : Node connectivity between "crmtest1 : 192.168.122.1" and "crmtest2 : 192.168.122.1" failed
该问题去除Centos虚拟机的虚拟网卡即可
[root@crmtest1 ~]# ifconfig virbr0 down
[root@crmtest1 ~]# brctl delbr virbr0
[root@crmtest1 ~]# systemctl disable libvirtd.service

[root@crmtest2 ~]# ifconfig virbr0 down
[root@crmtest2 ~]# brctl delbr virbr0
[root@crmtest2 ~]# systemctl disable libvirtd.service


Result: Package existence check failed for "pdksh"
忽略即可,pdksh是一个旧的包,已经废弃,使用ksh


PRVF-5637 : DNS response time could not be checked on following nodes: crmtest2,crmtest1

在这里我在crmtest1上搭建了一个DNS服务器
修改crmtest1和crmtest2上的/etc/resolv.conf
search tp-link.net
nameserver 192.168.150.128

然后再修改crmtest1和crmtest2上的 /usr/bin/nslookup

# mv /usr/bin/nslookup /usr/bin/nslookup.orig
# echo '#!/bin/bash
/usr/bin/nslookup.orig $*
exit 0' > /usr/bin/nslookup
# chmod a+x /usr/bin/nslookup

再次检查,除了pdksh,其它都成功。

2.1 安装grid

开始安装grid

[grid@crmtest1 grid]$ ./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

测试crmtest1和crmtest2之间的ssh连通性

测试成功

点击“Next”

发现一直卡住,日志错误为 :

SEVERE: [FATAL] [INS-40912] Virtual host name: crmtest1-vip is assigned to another system on the network.
   CAUSE: One or more virtual host names appeared to be assigned to another system on the network.
   ACTION: Ensure that the virtual host names assigned to each of the nodes in the cluster are not currently in use, and the IP addresses are registered to the domain name you want to use as the virtual host name.

查询资料后发现VIP的IP地址不能手动绑定,需要RAC自己配置,于是在crmtest1和crmtest2上将VIP绑定去除

[root@crmtest1 ~]# ifdown ens33:1

[root@crmtest2 ~]# ifdown ens33:1

然后安装可以继续下去了

Password:Oracle123

两个节点都安装cvuqdisk-1.0.9-1.rpm软件包,重新执行检查

点击“Ignore All”

安装到76%的时候,需要在crmtest1和crmtest2上面以root用户执行两个脚本

/u1/db/oraInventory/orainstRoot.sh

/u1/db/11.2.0/grid/root.sh

执行orainstRoot.sh成功,没有问题。

执行root.sh脚本时,遇见了如下问题

[root@crmtest1 grid]# ./root.sh 
Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u1/db/11.2.0/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: /u1/db/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
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
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow: 
2019-10-31 11:19:36.572
[client(33002)]CRS-2101:The OLR was formatted using version 3.

原因:

在centos7中ohasd需要被设置为一个服务,在运行脚本root.sh之前

以root用户创建服务文件
[root@crmtest1 ~]# touch /usr/lib/systemd/system/ohas.service
[root@crmtest1 ~]# chmod 777 /usr/lib/systemd/system/ohas.service

将以下内容添加到新创建的ohas.service文件中
[root@crmtest1 ~]# 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

以root用户运行下面的命令
[root@crmtest1 ~]# systemctl daemon-reload
[root@crmtest1 ~]# systemctl enable ohas.service
Created symlink from /etc/systemd/system/multi-user.target.wants/ohas.service to /usr/lib/systemd/system/ohas.service.
[root@crmtest1 ~]# systemctl start ohas.service

查看运行状态
[root@crmtest1 ~]# systemctl status ohas.service
● ohas.service - Oracle High Availability Services
   Loaded: loaded (/usr/lib/systemd/system/ohas.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-31 11:30:42 CST; 4s ago
 Main PID: 35265 (init.ohasd)
   CGroup: /system.slice/ohas.service
           └─35265 /bin/sh /etc/init.d/init.ohasd run >/dev/null 2>&1 Type=si...

Oct 31 11:30:42 crmtest1 systemd[1]: Started Oracle High Availability Services.
Hint: Some lines were ellipsized, use -l to show in full.

由于crmtest1和crmtest2同时执行了root.sh,在crmtest1和crmtest2上执行以下操作

[root@crmtest1 grid]# cd /u1/db/11.2.0/grid/crs/install/
[root@crmtest1 install]# /u1/db/11.2.0/grid/perl/bin/perl rootcrs.pl -deconfig -force -verbose
[root@crmtest1 install]# /u1/db/11.2.0/grid/perl/bin/perl roothas.pl -deconfig -force -verbose

[root@crmtest2 grid]# cd /u1/db/11.2.0/grid/crs/install/
[root@crmtest2 install]# /u1/db/11.2.0/grid/perl/bin/perl rootcrs.pl -deconfig -force -verbose
[root@crmtest2 install]# /u1/db/11.2.0/grid/perl/bin/perl roothas.pl -deconfig -force -verbose

然后crmtest1和crmtest2再次运行root.sh文件,crmtest1运行成功以后再执行第二个节点

[root@crmtest1 grid]# ./root.sh 
Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u1/db/11.2.0/grid

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.
Using configuration parameter file: /u1/db/11.2.0/grid/crs/install/crsconfig_params
User ignored Prerequisites during installation
CRS-2672: Attempting to start 'ora.mdnsd' on 'crmtest1'
CRS-2676: Start of 'ora.mdnsd' on 'crmtest1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'crmtest1'
CRS-2676: Start of 'ora.gpnpd' on 'crmtest1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'crmtest1'
CRS-2672: Attempting to start 'ora.gipcd' on 'crmtest1'
CRS-2676: Start of 'ora.cssdmonitor' on 'crmtest1' succeeded
CRS-2676: Start of 'ora.gipcd' on 'crmtest1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'crmtest1'
CRS-2672: Attempting to start 'ora.diskmon' on 'crmtest1'
CRS-2676: Start of 'ora.diskmon' on 'crmtest1' succeeded
CRS-2676: Start of 'ora.cssd' on 'crmtest1' succeeded

ASM created and started successfully.

Disk Group CRSDG created successfully.

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 9e32eb96f5ad4f65bf0142d05b027b4c.
Successfully replaced voting disk group with +CRSDG.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   9e32eb96f5ad4f65bf0142d05b027b4c (/dev/asmdisk1) [CRSDG]
Located 1 voting disk(s).
CRS-2672: Attempting to start 'ora.asm' on 'crmtest1'
CRS-2676: Start of 'ora.asm' on 'crmtest1' succeeded
CRS-2672: Attempting to start 'ora.CRSDG.dg' on 'crmtest1'
CRS-2676: Start of 'ora.CRSDG.dg' on 'crmtest1' succeeded
Configure Oracle Grid Infrastructure for a Cluster ... succeeded

crmtest2节点执行root.sh

[root@crmtest2 grid]# ./root.sh 
Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u1/db/11.2.0/grid

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.
Using configuration parameter file: /u1/db/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
OLR initialization - successful
Adding Clusterware entries to inittab
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node crmtest1, 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

查看错误原因

INFO: PRVF-5494 : The NTP Daemon or Service was not alive on all nodes
INFO: PRVF-5415 : Check to see if NTP daemon or service is running failed
INFO: Clock synchronization check using Network Time Protocol(NTP) failed
INFO: PRVF-9652 : Cluster Time Synchronization Services check failed

停止crmtest1和crmtest2系统的NTP服务

[root@crmtest1 ~]# systemctl stop ntpd
[root@crmtest1 ~]# chkconfig ntpd off
[root@crmtest1 ~]# mv /etc/ntp.conf /etc/ntp.conf.original

[root@crmtest2 ~]# systemctl stop ntpd
[root@crmtest2 ~]# chkconfig ntpd off
[root@crmtest2 ~]# mv /etc/ntp.conf /etc/ntp.conf.original

至此,RAC软件安装完成。

2.2 asmca创建data/fra datagroup

在两个数据库节点位grid用户设置如下环境变量

export ORACLE_BASE=/u1/db/grid
export ORACLE_HOME=/u1/db/11.2.0/grid
export ORACLE_SID=+ASM1   ##节点2这里的值为+ASM2
export PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch

查看RAC集群状态,我设置了3个SCAN IP

[grid@crmtest1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRSDG.dg
               ONLINE  ONLINE       crmtest1                                     
               ONLINE  ONLINE       crmtest2                                     
ora.DATADG.dg
               ONLINE  ONLINE       crmtest1                                     
               ONLINE  ONLINE       crmtest2                                     
ora.FRADG.dg
               ONLINE  ONLINE       crmtest1                                     
               ONLINE  ONLINE       crmtest2                                     
ora.LISTENER.lsnr
               ONLINE  ONLINE       crmtest1                                     
               ONLINE  ONLINE       crmtest2                                     
ora.asm
               ONLINE  ONLINE       crmtest1                 Started             
               ONLINE  ONLINE       crmtest2                 Started             
ora.gsd
               OFFLINE OFFLINE      crmtest1                                     
               OFFLINE OFFLINE      crmtest2                                     
ora.net1.network
               ONLINE  ONLINE       crmtest1                                     
               ONLINE  ONLINE       crmtest2                                     
ora.ons
               ONLINE  ONLINE       crmtest1                                     
               ONLINE  ONLINE       crmtest2                                     
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       crmtest2                                     
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       crmtest1                                     
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       crmtest1                                     
ora.crmtest1.vip
      1        ONLINE  ONLINE       crmtest1                                     
ora.crmtest2.vip
      1        ONLINE  ONLINE       crmtest2                                     
ora.cvu
      1        ONLINE  ONLINE       crmtest1                                     
ora.oc4j
      1        ONLINE  ONLINE       crmtest1                                     
ora.scan1.vip
      1        ONLINE  ONLINE       crmtest2                                     
ora.scan2.vip
      1        ONLINE  ONLINE       crmtest1                                     
ora.scan3.vip
      1        ONLINE  ONLINE       crmtest1                                     

创建DATA和FRA  datagroup:

[grid@crmtest1 ~]$ source .bash_profile
[grid@crmtest1 ~]$ asmca

最后形成三个磁盘组CRSDG、DATADG、FRADG

在命令行查看

[grid@crmtest1 ~]$ asmcmd
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  4194304     10240     9808                0            9808              0             Y  CRSDG/
MOUNTED  EXTERN  N         512   4096  1048576     20480    20385                0           20385              0             N  DATADG/
MOUNTED  EXTERN  N         512   4096  1048576     20480    20385                0           20385              0             N  FRADG/
ASMCMD> quit

2.3 安装database

Oracle用户在crmtest1上执行

[oracle@crmtest1 ~]$ unzip p10404530_112030_Linux-x86-64_1of7.zip
[oracle@crmtest1 ~]$ unzip p10404530_112030_Linux-x86-64_2of7.zip
[oracle@crmtest1 ~]$ cd database
[oracle@crmtest1 ~]$ ./runInstall -jreLoc /etc/alternatives/jre_1.8.0

 

 

Password: Oracle123

Password: Oracle123

crmtest1执行root.sh脚本

[root@crmtest1 db_1]# ./root.sh 
Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u1/db/oracle/product/11.2.0/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.

crmtest2执行root.sh脚本

[root@crmtest1 db_1]# ./root.sh 
Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u1/db/oracle/product/11.2.0/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.

在两个数据库节点位oracle用户设置如下环境变量:

export ORACLE_BASE=/u1/db/oracle
export ORACLE_HOME=/u1/db/oracle/product/11.2.0/db_1
export ORACLE_SID=CRMTEST1  #节点2这里为CRMTEST2
export PATH=$ORACLE_HOME/perl/bin:$PATH:$ORACLE_HOME/bin

至此已经安装成功。

查询数据库状态

[oracle@crmtest1 ~]$ sqlplus / as sysdba
SQL> select instance_name,status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
CRMTEST1	 OPEN

[oracle@crmtest2 ~]$ sqlplus / as sysdba
SQL> select instance_name,status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
CRMTEST2	 OPEN

grid用户查询集群状态,正常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章