搭建Oracle11g的RAC集群

一、前期准备

服务器信息
主机名oracle01oracle02
操作系统Centos 7.4Centos 7.4

Public IP

192.168.56.10

192.168.56.20

Virtual IP

192.168.56.11

192.168.56.21

Private IP

10.10.1.1010.10.1.20

Scan IP

                          192.168.56.6

Public IP:服务器物理网卡IP,即对外提供服务的IP

Priviate IP:服务器内网、私网IP,主要用于数据库间同步及心跳

Virtual IP:虚拟IP,与Public IP处于同一个网段

Scan IP:11g后创建集群新增的功能,集群对外服务提供的VIP

注意:主机名不要含大写并且不超过15个字符,否则后续安装会有问题

          两台主机间需要挂载的磁盘是共享磁盘!!!(用于做ASM磁盘)

          安装过程中注意hostname主机名变化,也会导致执行部分脚本失败情况

二、下载软件

通过百度网盘下载

链接:https://pan.baidu.com/s/11l7PVodRKa5HVK7mqmMYVQ 
提取码:0szl

版本:Oracle 11.2.0.4.0

下载以下几个部署包:

1和2是数据库软件;

3是rac软件;

4是client客户端;

5是gateways;

6是example示例;

7是删除介质;

packages.tar.gz是oracle所需要的依赖包;

一般只需要下载1,2,3个包即可,其他按需下载

 三、修改host文件(root用户操作,两台主机均操作)

编辑/etc/hosts文件,两台主机保持一致:

192.168.56.10  oracle01

192.168.56.20  oracle02

192.168.56.11  oracle01-vip

192.168.56.21  oracle02-vip

10.10.1.10        oracle01-priv

10.10.1.20        oracle02-priv

192.168.56.6    cluster-scan

wq保存后。

修改Oracle01主机名:hostname oracle01

修改Oracle02主机名:hostname oracle02

测试是否修改成功:

在192.168.56.10主机上执行ping:

ping oracle01和ping oracle02查看是否成功,成功即说明host文件修改成功。

四、关闭Selinux和防火墙(root用户,两台主机均操作)

编辑/etc/selinux/config配置文件:

再使用命令:setenforce 0,临时关闭而无需重启

使用命令getenforce查看当前selinux状态

关闭防火墙:systemctl stop firewalld && systemctl disable firewalld

五、修改内核参数(root用户,两台主机均操作)

编辑/etc/sysctl.conf配置文件:

net.ipv4.ip_local_port_range= 9000 65500

fs.file-max = 6553600

# 按需修改,为shmmax/shmmin

kernel.shmall = 10523004

# 按需修改,为内存(单位byte)-1

kernel.shmmax = 6465333657

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=4194304

net.core.wmem_max=1048576

fs.aio-max-nr = 1048576

wq退出保存后使用命令 sysctl -p 使其生效

六、添加用户(root用户,两台主机均操作)

采用GI与DB分开安装和权限的策略

# 创建组

groupadd -g 1000 oinstall

groupadd -g 1300 asmadmin

groupadd -g 1200 asmdba

groupadd -g 1400 asmoper

groupadd -g 1100 dba

groupadd -g 1500 oper

# 添加用户grid和oracle

useradd -d /opt/grid -u 1011 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid

Useradd -d /opt/oracle -u 1010 -g oinstall -G dba,asmdba,oper oracle

# 创建目录

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oracle

# 授权

chmod -R 755 /u01

chown -R grid:oinstall /u01

chown -R oracle:oinstall /u01/app/oracle

# 修改用户密码为Pass123456

echo "Pass123456" | passwd --stdin grid

echo "Pass123456" | passwd --stdin oracle

七、修改系统资源限制(root用户,两台主机均操作)

编辑/etc/security/limits.conf文件:

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

grid soft stack 10240

grid hard stack 32768

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

wq保存修改。

八、配置用户验证(root用户,两台主机均操作)

编辑/etc/pam.d/login新增以下内容:

session    required     pam_limits.so

九、修改环境变量(root用户,两台主机均操作)

编辑/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

wq保存并source /etc/profile使其生效

修改grid用户环境变量,编辑/home/grid/.bash_profile文件:

su - grid,切换用户,编辑~/.bash_profile文件

export LANG=en,zh_CN

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

# 如果是oracle01,则此项值为oracle01,是oracle02,则此项值为oracle02

# export ORACLE_HOSTNAME=oracle01

# 如果是oracle01,则此项值为+ASM1,是oracle02,则此项值为+ASM2

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export LC_ALL=C

umask 022

wq保存并source ~/.bash_profile使其生效

修改oracle用户环境变量,编辑/home/oracle/.bash_profile文件:

su - oracle,切换用户,编辑~/.bash_profile文件

export LANG=en,zh_CN

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

# 如果是oracle01,则此项值为oracle01,是oracle02,则此项值为oracle02

# export ORACLE_HOSTNAME=oracle01

# 实例名,如果是Oracle01,则此项值为orcl1,是Oracle02,则此项值为orcl2

export ORACLE_SID=orcl1

# 数据库名两边保持一致

export ORACLE_UNQNAME=oracledbrac

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db

export TNS_ADMIN=$ORACLE_HOME/network/admin

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

umask 022

wq保存并source ~/.bash_profile使其生效

十、检查依赖包(root用户,两台主机均操作)

使用命令:

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \

compat-libstdc++-33 \

elfutils-libelf \

elfutils-libelf-devel \

gcc \

gcc-c++ \

glibc \

glibc-common \

glibc-devel \

glibc-headers \

libaio \

libaio-devel \

libgcc \

libstdc++ \

libstdc++-devel \

make \

sysstat \

unixODBC \

net-tools

回车执行。

如果没有安装会出现“not installed”提示,使用“yum -y install 缺失包名”进行安装

其中compat-libstdc++-33可以通过以下链接下载rpm并安装

http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

或者使用百度云盘中的package.tar.gz文件,上传并tar解压后:

执行install.sh脚本安装缺失的依赖。

 十一、配置ssh互信(两台机器都操作)

提供两种方法:

第一种:利用Oracle官方提供的P13390677_112040_Linux-x86-64_3of7.zip文件解压

执行sshUserSetup.sh脚本:

./sshUserSetup.sh -user grid -hosts 'oracle01 oracle02 oracle01-priv oracle02-priv' -advanced

./sshUserSetup.sh -user oracle -hosts 'oracle01 oracle02 oracle01-priv oracle02-priv' -advanced

此方法只需在任一节点上执行即可

 后续操作将要求你输入多次grid或者oracle的密码。

第二种(推荐):

所有节点执行以下操作

su - oracle,切换到oracle用户

rm -rf ~/.ssh

mkdir ~/.ssh

chmod 700 ~/.ssh

ssh-keygen -t rsa

ssh-keygen -t dsa

su - grid,切换到grid用户

rm -rf ~/.ssh

mkdir ~/.ssh

chmod 700 ~/.ssh

ssh-keygen -t rsa

ssh-keygen -t dsa

 直接回车,无密码模式

选择Oracle01节点执行:

su - oracle

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys oracle02:~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

su - grid

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys oracle02:~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

选择Oracle02节点执行:

su - oracle

chmod 600 ~/.ssh/authorized_keys

su - grid

chmod 600 ~/.ssh/authorized_keys

验证:

以下操作两个节点都进行操作

su - oracle

ssh oracle01 date && ssh oracle02 date && ssh oracle01-priv date && ssh oracle02-priv date

su - grid

ssh oracle01 date && ssh oracle02 date && ssh oracle01-priv date && ssh oracle02-priv date

查看是否能成功输出4次时间日期,执行两次,第一次可能会让输入密码,如果第二次不需要输入密码则成功。

十二、配置udev(root用户,两台主机均操作)

注意:磁盘必须为共享磁盘

使用命令lsblk查看挂载硬盘:

其中sdb为两台主机间的共享磁盘

使用fdisk命令进行分区操作,如果硬盘大于2T请使用gdisk进行分区操作:

创建/etc/udev/rules.d/60-raw.rules文件,添加以下内容(注意具体的分区名称):

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"

KERNEL=="raw[1-5]*", OWNER="grid" GROUP="asmadmin", MODE="660"

wq保存后使用以下命令创建(linux7适用):

udevadm trigger --type=devices --action=change

使用命令 partprobe 将变化写入内核

十三、grid安装(只需一台机器安装即可)

执行安装前检查:

在oracle01和上oracle02解压P13390677_112040_Linux-x86-64_3of7.zip文件

以root用户安装软件rpm -ivh cvuqdisk-1.0.9-1.rpm

如果安装cvuqdisk服务提示ls: cannot access /usr/sbin/smartctl: No such file or directory:

解决方法:安装yum install -y smartmontools服务即可然后再重新安装cvuqdisk的rpm包。

切换用户:su - grid

执行脚本:./runcluvfy.sh stage -pre crsinst -n oracle01,oracle02 -verbose -fixup

如果出现以下unsuccessful则环境检查失败

 

否则按要求以root用户执行修复脚本:

在oracle01上面进行下列步骤

界面化安装(推荐):

前期准备:

Centos7已经不通过initd管理进程了,而是通过systemd进行管理:

创建服务文件:touch /usr/lib/systemd/system/ohas.service

授权:chmod 777 /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

wq保存并启动服务:

systemctl daemon-reload

systemctl enable ohas.service

systemctl start ohas.service

systemctl status ohas.service

