搭建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会话:

 <1>选择跳过软件升级

<2>选择集群安装和环境配置

<3>选择高级安装

<4>选择语言,默认选择英语

<5>集群配置

 

 

<6>添加节点

<7>识别网卡

<8>存储选择,选择ASM

 <9>创建一个asm Disk Group Name 组

磁盘组对应级别:

High-5

Normal-3

External-1

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

 <10>给ASM磁盘组设置密码

<11>选择不使用IPMI

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

<13>安装设置

 <14>检查依赖

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

 <15>保存响应文件并开始安装

 <16>以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。

界面化安装:

<1>跳过软件更新

 

 <2>选择”仅安装数据库服务”

<3>选择集群安装数据库

 

 <4>选择语言

 <5>选择安装模式,EE

 <6>选择安装路径

 <7>用户及用户组权限,保持默认

 <8>安装前检测

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

 

 脚本执行结果如下:

 <10>完成安装

 十六、数据库建库

切换用户:su - oracle

启动界面:dbca

<1>创建RAC数据库

 

<2>选择数据库模式:定制数据库

<3>填写定制信息

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

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

<4>保持默认设置

<5>设置密码

<6>选择ASM磁盘存储数据

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

 

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

<8>数据库组件,默认

<9>设置参数

内存设置:

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

语言设置:

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

<11>创建数据库

概要信息预览:

组件安装:

安装后验证:

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

  • 4
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
搭建Oracle11g RAC集群需要进行多项操作,以下是简要的步骤: 1. 准备环境:确保每个节点的操作系统版本和硬件配置满足Oracle11g RAC的要求,并安装必要的软件和补丁。 2. 配置网络:配置节点之间的网络通信,包括IP地址、DNS解析、网卡绑定等。 3. 创建共享存储:为Oracle实例提供共享存储,可以使用iSCSI、NFS等技术实现。 4. 安装Oracle Grid Infrastructure:在每个节点上安装Oracle Grid Infrastructure,这是管理Oracle RAC环境所需的软件。 5. 安装Oracle Database软件:在其中一个节点上安装Oracle Database软件,这是实际的数据库服务。 6. 创建数据库:使用Oracle Database创建RAC集群,包括设置参数、创建表空间、用户、角色等。 7. 配置监听器和服务:配置监听器和服务,以便客户端可以访问数据库。 对于使用静默安装的具体步骤,可以参考以下步骤: 1. 创建响应文件:使用Oracle Universal Installer(OUI)创建响应文件,其中包括所有需要的配置参数。 2. 复制软件包:将Oracle Grid Infrastructure和Oracle Database软件包复制到每个节点上。 3. 运行安装脚本:使用响应文件运行安装脚本,安装Oracle Grid Infrastructure和Oracle Database软件。 4. 创建数据库:使用静默安装后,需要手动创建数据库并进行必要的配置。 5. 配置监听器和服务:同样需要手动配置监听器和服务。 注意事项:在进行静默安装前,需要对响应文件中的参数进行仔细的配置,以确保安装过程顺利。同时,需要进行充分的测试和验证,以确保RAC集群的可用性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值