百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

手撸一个Oracle Rac(1)

nanshan 2025-01-10 15:53 7 浏览 0 评论

(文章太长,只能分段发表,哎~)

为了保证系统的高可用性,我们一般会采取集群部署、主从部署或者主备模式,作为数据库界的扛把子,Oracle Database也有高可用方案。Oracle Rac和我们平时的集群有点不一样,一般的集群是多个服务一起工作,即使坏了一个,其它的也可以保证系统能够正常工作。Oracle Rac是用多个服务去操作同一个磁盘,如果一个服务挂了,其它服务可以顶上,继续使用。但是如果共享磁盘挂了,那就基本拜拜了。Oracle Rac只是Oracle的高可用方案中的一部分,如果需要一个可用性特别高的Oracle还需要进行其它的操作。这里我们就来自己搭建一个Oracle Rac看看。

前方高能,这个文章有点长,我的word文件写了63页,需要点耐心看。


VMware安装Oracle Rac




一、系统信息

1. 物理机系统:Windows

2. 虚拟机系统:Oracle Linux 6.9

3. 虚拟软件:VMware 14.1

4. Oracle版本:11g

5. IP设置

ip、vip和scan-ip在同一个网段,priv在另外一个网段


二、虚拟机安装

1. 新建虚拟机

新建两个虚拟机,命名为rac1和rac2,内存为2G(oracle要求可用内存1.5G),硬盘为30G(安装完以后会占用20多G的空间),操作过程略;

2. 新建共享磁盘

物理机cmd窗口进入到VMware安装路径下(也可以将VMware的安装路径放到环境变量中,不然执行命令会报vmware-vdiskmanager.exe不是内部或外部命令,也不是可执行的程序)

输入一下命令新建共享磁盘(2个1G的ocr盘,1G投票盘,20G数据盘,10G备份盘)

vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 F:\VMware\ShareDisks\ocr.vmdk

vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 F:\VMware\ShareDisks\ocr2.vmdk

vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 F:\VMware\ShareDisks\votingdisk.vmdk

vmware-vdiskmanager.exe -c -s 20000Mb -a lsilogic -t 2 F:\VMware\ShareDisks\data.vmdk

vmware-vdiskmanager.exe -c -s 10000Mb -a lsilogic -t 2 F:\VMware\ShareDisks\backup.vmdk


3. 挂载共享磁盘到rac1和rac2上

关闭虚拟机,在rac1和rac2的vmx文件中增加以下内容

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

添加磁盘,将添加的5个磁盘全部加上(rac1和rac2的磁盘顺序需要相同,最好加完一块磁盘保存后再加载下一块)


使用现有虚拟磁盘


选择上一步创建的共享盘




配置完以后启动虚拟机,使用fdisk命令查看磁盘情况

fdisk -l


修改虚拟机的vmk文件

增加以下内容,设置为永久状态

scsi0.sharedBus = "virtual"

scsi0:1.mode = "independent-persistent"

scsi0:2.mode = "independent-persistent"

scsi0:3.mode = "independent-persistent"

scsi0:4.mode = "independent-persistent"

scsi0:5.mode = "independent-persistent"

把增加的磁盘改为绝对路径


重启vmware


4. 配置双网卡

新增网卡,rac1和rac2都用两个网卡(网卡的顺序必须相同)


选择桥接模式


启动虚拟机,编辑网卡设置(ifcfg-eth0的IP网段设置与物理机IP网段相同,不然DNS无法访问)

rac1:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

写入一下内容

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.1.201

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=114.114.114.114

复制ifcfg-eth0

cp ifcfg-eth1

vim /etc/sysconfig/network-scripts/ifcfg-eth1

写入一下内容

DEVICE=eth1

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.1

NETMASK=255.255.255.0

DNS1=114.114.114.114

rac2:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

写入一下内容

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.1.202

NETMASK=255.255.255.0

GATEWAY=192.168.10.1

DNS1=114.114.114.114

复制ifcfg-eth0

cp ifcfg-eth1

vim /etc/sysconfig/network-scripts/ifcfg-eth1

写入一下内容

DEVICE=eth1

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.2

NETMASK=255.255.255.0

DNS1=114.114.114.114

重启网卡

service network restart

查看网卡运行状态

ifconfig(或者ip addr)


检查网络是否可用(内网部署就不需要了)

ping www.baidu.com


5. 修改系统参数

在rac1和rac2上执行

修改内核参数

vim /etc/sysctl.conf

增加以下内容

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 68719476736

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

net.ipv4.tcp_wmem = 262144 262144 262144

net.ipv4.tcp_rmem = 4194304 4194304 4194304


使配置生效

sysctl -p

修改用户限制参数

vi /etc/security/limits.conf

增加以下内容

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536


配置login

vim /etc/pam.d/login

增加以下内容

session required pam_limits.so


vim /etc/profile

增加以下内容

if [ $USER = "oracle" ]; then

if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi


使配置生效

source /etc/profile