ohas服务启动成功前提是(/etc/init.d目录下有生产init.ohasd服务文件)。

在下列安装的第16步执行root.sh脚本的时候:

可通过(watch -n1 -d ls -l "ls -l /etc/init.d/"命令检测是否有文件产生,如果有立即执行"systemctl enable ohas.service && systemctl start ohas.service && systemctl status ohas.service"命令)

xmanager准备:

linux安装yum install -y xterm xorg-x11-xauth xorg-x11-server-utils

并且export DISPLAY=192.168.56.1:0.0,其中192.168.56.1是我电脑的IP

0.0为右下角xmanager服务监听的,如图所示:

 xmanager新建xstart会话:

 

选择跳过软件升级

选择集群安装和环境配置

选择高级安装

集群配置

 

 

添加节点

识别网卡

创建一个asm Disk Group Name 组

磁盘组对应级别:

High-5

Normal-3

External-1

出现以下问题主要是因为选错级别,比如只有一块磁盘你级别却选择了High的了

 

选择不使用IPMI

 

保存响应文件并开始安装

 

选择语言,默认选择英语

存储选择,选择ASM

 

给ASM磁盘组设置密码

指定不同的ASM组,选择默认设置

<13>安装设置

 <14>检查依赖

如果是以下提示,勾选右上角忽略所有,否则安装缺失依赖包

 

以root执行下列两个脚本(两个节点都执行)

(需要注意root.sh需要先在oracle01执行完毕后才能在oracle02节点执行)

执行root.sh结果

 

两个脚本在两台主机上都成功安装后返回刚刚页面点击ok。

至此完成grid的安装。

如果安装过程中报错”libcap.so.1: cannot open shared object file: No such file or directory:

解决方法:首先进入lib64目录:cd /lib64

          执行以下命令即可:ln -s libcap.so.2.22 libcap.so.1

安装成功验证:

su - grid,切换用户

命令:

检查本地CRS状态:crsctl check crs

确保以下四个状态都是online

查看集群CRS状态:crsctl check cluster

 

查看本地clusterware资源:crs_stat -t -v

查看asm服务:srvctl status asm -a

查看crsd服务:crsctl stat res -t -init

 

检查集群节点:olsnodes -n -i -s -t

查看集群SCAN VIP信息:srvctl config scan

查看监听服务是否启动:ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'

 

 十四、ASM磁盘组

ASM磁盘说明

投票盘(表决盘vote):

集群同步服务会间隔实际向投票盘写入心跳信息,集群通过投票盘验证节点状态,如果集群中某个节点在指定最大时间内未向投票盘写入信息,集群则认为此节点失效进行故障切换。

数据盘(DATA):

用于存储数据库文件。

备份盘(BAK):

用于存储数据库开启归档后的文件。

切换用户:su - grid

启动界面:asmca

创建DATA盘

选择磁盘

 

成功创建

 

 十五、oracle安装

在oracle01主机上解压以下文件:

p13390677_112040_Linux-x86-64_1of7.zip

p13390677_112040_Linux-x86-64_2of7.zip

切换到oracle用户:su - oracle

启动安装程序:./runInstaller

如果运行runInstaller错误libXext.so.6: cannot open shared object file: No such file or directory:

解决方法:使用命令”yum install libXext”安装缺失文件后重新安装。

如果在安装oracle过程中出现错误”Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db/sysman/lib/ins_emagent.mk'”:

解决方法:编辑/u01/app/oracle/product/11.2.0/db/sysman/lib/ins_emagent.mk文件:

将$(MK_EMAGENT_NMECTL)替换成$(MK_EMAGENT_NMECTL) -lnnz11

然后点击重试retry。

界面化安装:

跳过软件更新

 

 

选择”仅安装数据库服务”

选择集群安装数据库

 

 

选择安装模式,EE

 

选择安装路径

 

用户及用户组权限,保持默认

 

安装,并以root用户执行相应脚本

 

 脚本执行结果如下:

 

选择语言

 

安装前检测

 

完成安装

 十六、数据库建库

切换用户:su - oracle

启动界面:dbca

创建RAC数据库

 

选择数据库模式:定制数据库

填写定制信息

其中:dbname是oracle环境变量中UNQNAME的值

           Prefix是oracle环境变量中SID的前缀(即oracle01和oracle02的SID中一样的值即“orcl”)

设置密码

选择ASM磁盘存储数据

注意:ASM磁盘空间需要足够大才能成功安装

 

指定快速恢复磁盘,并开启归档

设置参数

内存设置:

最大进程数和数据块大小,保持默认:

语言设置:

创建数据库

概要信息预览:

组件安装:

安装后验证:

查看数据库运行:srvctl status database -d oracledbrac


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

保持默认设置

数据库组件,默认

数据库存储说明,保持默认