数据库学习案例20240206-ORACLE NEW RAC agent and resource关系汇总。
1 集群架构图
整体集群架构图如下:

1 数据库启动顺序OHASD层面
操作系统进程init.ohasd run启动ohasd.bin
init.ohasd run
- 集群自动启动是否被禁用 crsctl enable has/crs
- GIHOME所在文件系统是否被正常挂载。
- 管道文件npohasd是否能够被访问, cd /var/tmp/.oracle/ (管道文件目录)
- 手动执行run脚本 nohup /etc/init.d/init.ohasd run &.
ohasd.bin
- 确认OLR存在而且能够正常被访问。($GI_HOME/crsdata/tjnrmsdb1/olr/,或者使用./ocrcheck -local
- ohasd所使用的嵌套字文件socket file存在。
- ohasd对应的日志文件能够正常访问。
2 初始化集群初始资源
ohasd.bin会启动4个代理进程来启动所有的集群初始化资源。
oraagent负责启动资源:ora.asm,ora.evmd,ora.gipcd,ora.gpnpd,ora.mdnsd等。
orarootagent负责启动资源:ora.crsd\ora.ctssd\ora.cluster_interconnect.ha\ora.crf等。
cssdagent负责启动ora.cssd
cssdmonitor负责启动ora.cssdmonitor.
常见失败汇总
1 二进制文件损坏
拷贝健康节点的二进制文件过来继续使用。
2 代理进程日志文件无法访问。
3 集群初始化资源开始启动
虽然ohasd的代理进程oraagent会同时启动所有的集群初始化资源,但是它们之间还是有依赖关系的。

1 )mdnsd守护进程被启动,并启动mdns服务,以便gpnpd能够通过mdns在节点之间传输gpnp profile文件。
2)gpnpd守护进程被启动,gpnpd开始读取本地节点的gpnp profile,之后和远程节点的gpnpd守护进程通信,以便获得集群中最新的gpnp profile信息。
3)gpnpd启动完毕,向本地节点的其他集群初始化资源提供gpnp profile服务。
4)gipcd守护进程被启动,从gpnpd守护进程获得集群的私网信息,并和远程节点的gipcd守护进程通信,最后开始监控本地节点的私网。
5)cssdagent代理进程启动ocssd.bin守护进程。
6)cssdmonitor守护进程启动,并开始监控ocssd.bin守护进程的状态。
在整个过程中,可能导致集群的bootstrap过程无法成功的主要原因如下。
原因1:集群中有其他的mdns软件运行(例如:avahi),这会导致GI的mdnsd服务无法正常工作。例如:
Oct 6 22:52:58 test1?avahi-daemon[22477]: Withdrawing address record?for *.*.*.* on bond1.
Oct 6 22:52:58 test1?avahi-daemon[22477]: Leaving mDNS multicast group on interface?bond1.IPv4 with address *.*.*.*.
Oct 6 22:52:58 test1?avahi-daemon[22477]: Joining mDNS multicast group on interface?bond1.IPv4 with address 169.254.180.94.
Oct 6 22:52:58 test1 avahi-daemon[22477]: Withdrawing address record for 169.254.180.94 on bond1.
Oct 6 22:52:58 test1?avahi-daemon[22477]: Interface bond1.IPv4 no longer relevant for mDNS.
原因2:gpnp profile文件中的信息出现错误,这会导致集群的bootstrap过程无法完成。例如:
[grid@test1 oraagent_grid]$ gpnptool get
Warning: some command line parameters were defaulted. Resulting command line:
/u01/app/11.2.0/grid/bin/gpnptool.bin get -o-
......
gpnp-profile.xsd" ProfileSequence="13" ClusterUId="7d414c4a930cdfc4ff23e150c9acd5e0" ClusterName="test-cluster" PALocation=""><gpnp:Network-Profile><gpnp:HostNetwork id="gen" HostName="*">
<gpnp:Network id="net2" IP="*.*.*.0" Adapter="eth88" Use="cluster_interconnect"/> <<<<<私网网卡信息错误
<gpnp:Network id="net1" Adapter="eth0" IP="*.*.*.0" Use="public"/>
原因3:节点之间的网络通信存在问题,这会导致gpnp profile无法正常传输。
原因4:gpnp的一些线程被挂起,这会导致gpnpd守护进程无法成功完成启动任务。
原因5:集群的私网网卡出现问题,这会导致gipcd无法和其他节点的gipcd进行通信或者集群没有可用的私网进行通信。
原因6:gipcd存在问题,这会导致它错误地认为集群私网网卡存在问题。
原因7:以上守护进程的套接字文件丢失。
而对应的解决方法如下。
方法1:停止并禁用其他的mdns软件。例如:
# /etc/rc.d/init.d/avahi-dnsconfd stop
# /etc/rc.d/init.d/avahi-daemon stop
# chkconfig avahi-dnsconfd off
# chkconfig avahi-daemon off
方法2:如果gpnp profile只是在集群的某一个节点上出现了错误,可以从集群的其他节点将其复制过来。如果集群所有节点的gpnp profile都出现了问题,那么就需要使用gpnp工具来进行修正。
---索引如果修改集群私网要备份gpnp profile文件
下面的例子演示了如何使用gpnp tool修改集群的私网信息。
1)检查当前的gpnp profile,确认gpnpd能够通过mdns找到集群的其他节点。
$<gi_home>/bin/gpnptool get
$<gi_home>/bin/gpnptool find
2)创建一个工作路径以用于编辑gpnp profile。
$mkdir /home/grid/gpnp
$export GPNPDIR=/home/grid/gpnp
$<gi_home>/bin/gpnptool get -o=$GPNPDIR/profile.original
3)创建一个用于修改的gpnp profile副本。
$cp $GPNPDIR/profile.original $GPNPDIR/p.xml
4)查看gpnp profile的序列号和私网信息。
$<gi_home>/bin/gpnptool getpval -p=$GPNPDIR/p.xml -prf_sq -o-
$<gi_home>/bin/gpnptool getpval -p=$GPNPDIR/p.xml -net -o-
5)修改集群私网的网卡信息。
$<gi_home>/bin/gpnptool edit -p=$GPNPDIR/p.xml -o=$GPNPDIR/p.xml -ovr -prf_sq=<当前序列号+1> -net<私网编号>:net_ada=<私网网卡名>
例如:
gpnptool edit -p=$GPNPDIR/p.xml -o=$GPNPDIR/p.xml -ovr -prf_sq=9 -net2:net_ada=eth1
6)确认之前的修改。
$<gi_home>/bin/gpnptool sign -p=$GPNPDIR/p.xml -o=$GPNPDIR/p.xml -ovr -w=cw-fs:peer
7)将修改后的gpnp profile应用到gpnpd守护进程中。
$<gi_home>/bin/gpnptool put -p=$GPNPDIR/p.xml
8)将改变后的gpnp profile推送到集群的其他节点。
$<gi_home>/bin/gpnptool find -c=<集群名>
$<gi_home>/bin/gpnptool rget -c=<集群名>
方法3:确认集群私网通信正常(例如:使用ping、traceroute等命令确认集群私网的连通性)。
方法4:在操作系统层面重新启动gpnp守护进程,例如:kill-9<gpnpd进程ID>。
注意
当gpnpd守护进程被终止之后,对应的ohasd代理进程会及时发现这一情况,并启动新的gpnpd守护进程。
方法5:确认集群私网通信正常(例如:使用ping、traceroute等命令确认集群私网的连通性)。
方法6:在操作系统层面重新启动gipcd守护进程,例如:kill-9<gipcd进程ID>。
注意
当gpicd守护进程被终止之后,对应的ohasd代理进程会及时发现这一情况,并启动新的gipcd守护进程。
方法7:重新启动GI,以便重建套接字文件。
#<gi_home>/bin/crsctl stop crs
#<gi_home>/bin/crsctl start crs
2 AGENT对应的进程架构图

相关文章:
数据库学习案例20240206-ORACLE NEW RAC agent and resource关系汇总。
1 集群架构图 整体集群架构图如下: 1 数据库启动顺序OHASD层面 操作系统进程init.ohasd run启动ohasd.bin init.ohasd run 集群自动启动是否被禁用 crsctl enable has/crsGIHOME所在文件系统是否被正常挂载。管道文件npohasd是否能够被访问, cd /var/t…...
TypeScript 入门
课程地址 ts 开发环境搭建 npm i -g typescript查看安装位置: $ npm root -g C:\Users\Daniel\AppData\Roaming\npm\node_modules创建 hello.ts: console.log("hello, ts");编译 ts 文件,得到 js 文件: $ tsc foo.…...
linux 磁盘相关操作
1.U盘接入虚拟机 (1)在插入u盘时,虚拟机会检测usb设备,在弹出窗口选择连接到虚拟机即可。 (2)或 直接在虚拟机--->可移动设备--->找到U盘---->连接 2.检测U盘是否被虚拟机识别 ls /dev/sd* 查…...
PyTorch: torch.max()函数详解
torch.max函数详解:基于PyTorch的深入探索 🌵文章目录🌵 🌳引言🌳🌳torch.max()函数简介🌳🌳torch.max()的返回值🌳🌳torch.max()的应用示例🌳&am…...
Rust基础拾遗--核心功能
Rust基础拾遗 前言1.所有权与移动1.1 所有权 2.引用3.特型与泛型简介3.1 使用特型3.2 特型对象3.3 泛型函数与类型参数 4.实用工具特型5.闭包 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总,读者通读此系列文章就可以轻松的把该语言基础捡起来…...
MySQL:常用指令
MySQL官网 一、在Windows 系统 cmd窗口里执行的命令 启动:net start MySQL停止:net stop MySQL卸载:sc delete MySQL 二、在macOS系统终端里执行的命令 启动:mysql.server start停止:mysql.server stop重启:mysql.server restart 三、执行帮…...
Scrapy:Python中强大的网络爬虫框架
Scrapy:Python中强大的网络爬虫框架 在当今信息爆炸的时代,从互联网上获取数据已经成为许多应用程序的核心需求。Scrapy是一款基于Python的强大网络爬虫框架,它提供了一种灵活且高效的方式来提取、处理和存储互联网上的数据。本文将介绍Scrap…...
linux系统非关系型数据库redis的配置文件
redis配置文件 Redis的配置文件位于Redis安装目录下,文件名为redis.conf,配置项说明如下 Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no当Redis以守护进程方式运行时,Red…...
电力负荷预测 | 基于LSTM、TCN的电力负荷预测(Python)
文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力负荷预测 | 基于LSTM、TCN的电力负荷预测(Python) 源码设计 #------------------...
Java+SpringBoot实习管理系统探秘
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
c入门第十六篇——学生成绩管理系统
师弟:“师兄,我最近构建了一个学生成绩管理系统,有空试用一下么?” 我:“好啊!” 一个简单的学生成绩管理系统,基本功能包括:添加学生信息、显示所有学生信息、按学号查找学生信息、…...
大文件上传如何做断点续传?
文章目录 一、是什么分片上传断点续传 二、实现思路三、使用场景小结 参考文献 一、是什么 不管怎样简单的需求,在量级达到一定层次时,都会变得异常复杂 文件上传简单,文件变大就复杂 上传大文件时,以下几个变量会影响我们的用…...
SpringCloud-Eureka原理分析
Eureka是Netflix开源的一款用于实现服务注册与发现的工具。在微服务架构中,服务的动态注册和发现是必不可少的组成部分,而Eureka正是为了解决这一问题而诞生的。 一、为何需要Eureka 在微服务架构中,服务之间的协同合作和高效通信是至关重要…...
LeetCode周赛——384
1.修改矩阵(模拟) class Solution { public:vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {int n matrix.size();int m matrix[0].size();vector<int> ans(m);for(int i 0; i < m; i)for(…...
C#,巴都万数列(Padonve Number)的算法与源代码
1 巴都万数列(Padovan Sequence) 巴都万数列(Padovan Sequence)是一个整数数列。 首数个值为1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37 ... 此数列以建筑师理察巴都万命名,他的论文Dom(1994年&a…...
NSSCTF Round#18 RE GenshinWishSimulator WP
恶搞原神抽卡模拟器 看到软件的界面,大致有三种思路: 修改石头数量一直抽,如果概率正常肯定能抽到(但是估计设置的概率是0)在源码里找flag的数据把抽卡概率改成100%直接抽出来 Unity逆向,根据经验应该dnsp…...
鸿蒙系统对应安卓版本
鸿蒙系统对应安卓版本 使用安卓studio 新建一个app 然后添加代码打印: Log.d(“MainActivity”, "SDK Version: " Build.VERSION.SDK_INT); 或者把 Build.VERSION.SDK_INT 添加到显示的字符串上面 我这里 build.gradle.kts 配置 android {compileSdk…...
算法-16-并查集
并查集简介 并查集:一开始,把a,b,c放入并查集,a自己一个集合,b自己一个,c自己一个 提供的方法 1.boolean isSameSet(a,b),判断ab是否在同一个集合 2.void union(a,b),把a所…...
【C/C++】2024春晚刘谦春晚魔术步骤模拟+暴力破解
在这个特别的除夕夜,我们不仅享受了与家人的温馨团聚,还被电视机前的春节联欢晚会深深吸引。特别是,魔术师刘谦的精彩表演,为我们带来了一场视觉和心灵的盛宴。在我的博客“【C/C】2024春晚刘谦春晚魔术步骤模拟暴力破解”中&…...
Java运算符和表达式
Java运算符和表达式 和C语言一样,java也有基础的运算符和表达式,用来完成一些基础的数学计算,以及逻辑运算,我们一起来学习一下吧。 算数运算符 首先,这个算数运算符与数学中即C语言的运算符的功能一样,利…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