6. 配置hosts和hostname

在rac1和rac2上执行

vim /etc/sysconfig/network

rac1把名字配置rac1,rac2配置为rac2(如果新建虚拟机的时候就设置了名称,这里就不用再设置了)


vim /etc/hosts

增加以下内容

192.168.1.201 rac1

192.168.1.210 rac1-vip

192.168.10.1 rac1-priv

192.168.1.202 rac2

192.168.1.220 rac2-vip

192.168.10.2 rac2-priv

192.168.1.203 scan-ip


7. 设置本地yum源

挂载光驱

mount /dev/cdrom /mnt

将原来的yum源取消掉

mv /etc/yum.repos.d/public-yum-ol6.repo /etc/yum.repos.d/public-yum-ol6.repo.bak

新建本地yum源配置文件

vim /etc/yum.repos.d/local.repo

写入一下内容

[local]

name=local

baseurl=file:///mnt

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

gpgcheck=1

enabled=1


刷新yum

yum clean all

yum缓存

yum makecache

检查设置是否生效

yum list


8. 设置oracle用户

/usr/sbin/groupadd -g 1000 oinstall

/usr/sbin/groupadd -g 1020 asmadmin

/usr/sbin/groupadd -g 1021 asmdba

/usr/sbin/groupadd -g 1022 asmoper

/usr/sbin/groupadd -g 1031 dba

/usr/sbin/groupadd -g 1032 oper

useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid

useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/grid

mkdir /u01/app/oracle

chown -R grid:oinstall /u01

chown oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/

设置密码(方便记忆,本人密码设置为oracle)

passwd grid

passwd oracle

配置rac1的oracle环境变量(ORACLE_UNQNAME数据库实例名,ORACLE_SID是节点上的实例名称,这个要是配置错了,会有奇怪的事情发生)

vim /home/oracle/.bash_profile

增加以下内容

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_SID=orcl1

export ORACLE_UNQNAME=orcl

export PATH=$ORACLE_HOME/bin:$PATH

使配置文件生效

source /home/oracle/.bash_profile

配置rac1的grid环境变量

vim /home/grid/.bash_profile

增加以下内容

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export PATH=$ORACLE_HOME/bin:$PATH

使配置文件生效

source /home/grid/.bash_profile

配置rac2的oracle环境变量

vim /home/oracle/.bash_profile

增加以下内容

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_SID=orcl2

export ORACLE_UNQNAME=orcl

export PATH=$ORACLE_HOME/bin:$PATH

使配置文件生效

source /home/oracle/.bash_profile

配置rac1的grid环境变量

vim /home/grid/.bash_profile

增加以下内容

export ORACLE_SID=+ASM2

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export PATH=$ORACLE_HOME/bin:$PATH

使配置文件生效

source /home/grid/.bash_profile

9. 关闭防火墙

临时关闭selinux(立马生效)

setenforce 0

永久关闭selinux(重启生效)

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux

关闭防火墙

service iptables stop

关闭防火墙开机启动

chkconfig iptables off

10. 时间同步

修改ntp配置文件(这个文件控制系统时间同步)

vim /etc/ntp.conf

增加以下内容(这里设置的是阿里云的时间同步服务器,可以替换为需要的ip地址,prefer是首选)

server ntp1.aliyun.com prefer


修改系统的ntp配置文件(这个文件控制BIOS时间同步)

vim /etc/sysconfig/ntpd

增加以下内容,允许ntpd修改BIOS时间

SYNC_HWCLOCK=yes


11. 安装依赖包

yum -y install binutils-* compat-libstdc++-* compat-libstdc++-*.i686 elfutils-libelf* elfutils-libelf-devel* glibc-* glibc-*.i686 glibc-common* glibc-devel*.i686 glibc-headers* libaio* libaio*.i686 libaio* libaio*.i686 libgcc* libstdc++* unixODBC* unixODBC-devel* unixODBC-devel* libcap.so.1 gcc gcc-c++ glibc* glibc-devel* ksh libgcc* libstdc++* libstdc++-devel* make sysstat compat-libcap1* compat-libstdc++* libaio-devel

相关推荐

Let’s Encrypt免费搭建HTTPS网站

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...

使用Nginx配置TCP负载均衡(nginx tcp负载)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...

Nginx负载均衡及支持HTTPS与申请免费SSL证书

背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...

HTTPS配置实战(https配置文件)

原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...

只有IP地址没有域名实现HTTPS访问方法

一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...

超详解:HTTPS及配置Django+HTTPS开发环境

众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...

Godaddy购买SSL之后Nginx配置流程以及各种错误的解决

完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...

Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问

参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...

你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具

NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...

从零开始搭建HTTPS服务(搭建https网站)

搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...

群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问

安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...

让网站快速升级HTTPS协议提高安全性

为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...

用Https方式访问Harbor-1.9版本(https访问流程)

我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...

如何启用 HTTPS 并配置免费的 SSL 证书

在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...

取消回复欢迎 发表评论: