手撸一个Oracle Rac(1)
ccwgpt 2024-11-30 19:27 34 浏览 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
相关推荐
- 自己动手写Android数据库框架_android开发数据库搭建
-
http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...
- 谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic
-
智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...
- 工信部:着力推动大模型算法、框架等基础性原创性的技术突破
-
工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...
- 乒乓反复纠结“框架不稳定”的三个小误区
-
很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...
- 前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈
-
IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...
- 三种必须掌握的嵌入式开发程序架构
-
前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...
- 怪不得别人3秒就知道软考案例怎么做能50+
-
软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...
- UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透
-
10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...
- 勒索软件转向云原生架构,直指备份基础设施
-
勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...
- ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来
-
在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...
- APP 制作界面设计教程:一步到位_app界面设计模板一套
-
想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...
- MCP 的工作原理:关键组件_mcp部件
-
以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...
- 软件架构_软件架构师工资一般多少
-
软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...
- 不知不觉将手机字体调大!老花眼是因为“老了吗”?
-
现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...
- 8000通用汉字学习系列讲座(第046讲)
-
[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)