暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

红帽7全模拟生产环境Oracle11G集群RAC环境搭建

原创 小华人生 2023-05-04
1273

Oracle生产实际环境RAC集群安装

环境部署规划


软件

环境IP内存

vm15
redhat7.5192.168.1.106G


192.168.1.204G

主节点搭建iscsi共享服务器用于共享存储(这个是独立于Oracle搭建的 自己可以提前搭建,为了方便我就放在这里了,仅参考,细节自己修改)

ISCSI网络磁盘

ISCSI磁盘的工作模式

Internet SCSI,网络SCSI 接口(默认3260)

一种基于C/S架构的虚拟磁盘技术

服务器提供磁盘空间,客户机连接并当成本地磁盘使用

ISCSI磁盘的构成

backstore ,后端存储

-对应到服务端提供实际存储空间的设备,需要起一个管理名称

target,磁盘组

-是客户端的访问目标,作为一个框架,由多个lun组成

lun , 逻辑单元

-每一个lun需要关联到某一个后端存储设备,在客户端会视为一块虚拟硬盘

ISCSI Qualified Name(iqn) 名称规范

iqn.yyyy-mm.倒叙域名:自定义标识

作用:用来识别target磁盘组,也用来识别客户机身份

实例:

iqn.2023-04.com.example:controi

服务端

firewall-cmd --set-default-zone=trusted #把防火墙设置为开放

我一般把防火墙关了

主节点(control相当于Rac1,desktop相当于Rac2)

一.划分分区或者使用新磁盘

本例使用新分区来实现

使用fdisk分区,分一个2G的主分区

fdisk /dev/sdb

二.安装软件 targetcli

yum -y install targetcli

三.运行targetcli命令进行配置

文本描述已自动生成

基本交互操作

-backstores/block create 后端存储名 实际设备路径

-iscsi/ create 磁盘组的iqn名称

-iscsi/磁盘组名/tpg1/luns create 后端存储路径

-iscsi/磁盘组名/tpg1/acls create 客户机iqn标识

-iscsi/磁盘组名/tpg1/portals create ip地址 端口号

[root@ha131 ~]# targetcli

/> ls

背景图案中度可信度描述已自动生成

上面步骤的详解

1.生成及指定后端存储(backstore,后端存储)

backstores/block create name=mydisk dev=/dev/sdb1

出现绿色行指令无误,执行成功;红色指令有错误,未被执行

2.生成target磁盘组

iscsi/ create iqn.2023-04com.example:controi

一般以做共享磁盘的时间,以及本机域名倒叙,用户标识做命名,用户标识最好注明为那台机器,做到见名知意

如果对刚刚自己的命名不满意可以使用一下指令删除

iscsi/ delete iqn.2023-06.com.example:contro

3.进行lun关联

iscsi/iqn.2023-04.com.example:contro/tpg1/luns create /backstores/block/contro

4.设置ACL验证,设置客户端声称的名字(声称的名字,也需要符合iqn命名规范)

客户端访问声称的名字和服务器留存的名字进行对比,一致允许访问

设置声称的名字,名字为iqn.2023-04.com.example:desktop1

iscsi/iqn.2023-04.com.example:contro/tpg1/acls create iqn.2023-04.com.example:desktop1

5.如果不指定端口和ip默认为所有的IP和端口都能进行服务

指定本机提供服务的IP地址及端口

iscsi/iqn.2023-04.com.example:contro/tpg1/portals create ip_address=192.168.1.20

错误解决

端口和IP已经存在,需要手动删除

Saveconfile:保存

exit 自动保存所有配置

四:重启服务

systemctl restart target

systemctl enable target

Linux客户端

所需软件包:iscsi-initiator-utils(一般系统自己有)

一、安装软件iscsi-initiator-utils(客户端软件 访问共享存储)

yum -y install iscsi-initiator-utils

yum仓库自动补全包名机制

1.该软件当前系统没有安装

2.yum必须具备缓存,利用yum repolist 指令进行生成缓存

二、设置客户端声称的名字(要与服务端设置的名字一致)

vim /etc/iscsi/initiatorname.iscsi

修改配置文件为以下内容

InitiatorName=iqn.2023-04.com.example:desktop1

三、客户端刷新声称名字的服务

systemctl restart iscsid

四、发现共享存储

iscsiadm --mode discovery --type sendtargets --portal 192.168.1.20 --discover

也可使用man帮助,找出其中示例,复制修改

man iscsiadm

全文查找 /example 按n跳转匹配,看到EXAMPLES 复制

登录:scsiadm --mode discoverydb --type sendtargets --portal 192.168.1.20 --discover –login

退出:iscsiadm -m node -T iqn.2023-04.com.example:contro -p 192.168.1.20 -u

删除:iscsiadm -m node -T iqn.2023-04.com.example:contro -p 192.168.1.20 -o delete

systemctl restart iscsi #重启服务

修改其中的IP为服务端IP

五、加载使用共享存储

查看当前使用情况 lsblk

文本中度可信度描述已自动生成

重启服务

systemctl restart iscsi

systemctl enable iscsi

再次使用lsblk查看

可以看到磁盘加载成功

以上是存储服务器搭建 下面开始集群环境搭建

基础环境部署如下(两台都要做的):

部署两台服务器本地域名解析

Hosts:

#public ip

192.168.1.10 rac1

192.168.1.20 rac2

#private ip

10.10.10.10 rac1-priv

10.10.10.20 rac2-priv

#virtual ip

192.168.1.11 rac1-vip

192.168.1.21 rac2-vip

#scan ip

192.168.1.51 rac-scan

1.1关闭selinux和防火墙以及ntp这些:

Selinux:

文本描述已自动生成

防火墙:

Systemctl stop firewalld

文本描述已自动生成

Systemctl stop ntpd

1.2安装软件包

我一般是去包仓库的执行下面的命令

文本描述已自动生成

yum -y install binutils* compat-libcap1 compat-libstdc* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat compat-libcap* --skip-broken

yum -y install binutils* compat-libcap1 compat-libstdc* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh compat-libcap1-1.10-1.x86_64.rpm --force --nodeps

yum -y install binutils* compat-libcap1 gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh libaio-devel-0.3.107-10.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh libstdc+±4.4.7-4.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh libstdc+±devel-4.4.7-4.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh elfutils-libelf-0.152-1.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh elfutils-libelf-devel-0.152-1.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh ksh-20120801-10.el6.x86_64.rpm --force --nodeps

yum -y install binutils* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat --skip-broken

rpm -ivh compat-libcap1-1.10-1.x86_64.rpm

rpm -ivh compat-libcap1-1.10-1.x86_64.rpm --force --nodeps

1.3创建用户和目录以及组

groupadd -g 2000 oinstall

groupadd -g 2100 asmadmin

groupadd -g 2200 dba

groupadd -g 2300 asmdba

groupadd -g 2301 asmoper

useradd -u 2100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid grid

useradd -u 2101 -g oinstall -G dba,asmdba -d /home/oracle oracle

echo grid |passwd --stdin grid

echo oracle|passwd --stdin oracle

mkdir /u01/app/oraInventory/ -p

mkdir /u01/app/oraInventory/ -p

chown -R grid:oinstall /u01/app/oraInventory/

chmod -R 755 /u01/app/oraInventory/

mkdir -p /u01/app/grid/11.2.0/grid

mkdir /u01/app/grid/11.2.0/grid -p

mkdir /u01/app/grid/ -p

mkdir /u01/app/grid/ -p

mkdir -p /u01/app/11.2.0/

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

chown -R grid:oinstall /u01/app/11.2.0/

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/grid

chown -R grid:oinstall /u01/app/11.2.0/grid/

chmod -R 755 /u01/app/grid/

chmod -R 755 /u01/app/11.2.0/grid/

mkdir -p /u01/app/oracle

mkdir -p /u01/app/oracle/product/11.2.0/db_1

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

chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/db_1/

chmod -R 755 /u01/app/oracle/

chmod -R 755 /u01/app/oracle/product/11.2.0/db_1/

1.4修改内核限制参数(自己根据服务器环境改)

cat /etc/security/limits.conf

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

vim /etc/sysct.conf

kernel.shmall = 6294967296

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmmni = 6096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 6194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

1.5用户环境变量

Grid: 用户变量

export PATH

export ORACLE_BASE=/u01/app/grid

export ORACLE_SID=+ASM1

export ORACLE_HOME=/u01/app/11.2.0/grid

export PATH=ORACLE_HOME/bin:ORACLE\_HOME/bin:ORACLE_HOME/OPatch:$PATH

NAME=`hostname`

PS1="[NAME:NAME:LOGNAME]:\${PWD}>"

umask 022

oracle:用户变量

export PATH

export ORACLE_BASE=/u01/app/oracle

export ORACLE_SID=orcl1

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export PATH=ORACLE_HOME/bin:ORACLE\_HOME/bin:ORACLE_HOME/OPatch:$PATH

NAME=`hostname`

PS1="[NAME:NAME:LOGNAME]:\${PWD}>"

umask 022

1.6上传grid软件和db软件和一些包

1,2包是数据库的 3包是grid的包

文本描述已自动生成

Jre是图形化的包 建议上传使用

使用命令:

图形用户界面, 应用程序描述已自动生成

还有可以键盘左右移动的包rlwrap rpm安装即可

还有pdksh的包 直接上传上去用rpm安装

图片包含 图形用户界面描述已自动生成

1.7解压grid软件并且互信grid和oracle用户

互信:目录为3好包解压的目录 小白找不到就去find一下

./sshUserSetup.sh -user grid -hosts “rac1 rac2” -advanced -noPromptPasphrase

./sshUserSetup.sh -user oracle -hosts “rac1 rac2” -advanced -noPromptPasphrase

1.8编辑ohasd

vim /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

赋权

chmod 777 /usr/lib/systemd/system/ohas.service

以 root 用户运行下面的命令

systemctl daemon-reload

systemctl enable ohas.service

systemctl start ohas.service

asm规则

红帽7的

文本低可信度描述已自动生成

脚本: 这几个都是通过iscsi来的 不知道的可以最上面的iscsi搭建

#!/bin/bash

>/etc/udev/rules.d/99-oracle-asmdevices.rules

export DISK=0

for i in d c b e

do

DISK=$(expr $DISK + 1)

UUID=`/usr/lib/udev/scsi_id -gud /dev/sd$i`

echo "KERNEL==\“sdi\\", SUBSYSTEM==\\"block\\", PROGRAM==\\"/usr/lib/udev/scsi\_id --whitelisted --replace-whitespace --device=/dev/\\name\”, RESULT==\“UUID\\", SYMLINK+=\\"asm-diski\”, OWNER=\“grid\”, GROUP=\“asmadmin\”, MODE=\“0660\” " >>/etc/udev/rules.d/99-oracle-asmdevices.rules

done

chmod 777 99-oracle-asmdevices.rules

文本描述已自动生成

注意未分区用 $name

分区用 $parent

【生产环境这么操作,触发变更】

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

【非生产操作】配置完成,重启UDEV(新装环境可以这么操作,但是生产环境不能直接重启)

systemctl restart systemd-udevd.service

systemctl enable systemd-udevd.service (centos7)

udevadm control --reload-rules

ASM磁盘图形化创建(主节点做就可以,因为是共享存储)

直接图形化:

图形用户界面, 应用程序, 表格描述已自动生成

图形用户界面, 应用程序描述已自动生成

ASM磁盘就创建完成了(上面两个创建一样的方法),看自己的生产环境去创建

命令行检查(和linux差不多)

图形用户界面, 文本, 应用程序, 电子邮件描述已自动生成

图形化安装grid和数据库(主节点就可以,也有用户两把都装软件的)

2 图形化安装grid集群

图形用户界面, 文本, 应用程序, 电子邮件描述已自动生成

图形用户界面, 文本, 应用程序, 电子邮件描述已自动生成

图形用户界面, 应用程序描述已自动生成

这里scan填写你/etc/hosts里面的

图形用户界面, 应用程序, 电子邮件描述已自动生成

后面我就不一一截图了

到了脚本安装这里

图形用户界面, 文本, 应用程序描述已自动生成 一定要先检查下 在执行:

Oracle 官方建议在安装Oracle Grid Infrastructure前运行此脚本,来检查各个节点是否满足GI安装的官方要求.

在部署Grid Infrastructure的过程中使用,我们不光要学会怎么用这个脚本,更应该明白其中的一些原理。

runcluvfy.sh将功能在shell中实现,并和GI的安装介质一起提供给用户,使得用户在数据库和CLUSTER安装之前就可以利用这个工具的功能。

先看一下脚本的基本用法(grid用户)

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

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

语法说明:

-pre: 该选项主要检查是否满足安装的需要。

-post:该选择主要检查安装后组件是否正常。

-n:该选项用于指定节点列表,这里指定了2个节点。

-verbose:该选项用于输出详细的验证信息。

-fixup:这是Oracle 11gR2中新增加的一个参数。利用这个参数,可以产生一个名为runfixup.sh的脚本。

runfixup.sh脚本中包含一系列的操作系统命令,利用这个脚本可以对操作系统进行一定的修改,使其满足安装条件。

完成系统进行校验之后,以root用户的身份执行脚本runfixup.sh,就可以解决操作系统中一些尚不满足安装条件的情况。

没有问题以后 再去运行图形化给的脚本

文本描述已自动生成

出现succeeded就成功了

2.1图形化安装数据库

直接dbca

图形用户界面, 应用程序, PowerPoint描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 文本, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 应用程序描述已自动生成

图形用户界面, 文本, 应用程序, Word描述已自动生成

图形用户界面, 文本, 应用程序描述已自动生成

到这里点击Ok等待就完成RAC集群

集群检查命令(可以看出数据库和实例的情况)

文本描述已自动生成

图形用户界面, 文本描述已自动生成

手机屏幕截图描述已自动生成

文本描述已自动生成

到这里就结束了,不想再搭第二遍 踩了太多坑

有问题可以邮箱私聊我 tian_jieshou@126.com

踩坑人:小华人生

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论