CentOS7 4安装Oracle11g RAC

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

环境centos7.4,两台虚拟机,三个共享磁盘,共享磁盘的创建会在后面说

==============1.设置网络环境========

主机名我这里两台分别是rac1 ,rac2

先看下网关和DNS
网段1:192.168.145.xxx
网段2:192.168.89.xxx
主机DNS1:223.5.5.5
主机DNS2:223.6.6.6


现在开始设置网络节点
vim  /etc/hosts
添加:
#public ip
192.168.145.132 rac1
192.168.145.130 rac2
#priv   ip
192.168.89.132  rac1-priv
192.168.89.130 rac2-priv
#vip    ip
192.168.145.210 rac1-vip
192.168.145.220 rac2-vip
#scan   ip
192.168.145.230 rac-scan
192.168.145.231 rac-scan

192.168.145.232 rac-scan

注意:publicip和priv ip一定是自己虚拟机的ip,最好是将ip设置成静态ip.

public ,vip ,scan ip需要在同一个网段vip,scan可以在网段中随意设置但是不能相同

======关闭selinux,防火墙=====
vim /etc/selinux/config
修改SELINUX的值为disabled

SELINUX=disabled

修改了之后需要重启电脑,selinux才能生效,这一步非常重要

修改了之后重启可以通过sestatus -v命令来查看,值一定要disabled才行

关闭防火前

systemctl stop firewalld

查看防火墙的状态

systemctl status firewalld

接下来是创建用户组:

groupadd oinstall
groupadd dba
groupadd oper
groupadd asmdba
groupadd asmoper
groupadd asmadmin 
useradd -g oinstall -G dba,oper,asmdba oracle
useradd -g oinstall -G asmdba,dba,asmadmin,asmoper grid
创建目录:
mkdir /u01
mkdir /u01/grid
mkdir /u01/oracle
mkdir /u01/gridbase

赋予权限
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/oracle

chmod -R g+w /u01

添加环境变量:

vim /home/grid/.bash_profile
添加
ORACLE_BASE=/u01/gridbase
ORACLE_HOME=/u01/grid
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
DISPLAY=192.168.145.207:0.0
export ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH DISPLAY

vim /home/oracle/.bash_profile

添加:注意两台的oracle_sid应该不能相同

ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/db
ORACLE_SID=cludb1
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
DISPLAY=192.168.145.207:0.0

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH DISPLAY

source /home/oracle/.bash_profile

source /home/grid/.bash_profile

查看是否生效

echo ORACLE_HOME;

=====================
修改linux内核参数
vim /etc/sysctl.conf

具体参数意义参考官方文档

添加

fs.aio-max-nr = 1048576 
fs.file-max = 6815744 
kernel.shmall = 2097152 
kernel.shmmax = 1073741824 
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 = 1048586
使修改生效
#sysctl  –p 


配置/etc/security/limits.conf

#vim /etc/security/limits.conf

添加

oracle soft nproc      2047 
oracle hard nproc      16384 
oracle soft nofile    1024 
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

设置节点时间同步
Root用户:

一般时间同步有linux的ntpd时间同步,还有就是oracle的时间同步,我们用oracle的时间同步,需要关闭ntpd服务

 /bin/systemctl stop  ntpd

 systemctl disable ntpd.service

 mv /etc/ntp.conf /etc/ntp.conf.original

还要删除以下文件(如果有的话):
# rm /var/run/ntpd.pid
 

====创建共享磁盘,很重要========

先创建共享文件夹,rac1和rac2都指定F:\vm\sharedisk【当然这里的目录,可以随意指定】

点击 虚拟机设置-选项-共享文件夹-总是启用-添加目录为F:\vm\sharedisk【rac1和rac2都要设置】

rac1:点击虚拟机设置,选择-添加-硬盘-下一步-scsi-下一步-创建新虚拟磁盘-硬盘大小暂定8G-利益分配,将磁盘储存为单个文件-选择储存的位置,这个位置一定要是rac1和rac2的共享文件夹我这里是放在F:\vm\sharedisk下面的-完成-点击高级-设置虚拟设备节点为scsi 1:1 ,模式独立-永久 ,点击确认

一共创建三块,步骤都相同只是在设置虚拟设备节点时第二台设置为scsi 1:2,第三台设置成scsi 1:3

rac2同样进行这样的操作,但是在-选择磁盘-这个选项时选择-使用现有的虚拟磁盘,也就是之前rac1创建的放在F:\vm\sharedisk的三个磁盘

开启rac1:
Root用户:
# cd /dev/
# ll sd* 
将看到sdb,sdc,sdd,这三块就是添加的磁盘
对硬盘进行分区
# fdisk sdb
按m键,此时有多个选项供选择
按n键(创建新分区)
按p键(创建主分区,另有e键是扩展分区)
按1键(分区数字从1开始,即sdb1,sdc1等)
按1键(分区从第一个柱面开始)
回车 (结束柱面选择 默认,即全部柱面只分在一个区)
按w键(将操作写入分区表)

注意:依次对sdb sdc sdd都要分区。

接下来用oracleasm 创建磁盘,

oracleasm需要三个包:kmod-oracleasm,oracleasm-support,oracleasmlib.这里我已经提供了

我的网盘 :   https://pan.baidu.com/s/11oRoWwmbsG5KG-HXU-k99Q

当然也可以通过rpm下载

rpm网站 :   http://rpmfind.net

====

Root用户:

#oracleasm configure  –i
然后输入用户grid
输入组dba
输入y
输入y
# oracleasm init
创建磁盘DISK01,DISK02,DISK03
# oracleasm createdisk DISK01 sdb1
# oracleasm createdisk DISK02 sdc1
# oracleasm createdisk DISK03 sdd1
查看磁盘:
# oracleasm listdisks
DISK01
DISK02

DISK03

开启节点rac2
注:如果已开启则重启
Root用户:
# oracleasm  configure  -i
输入grid
输入dba
输入y
输入y
#oracleasm init
重启
#reboot
#oracleasm listdisks

节点2也能看到DISK01,DISK02,DISK03了

配置节点间的相互信任
注:grid,Oracle用户都需要添加相互信息,下面以grid为例
Grid用户:
在节点rac1和rac2节点分别执行
ssh-keygen -t rsa [这里一路回车就可以了]
cat  ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys 【可能会有提示选择yes/no ,请选择yes】
ssh rac1 cat ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys 【可能会有提示选择yes/no ,请选择yes】


如果秘钥的生成路径是按照上面一路默认的话,可以执行命令(rac2节点:ssh-copy-id  grid@rac1;rac1节点:ssh-copy-id grid@rac2)将本地公钥追加到authorized_keys上,当然这个不作要求。
测试:
在rac2,rac1上分别执行
#ssh rac1 date
#ssh rac2 date
只要不再提示输入密码就成功了
======
接下来就是安装集群了。
安装集群grid
Grid用户:
将集群软件linux.x64_11gR2_grid.zip上传至/u01目录,并解压
将解压至grid目录,更改解压后文件属主
chown -R grid:oinstall /u01/grid
chown -R grid:oinstall /tmp/bootstrap 【后面执行检查时可能会报错,所以添加这个权限】
进入加压后的目录
#cd /u01/grid
执行安装前检查操作

# ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose

这里重点说一下,因为检查时会有提示很多依赖包没有安装,依赖包我在这里提供一下,当然也有可能不全,可以百度,但基本上是没有问题,预检查时可以查看。

除了这个问题,基本上其他所有的检查项都应该是passd的

=====可能的错,swap不足====

1.交换空间内存不够

  #dd if=/dev/zeroof=swapfile bs=1024 count=1500000

  1024单位byte,增加1.5G内存大小

   # mkswap swapfile  

   # swapon swapfile

交换内存开机自动挂载

  # vim /etc/fstab

 加入

 /home/swapfile  swap  swap defaults  0 0

如果检查成功则开始安装操作

======可能的错 grid用户和oracle编号不一致===

# id grid   查看两台的信息是否一致,不一致需要用usermod 命令进行修改,具体请百度

#id oracle 同上

======可能的错 sem的四个参数之一最后一项提供了128但是并没有识别===

有的centos7可能会在检查的时候出现之前设置的系统参数中sem中的参数其中的值设了128但是还是提示需要128但是提供了0,这个问题可以忽略。

=========下载环境所需要的包=====

下载64bit的

yum -y install compat-libstdc++-33 glibc.i686  gcc  elfutils-libelf-devel glibc-devel gcc-c++ libaio-devel unixODBC unixODBC-devel 

 这里需要先安装64bit的包才能安装32bit的包,不然会报错,–force是强制安装

32bit的包我这里已经提供了,放在了百度云盘上,当然也可以自己去下载,这里提供rpm的网站

我的网盘 :   https://pan.baidu.com/s/11oRoWwmbsG5KG-HXU-k99Q

rpm网站 :   http://rpmfind.net

32bit的包下载下来放在两台CentOS上,然后安装他们,前提是先装了64bit的,不然

