手撸一个Oracle Rac(1)(深入理解oracle rac 12c)
sinye56 2024-10-09 19:55 9 浏览 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
相关推荐
- CTO偷偷传我的系统性能优化十大绝招(万字干货)
-
上篇引言:取与舍软件设计开发某种意义上是“取”与“舍”的艺术。关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、...
- 提升效率!VMware虚拟机性能优化十大实用技巧
-
我40岁,干跨境婚恋中介的。为服务各国用户,常得弄英语、日语、俄语系统环境,VMware虚拟机帮了不少忙。用久了发现优化下性能,效率能更高。今儿就来聊聊优化技巧和同类软件。一、VMware虚拟...
- 低延迟场景下的性能优化实践
-
本文摘录自「全球C++及系统软件技术大会」ScottMeyers曾说到过,如果你不在乎性能,为什么要在C++这里,而不去隔壁的Pythonroom呢?今天我们就从“低延迟的概述”、“低延迟系...
- Linux性能调优之内存负载调优的一些笔记
-
写在前面整理一些Linux内存调优的笔记,分享给小伙伴博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门博文内容涉及:Linux内存管理的基本理论寻找内存泄露的进程内存交换空间调优不同方式的...
- 优化性能套路:带你战胜这只后段程序员的拦路虎
-
来源|极客时间《卖桃者说》作者|池建强编辑|成敏你好,这里是卖桃者说。今天给大家推荐一篇文章,来自倪朋飞老师的专栏《Linux性能优化实战》,文章主要讲的是优化性能的套路,这几乎是每个后端程序员...
- SK海力士CXL优化解决方案已成功搭载于Linux:带宽提升30%,性能提升12%以上
-
SK海力士宣布,已将用于优化CXL(ComputeExpressLink)存储器运行的自研软件异构存储器软件开发套件(HMSDK)中主要功能成功搭载于全球最大的开源操作系统Linux上,不但提升了...
- Linux内核优化:提升系统性能的秘诀
-
Linux内核优化:提升系统性能的艺术在深入Linux内核优化的世界之前,让我们先来理解一下内核优化的重要性。Linux内核是操作系统的核心,负责管理系统资源和控制硬件。一个经过精心优化的内核可以显著...
- Linux系统性能优化:七个实战经验
-
Linux系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。Linux系统管理员可能经常会遇到系统不稳定、响应速度慢等问题,例如在Linux上搭建了一个web服务,经常出现网页无法打开、打开速...
- 腾讯面试:linux内存性能优化总结
-
【1】内存映射Linux内核给每个进程都提供了一个独立且连续的虚拟地址空间,以便进程可以方便地访问虚拟内存;虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长的处理器,地址空间的范围也不同...
- Linux文件系统性能调优《参数优化详解》
-
由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性。然而在特定应用下,这种配置往往在I/O性能方面不能达到最优。因此,如果应用对I/O性能要求较高,除...
- Nginx 性能优化(吐血总结)
-
一、性能优化考虑点当我需要进行性能优化时,说明我们服务器无法满足日益增长的业务。性能优化是一个比较大的课题,需要从以下几个方面进行探讨当前系统结构瓶颈了解业务模式性能与安全1、当前系统结构瓶颈首先需要...
- Linux问题分析与性能优化
-
排查顺序整体情况:top/htop/atop命令查看进程/线程、CPU、内存使用情况,CPU使用情况;dstat2查看CPU、磁盘IO、网络IO、换页、中断、切换,系统I/O状态;vmstat2查...
- 大神级产品:手机装 Linux 运行 Docker 如此简单
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:灵昱Termux作为一个强大的Android终端模拟器,能够运行多种Linux环境。然而,直接在Termux上运行Docker并不可行,需要...
- 新手必须掌握的Linux命令
-
Shell就是终端程序的统称,它充当了人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端程序,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是...
- Linux 系统常用的 30 个系统环境变量全解析
-
在Linux系统中,环境变量起着至关重要的作用,它们犹如隐藏在系统背后的“魔法指令”,掌控着诸多程序的运行路径、配置信息等关键要素。尤其在shell脚本编写时,巧妙运用环境变量,能让脚本如虎...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)