Oracle生产实际环境RAC集群安装
环境部署规划
| 软件 | 环境 | IP | 内存 |
|---|---|---|---|
vm15 | redhat7.5 | 192.168.1.10 | 6G |
| 192.168.1.20 | 4G |
主节点搭建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/OPatch:$PATH
NAME=`hostname`
PS1="[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/OPatch:$PATH
NAME=`hostname`
PS1="[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
到这里点击Ok等待就完成RAC集群了
集群检查命令(可以看出数据库和实例的情况)
到这里就结束了,不想再搭第二遍 踩了太多坑
有问题可以邮箱私聊我 tian_jieshou@126.com
踩坑人:小华人生