rpm -ivh libaio-0.3.105-2.i386.rpm –force
rpm -ivh libgcc-3.4.6-8.i386.rpm  –force
rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386.rpm  –force
rpm -ivh libaio-devel-0.3.105-2.i386.rpm –force
rpm -ivh libstdc++-3.4.6-11.i386.rpm –force
rpm -ivh unixODBC-2.2.11-7.1.i386.rpm  –force

rpm -ivh unixODBC-devel-2.2.11-1.i386.rpm –force

centos7已经安装ksh取代了pdksh,所以装pdksh需要– force

rpm -ivh pdksh-5.2.14-21.x86_64.rpm  –force

========接下来就是安装grid了====

先授权grid,oracle可以使用界面

xhost +SI:localuser:oracle

xhost +SI:localuser:grid

cd /u01/grid

./runInstaller

接下来就会在主机出现安装界面【当然也可以通过书写响应文件进行安装,这里使用图形化界面,我在网盘中也提供了grid.rsp的响应文件,想通过这种方式也可以通过百度查看静默安装的命令,但是grid.rsp文件中的ens32,和ens33,需要对应你自己的网卡,我的是ens32和ens33,这里需要修改】

step1:选择第一项:for a cluster

step2:选择第二项:advanced installation

step3:默认english

step4:

cluster Name :rac-cluster

Scan Nane : rac-scan   这里这么设置是因为之前的/etc/hosts中配置了rac-scan。

scan port: 1521

取消勾选configure GNS

step5:点击add 添加

hostname 中填入rac2   vipname 中填入rac2-vip 刚好和rac1对应

step6:默认即可

step7:第一项即可 AUto 默认也是第一项

step8 : 选择 external   勾选all disks  下面勾选所有的磁盘

step9:设置密码,这里推荐设置成一样的密码,如果密码设置简单可以在接下来的弹窗中选择是否忽略,选择yes

step10:选择第二项 don not use inter。。。

step11:默认即可

step12:oraclebase: /u01/gridbase  第二项填 /u01/grid

这里会提示oreclehome contains dir  。。

点击下一步,提示是否忽略,选择yes,忽略即可

step13:/u01/oraInventory 这里是这样,默认即可

step14:  

step15:点击finish

接下来开始安装,时间有点长

然后会提示执行    

所有节点上执行,先执行主节点,然后执行从节点,主节点也就是那个节点执行的./runInstaller的那个

# /u01/oraInventory/oraInstRoot.sh

# /u01/grid/root.sh    

执行root.sh的时候可能会出bug

因为oracle11.2.0.1有一个bug就是执行到Addingdaemon to inittab  的时候会卡着不动,或者是直接报错,这是oracle本身的bug,很坑,但是在后面的版本已经修复,这里使用的这个版本,所以也就只能解决这个bug,使用了图形化界面安装后面也会出现,后面会提供解决方法】

解决方法

在执行root.sh脚本时候,当出现Adding daemon to inittab的时候,在另一个窗口执行下面命令:

/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024count=1

===================可能的bug========

在执行root.sh脚本时候,出现错误:

/u01/grid/bin/clscfg.bin:error while loading shared libraries: libcap.so.1: cannot open shared objectfile: No such file or directory

Failedto create keys in the OLR, rc = 127, 32512

OLRconfiguration failed

共享库libcap.so.1 找不到,因为缺少包compat-libcap1.x86_64.rpm(前文依赖包中有此包,若已安装,则不会出现此错误),yum安装:

# yum install -y compat-libcap1.x86_64

安装完毕后,需要将之前失败的配置删除再重新执行脚本;

# /u01/grid/crs/install/rootcrs.pl -delete -force -verbose

脚本执行完毕后,点击安装界面的OK,继续下一步,如果出现下面的错误,可以忽略,问题是由于scan-cluster使用/etc/hosts文件来解析造成的,直接跳过,不影响。如果是用dns来解析的话应该不会报此错误

【INS-20802】oracle cluster varifycation utility filed  

安装完成点击close

接下来是安装数据库了。同样有两种方式,一种是静默安装,一种是图形化界面安装,这里就不提供了静默安装的响应文件了,可以结合网上的文档执行查看

任一节点安装:

# cd  /u01

将linux.x64_11gR2_database.zip上传至/u01,解压,将解压后的目录并改归属

解压后的目录是database

#chown –R oracle:oinstall database

#chmod 777 database/database/runInstaller

#chmod 777 database/database/install/unzip

# chmod 777 database/database/install/.oui

开始安装

# su – oracle

# cd /u01/database/database/

# ./runInstaller -ignoreInternalDriverError

参数-ignoreInternalDriverError的作用是忽略内部驱动导致cluster认证失败,下文有错误信息

安装过程跟单机版差不多,只是在step 3的时候要添加上第二个节点,也就是列表中有rac1和rac2.

在step8的时候可能会出现checks很多的failed,这个忽略即可。

安装了之后就是创建数据库,这里同样有两种方式,这里使用图形化界面 

#dbca

弹出窗口,

我们选择第一项集群模式Oralce Real Applicatoin…,然后next

step 1:默认Create a Database,然后Next

step 2 :选择默认General Purpose… 然后next

step 3 :这里Global Database Name和SIDprefix为cludb,在前文节点环境变量中配置的cludb1,cludb2前缀cludb,然后选择所有节点,然后select all ,然后Next

step4: 默认,然后next

step5 :设置密码,所有用户均设置一致的密码,防止记混,也可以设置不同密码。然后Next
 

step6:默认选择ASM存储类型 然后Next,然后会弹出窗口指定ASM密码,填写密码,然后继续
 

step7:闪回区配置默认,也可以不选择,以后修改spfile文件,然后Next
 

step8 :样例schemal可装可不装,然后Next
step9: 字符可以选择ZHS16GBK-GBK-bit SimplifiedChinese,其他默认即可,然后Next

step10:

step11:开始创建数据库 然后Finish,等待安装完成…

创建完成,Password Managerment可以解锁oracle默认账户,解锁scott(可略) 点击Exit

检查集群crs状态

# su – grid

# crs_stat –t

检查集群数据库

$  srvctl config database -dcludb

检查数据库实例状态:

$ srvctl status database -dcludb

检查本地配置的环境变量,以防sid不匹配

$ env |grep ORACLE

//注意与上面的Instance相同

登录数据库:

# su – oracle

# sqlplus / as sysdba

解决oracle11.2.0.1的客户端通过scan ip无法连接数据库bug

解决方法如下:

注:下文中的ip为绑定到当前节点上的scan ip ,其他节点同样做,但是如果服务器重新启动后rscan-ip会重新分配,这时需要重新设置local_listener否则客户端链接不上报ORA-12520,TNS:listener could not find available handler for requested type of server

修改local_listener

SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS= (PROTOCOL = TCP)(HOST =scan ip)(PORT = 1521))))’ sid=’cludb1′;

System altered.

SQL> alter system register;

System altered.

集群维护:

实例管理

$ srvctlstatus instance    -d cludb -i cludb1

$ srvctlstop   instance    -d cludb -i cludb1

$ srvctlstart  instance    -d cludb -i cludb1

监听管理

$ srvctlstatus listener    -n CentOS7Srv01

$ srvctlstop   listener    -n CentOS7Srv01

$ srvctlstart  listener    -n CentOS7Srv01

集群管理命令crsctl

停止集群:

$ su – grid

$ srvctl stopdatabase -d cludb

$ su – root

# /u01/grid/bin/crsctl stopcrs  //停止crs 同时停止asm磁盘组 root用户

启动集群

$ /u01/grid/bin/crsctl startcrs

$ /u01/grid/bin/srvctl startdatabase -d cludb

注意:在启动crs时候,若报

CRS-4124:Oracle HighAvailability Services startup failed.

CRS-4000:Command Startfailed, or completed with errors.

可在每个节点执行命令:

/bin/dd if=/var/tmp/.oracle/npohasdof=/dev/null bs=1024 count=1

(11.2.0.1才会有这个bug)

共享磁盘不足(后添加)

由于测试过程中发现共享硬盘不够用,需要增加共享硬盘,创建共享硬盘过程略(前文已有),

然后登陆(grid)

SQL> sqlplus / as sysasm

报:

ERROR:

ORA-01031: insufficient privileges

此时需要导入环境变量(grid用户)

$ export ORACLE_SID=+ASM1

$ exportORACLE_HOME=/u01/grid

$ exportPATH=$ORACLE_HOME/bin:$PATH

再次登陆即可

SQL> sqlplus / as sysasm

Connected. 

查看用户

SQL>  select * from v$pwfile_users;

USERNAME            SYSDB SYSOP SYSAS

———————————– —– —–

SYS                   TRUE TRUE  TRUE

ASMSNMP              TRUE FALSE FALSE

查看磁盘组

SQL> select STATE,REDUNDANCY,TOTAL_MB,FREE_MB,NAME,FAILGROUP from v$asm_disk;

增加磁盘

SQL> alter diskgroup DATAadd disk ‘ORCL:DISK5’ name DISK5;

Diskgroup altered. //添加成功

注:DATA为安装asm集群时候的磁盘组的名字,如果没有更改则默认是DATA

先记到这里。

点这里可以跳转到人工智能网站

发表评论