oracle 19c rac 安装手册
oracle 19c rac 安装手册
官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html
一、集群规划
再部署集群之前,需要对网络和存储两个方面进行规划。下面简述了网络和存储两个方面需要注意的地方。
-
Oracle RAC 数据库私有网络通信必须使用单独的交换机,不可以通过网线直连。
-
节点间通信网络建议使用10GE(万兆)网络。
-
必须对public和private网卡网络进行网卡绑定操作,采用mod=4 即:(802.3ad) IEEE 802.3adDynamic link aggregation(IEEE 802.3ad 动态链接聚合)。 交换机对应的端口需要配置802.3ad模式。
-
多路径软件采用multipath+udev的方式进行管理。
1.1 服务器规划
| 集群角色 | 主机名 | OS | Public IP | Virtual IP | Private IP | Scan IP | 实例名 | Grid/Oracle版本 |
|---|---|---|---|---|---|---|---|---|
| rac01 | rac01 | Oracle Linux Server 7.6 | 192.168.10.111 | 192.168.10.115 | 192.168.20.111 | 192.168.10.119 | orcl1 | 19.3.0至19.11.0 |
| rac02 | rac02 | Oracle Linux Server 7.6 | 192.168.10.113 | 192.168.10.117 | 192.168.20.113 | 192.168.10.119 | orcl1 | 19.3.0至19.11.0 |
1.2 存储规划
因oracle 19c grid中自带了一个管理库,在安装时可以选择安装也可以选择不安装,如果要安装的话需要的OCR磁盘组容量要求比较高。至少配置30Gx3,作为OCR磁盘组,否则容易导致安装失败。
| 磁盘功能 | 个数 | 每个大小(GB) | 冗余方式 |
|---|---|---|---|
| OCR+VOTING+(19C Grid管理库) | 3 | 30 | NORMAL |
| DATA | 2 | 20 | EXTERNAL |
二、基础环境要求与配置
以下所有配置中,(rac01&rac02)代表在两个节点执行,(rac01)代表仅需在某一个节点执行。
2.1 操作系统要求
根据oracle官方文档,安装oracle19c的操作系统要求如下:
Linux x86-64操作系统要求:
- Oracle Linux 8.1 with the Unbreakable Enterprise Kernel 6: 5.4.17-2011.0.7.el8uek.x86_64 or laterOracle Linux 8 with the Red Hat Compatible kernel: 4.18.0-80.el8.x86_64 or later
- Oracle Linux 7.4 with the Unbreakable Enterprise Kernel 4: 4.1.12-124.19.2.el7uek.x86_64 or laterOracle Linux 7.4 with the Unbreakable Enterprise Kernel 5: 4.14.35-1818.1.6.el7uek.x86_64 or laterOracle Linux 7.7 with the Unbreakable Enterprise Kernel 6: 5.4.17-2011.4.4.el7uek.x86_64 or laterOracle Linux 7.5 with the Red Hat Compatible Kernel: 3.10.0-862.11.6.el7.x86_64 or later
- Red Hat Enterprise Linux 8: 4.18.0-80.el8.x86_64 or later
- Red Hat Enterprise Linux 7.5: 3.10.0-862.11.6.el7.x86_64 or later
- SUSE Linux Enterprise Server 15: 4.12.14-23-default or later
- SUSE Linux Enterprise Server 12 SP3: 4.4.162-94.72-default or later
IBM: Linux on System z操作系统需求:
- Red Hat Enterprise Linux 8.3: 4.18.0-240.el8.s390x or later
- Red Hat Enterprise Linux 7.4: 3.10.0-693.el7.s390x or later
- SUSE Linux Enterprise Server 15: 5.3.18-57-default s390x or later
- SUSE Linux Enterprise Server 12: 4.4.73-5-default s390x or later
2.2 网卡
根据oracle rac原理,安装rac需要两张网卡,并且网卡需要对应使用,IP地址为静态IP。
2.2.1 禁用自动命名网卡(rac01&rac02)
1.首先修改网卡的配置文件/etc/sysconfig/network-scripts/ifcfg-ens33文件,将ifcfg-ens33里的DEVICE和NAME项改为eth0
2.然后将该配置的文件名改成ifcfg-eth0
3.禁用该可预测命名规则。对于这一点,你可以在启动时传递“net.ifnames=0 biosdevname=0 ”的内核参数。这是通过编辑/etc/default/grub在变量GRUB_CMDLINE_LINUX后面加入“net.ifnames=0 biosdevname=0”来实现的,参数间以空格来间隔。
4.运行命令grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成GRUB配置并更新内核参数,重启。
[root@rac01 network-scripts]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"#重新生成GRUB配置并更新内核参数
[root@rac01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.14.35-1818.3.3.el7uek.x86_64
Found initrd image: /boot/initramfs-4.14.35-1818.3.3.el7uek.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-506ed14f59eb41c89599dc75decbb045
Found initrd image: /boot/initramfs-0-rescue-506ed14f59eb41c89599dc75decbb045.img
done
#重启服务器
[root@rac1 ~]# reboot
以上示例为rac01服务器上进行的操作,请在rac02服务器上进行同样操作。
2.2.2 网卡改为静态ip(rac01&rac02)
因oracle数据库对ip地址要求比较严格,只能采用静态IP。以下为设置静态IP的方法。
#修改网卡的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0文件
BOOTPROTO=static #启用静态IP地址
IPADDR=192.168.10.111 #设置IP地址
NETMASK=255.255.255.0 #设置子网掩码
GATEWAY=192.168.10.2 #设置网关
ONBOOT="yes" #设置网卡自启动
#重启网络
[root@rac01 network-scripts]# service network restart
以上示例为rac01服务器上进行的操作,请在rac02服务器上进行同样操作。
2.2.3 私网网卡配置MTU(rac01&rac02)
注意:私网网卡需要配置MTU
同步更新网卡配置文件,增加一行MTU=9000,确保重启网卡/主机后,mtu=9000不变:
vi /etc/sysconfig/network-scripts/ifcfg-eth1
MTU=“9000”
2.3 设置主机名(rac01&rac02)
- rac01
hostnamectl set-hostname rac01
- rca02
hostnamectl set-hostname rac02
2.4 禁用Transparent HugePages(rac01&rac02)
oracle官方要求禁用Transparent HugePages,但有书籍提出8G内存以上建议启用,在此还是建议先按照官方要求进行操作。编辑/etc/default/grub在变量GRUB_CMDLINE_LINUX后面加入“transparent_hugepage=never”来实现。
[root@rac01 network-scripts]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 transparent_hugepage=never rhgb quiet"
GRUB_DISABLE_RECOVERY="true"#重新生成GRUB配置并更新内核参数
[root@rac01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.14.35-1818.3.3.el7uek.x86_64
Found initrd image: /boot/initramfs-4.14.35-1818.3.3.el7uek.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-506ed14f59eb41c89599dc75decbb045
Found initrd image: /boot/initramfs-0-rescue-506ed14f59eb41c89599dc75decbb045.img
done
#重启服务器
[root@rac1 ~]# reboot
重启后查看状态如下:
[root@rac01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@rac01 ~]# grep AnonHugePages /proc/meminfo
AnonHugePages: 0 kB
以上示例为rac01服务器上进行的操作,请在rac02服务器上进行同样操作。
2.5 关闭selinux和防火墙(rac01&rac02)
- selinux
sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- 防火墙
systemctl disable firewalld
systemctl stop firewalld
2.6 配置yum本地源(rac01&rac02)
如果服务器可以访问互联网,可以不配置yum本地源,使用操作系统自带的yum配置。如果不能访问互联网或者不存在可用yum,则需要进行配置。具体配置方法如下:
#上传操作系统镜像文件至服务器某个目录,以/root/目录为例
mount -o loop -t iso9660 OracleLinux-Release7-Update6-x86_64-dvd.iso /media
#配置yum源
vi /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///media
gpgcheck=0
enabled=1
#清理缓存
yum clean all
2.7 配置hosts(rac01&rac02)
在2个节点上配置hosts文件,以节点1为例:
[root@rac1 ~]# vim /etc/hosts
# 在文件的最后面加上
# public
192.168.10.111 rac01
192.168.10.113 rac02
#virtual
192.168.10.115 rac01-vip
192.168.10.117 rac02-vip
#private
192.168.20.111 rac01-priv
192.168.20.113 rac02-priv
#scan
192.168.10.119 rac-cluster-scan
配置完成后,重启网卡
[root@rac1 ~]# systemctl restart network
以上示例为rac01服务器上进行的操作,请在rac02服务器上进行同样操作。
2.8 NTP时钟同步(rac01&rac02)
条件允许的情况下配置ntpd自动时钟同步,如果没有可用时钟同步服务器,可以尝试将两台服务器中的一台作为时间服务器,对另外一台服务器提供时钟同步服务。总之目的是保持两台服务器时钟同步。
yum install -y ntp ntpdate
systemctl enable ntpd --now
2.9 avahi-daemon 配置(rac01&rac02)
avahi-daemon会影响集群间的心跳网络,建议关闭(如果没有安装,也装上后关闭,避免后面不小心安装导致问题)。
yum install -y avahi*
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
pgrep -f avahi-daemon | awk '{print "kill -9 "$2}'
##配置NOZEROCONF=yes
cat <<EOF>>/etc/sysconfig/network
NOZEROCONF=yes
EOF
2.10 安装基本依赖包(rac01&rac02)
yum groupinstall -y "Server with GUI"yum install -y bc binutils compat-libcap1 相关文章:
oracle 19c rac 安装手册
oracle 19c rac 安装手册 官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html 一、集群规划 再部署集群之前,需要对网络和存储两个方面进行规划。下面简述了网络和存储两个方面需要注意的地方。 Oracle RAC 数据库私有网络通信必须使用单…...
sqlMap
url:https://sqlmap.org/ git:https://github.com/sqlmapproject/sqlmap.git git中文:https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-zh-CN.md use url:https://github.com/sqlmapproject/sqlmap…...
蓝桥杯每日一题2023.12.2
题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 答案:3598180 由题目分析可以知道,给小明发的牌一共有13种类型,每种类型的牌一共有四张。对于每种牌,我们都有5种选择,不拿、拿一张、…...
【计算机网络学习之路】序列化,反序列化和初识协议
文章目录 前言一. 序列化和反序列化1.自己实现2. JSON 二. 初识协议结束语 前言 本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步。 本篇博文正式开始应用层的学习,首先讲解应用层的…...
亚马逊云科技推出新一代自研芯片
北京——2023 年12月1日 亚马逊云科技在2023 re:Invent全球大会上宣布其自研芯片家族的两个系列推出新一代,包括Amazon Graviton4和Amazon Trainium2,为机器学习(ML)训练和生成式人工智能(AI)应用等广泛的工…...
VIT总结
关于transformer、VIT和Swin T的总结 1.transformer 1.1.注意力机制 An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a wei…...
C++11——initializer_list
initializer_list的简介 initializer_list是C11新出的一个类型,正如类型的简介所说,initializer_list一般用于作为构造函数的参数,来让我们更方便赋值 但是光看这些,我们还是不知道initializer_list到底是个什么类型,…...
数学字体 Mathematical fonts
Mathematical fonts 数学字体: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathbb{ABC…...
Python简单模拟蓝牙车钥匙协议
本文设计一个简单的蓝牙车钥匙协议,协议包含DH密钥协商和基于RSA的身份认证功能,以及防重放与消息完整性验证。 1. 密钥协商过程: - 设定 DH 参数:素数 p 和生成元 g。 - 发送方(Alice)生成 DH 的私钥 a 并计算公钥 A…...
【Python3】【力扣题】383. 赎金信
【力扣题】题目描述: 题解: 两个字符串ransomNote和magazine,ransomNote中每个字母都在magazine中一一对应(顺序可以不同)。 即分别统计两个字符串中每个字母出现的次数,ransomNote中每个字母的个数小于等…...
外包搞了6年,技术退步明显......
先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...
uni-app x生成的安卓包,安装时,提示不兼容。解决方案
找到 manifest.json 进入:源码视图 代码 {"name" : "xxx康养","appid" : "__xxx6","description" : "xxx康养","versionName" : "1.0.12","versionCode" : 100012,&…...
Screenshot To Code
序言 对于GPT-4我只是一个门外汉,至于我为什么要了解screenshot to code,只是因为我想知道,在我不懂前端设计的情况下,能不能通过一些工具辅助自己做一些简单的前端界面设计。如果你想通过此文深刻了解GPT-4或者该开源项目&#…...
SpringBoot 是如何启动一个内置的Tomcat
为什么说Spring Boot框架内置Tomcat 容器,Spring Boot框架又是怎么样去启动Tomcat的?我简单总结下学习过程。 一:简单了解SpringBoot的启动类 我们都知道Spring Boot框架的启动类上是需要使用 @SpringBootApplication 注解标注的, @SpringBootApplication 是一个复合注解…...
《功能磁共振多变量模式分析中空间分辨率对解码精度的影响》论文阅读
《The effect of spatial resolution on decoding accuracy in fMRI multivariate pattern analysis》 文章目录 一、简介论文的基本信息摘要 二、论文主要内容语音刺激的解码任务多变量模式分析(MVPA)K空间 空间分辨率和平滑对MVPA的影响平滑的具体过程…...
pygame实现贪吃蛇小游戏
import pygame import random# 游戏初始化 pygame.init()# 游戏窗口设置 win_width, win_height 800, 600 window pygame.display.set_mode((win_width, win_height)) pygame.display.set_caption("Snake Game")# 颜色设置 WHITE (255, 255, 255) BLACK (0, 0, 0…...
反序列化漏洞(二)
目录 pop链前置知识,魔术方法触发规则 pop构造链解释(开始烧脑了) 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识,魔术方法触…...
【开箱即用】前后端同时开源!周末和AI用Go语言共同研发了一款笔记留言小程序!
大家好,我是豆小匠。 真的是当你在怀疑AI会不会取代人类的时候,别人已经用AI工具加速几倍的生产速度了… 周末体验了和AI共同开发的感受,小项目真的可以一人全干了… 本次实验使用的AI工具有两个:1. GitHub Copilot(…...
java对xml压缩
import java.util.*; import java.util.zip.GZIPOutputStream; import java.nio.charset.StandardCharsets; import org.apache.commons.codec.binary.Base64;/*** 模板压缩** param xml 模板xml* return* throws Exception*/public static String businessData(String xml) th…...
GoLang切片
一、切片基础 1、切片的定义 切片(Slice)是一个拥有相同类型元素的可变长度的序列它是基于数组类型做的一层封装它非常灵活,支持自动扩容切片是一个引用类型,它的内部结构包含地址、长度和容量声明切片类型的基本语法如下&#…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
