广告
返回顶部
首页 > 资讯 > 数据库 >clusterware启动顺序——OHASD
  • 186
分享到

clusterware启动顺序——OHASD

2024-04-02 19:04:59 186人浏览 八月长安
摘要

Clusterware启动顺序 [root@ebsdb1 etc]# crsctl check crs CRS-4638: oracle High Availability Servic

Clusterware启动顺序

clusterware启动顺序——OHASD

[root@ebsdb1 etc]# crsctl check crs

CRS-4638: oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

根据以上输出,集群大概可分为 4 个层次:

层次 1 : OHAS 层面,负责集群的初始化资源和进程。

层次 2 : CSS 层面,负责构建集群并保证集群的一致性。

层次 3 : CRS 层面,负责管理集群的各种应用程序资源。

层次 4 : EVM 层面,负责在集群节点间传递集群事件。

接下来详细地介绍每一个层面的启动过程:

OHASD 层面

该层面主要负责启动集群的初始化资源和进程,具体的过程如下:

1./etc/inittab 中的以下行被调用

$cat /etc/inittab|grep init.d | grep –v grep
h2:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
2. 操作系统进程 init.ohasd run 被启动,该进程负责启动 ohasd.bin 守护进程

[root@ebsdb1 etc]# ps -ef | grep ohasd | grep -v grep

root3813     1  0 Feb03 ?        00:00:00 /bin/sh /etc/init.d/init.ohasd run

root56333     1  0 Feb03 ?        01:03:52 /ebsdb/grid/11.2.0/bin/ohasd.bin reboot

而 init.ohasd 在启动 ohasd.bin 守护进程之前需要执行以下的操作。

1) 集群自动启动是否被禁用

2) GI home 所在文件系统是否被正常挂载

3) 管道文件( npohasd )是否能够被访问

[grid@ebsdb1 ~]$ ls -l /var/tmp/.oracle

total 4

srwxr-xr-x 1 grid    oinstall 0 Feb  3 10:41 mdnsd

-rwxrwxrwx 1 grid    oinstall 6 Feb  3 10:41 mdnsd.pid

prwxrwxrwx 1 root    root0 Oct 26 15:43 npohasd

对于 ohasd.bin 进程,他需要经过以下过程才能够正常运行。

1) 确认 OLR 存在,而且能够被正常访问

[grid@ebsdb1 ~]$ ls -l $GRID_HOME/cdata/

total 2928

drwxr-xr-x 2 grid oinstall      4096 Feb 14 10:21 ebsdb1

-rw------- 1 root oinstall 272756736 Feb 14 15:02 ebsdb1.olr

drwxrwxr-x 2 grid oinstall      4096 Jan 25 13:11 ebsdb-cluster

drwxr-xr-x 2 grid oinstall      4096 Oct 26 15:38 localhost

2) ohasd 所使用的套接字文件( Socket file )存在

[grid@ebsdb1 ~]$ ls -l /var/tmp/.oracle/*HAS*

srwxrwxrwx 1 root root 0 Feb  3 10:41 /var/tmp/.oracle/sebsdb1DBG_OHASD

srwxrwxrwx 1 root root 0 Feb  3 10:41 /var/tmp/.oracle/sOHASD_IPC_SOCKET_11

-rwxrwxrwx 1 root root 0 Oct 26 15:43 /var/tmp/.oracle/sOHASD_IPC_SOCKET_11_lock

srwxrwxrwx 1 root root 0 Feb  3 10:41 /var/tmp/.oracle/sOHASD_UI_SOCKET

3) ohasd 对应的日志文件能够被正常访问

[grid@ebsdb1 11.2.0]$ ls -l $GRID_HOME/log/ebsdb1/ohasd

total 106192

-rw-r--r-- 1 root root 10579981 Feb 12 16:01 ohasd.l01

-rw-r--r-- 1 root root 10520765 Feb  5 20:22 ohasd.l02

-rw-r--r-- 1 root root 10547596 Jan 24 14:24 ohasd.l03

-rw-r--r-- 1 root root 10544559 Jan 22 18:01 ohasd.l04

-rw-r--r-- 1 root root 10546879 Jan 20 21:42 ohasd.l05

-rw-r--r-- 1 root root 10551400 Jan 19 01:21 ohasd.l06

-rw-r--r-- 1 root root 10552985 Jan 17 04:50 ohasd.l07

-rw-r--r-- 1 root root 10550884 Jan 15 08:21 ohasd.l08

-rw-r--r-- 1 root root 10548055 Jan 13 11:52 ohasd.l09

-rw-r--r-- 1 root root 10548999 Jan 11 15:09 ohasd.l10

-rw-r--r-- 1 root root  3171780 Feb 14 17:03 ohasd.log

-rw-r--r-- 1 root root     1260 Feb3 10:41 ohasdOUT.log

 

如果发现 init.ohasd 进程没有出现,那么说明操作系统进程没有成功地调用 /etc/init.d/init.ohasd run 命令,比较常见的原因可能如下:

原因 1 :操作系统运行在了错误的 runlevel (可使用 who –r 查看当前的运行级别)

原因 2:/etc/rc<n>.d 当中有些脚本被挂起,导致了 S<nn>ohasd 没有被调用

原因 3 : GI 的自动启动功能被关闭( crsctl disable crs )

而对应的解决办法如下:

办法 1 :重新启动操作系统到正确的运行级别

办法 2 :手工运行 init.ohasd 脚本(例如:  nohup /etc/init.d/ohasd run & )

办法 3 :启动 GI 自动启动功能( crsctl enable crs )

 

如果发现 init.ohasd 已经启动,但是 ohasd.bin 没有被正常启动,比较常见的原因如下:

原因 1 : OLR 不能被访问或者已经丢失。

原因 2 : ohasd 对应的套接字文件无法访问或者已经丢失

原因 3 : ohasd 对应的日志文件无法被访问

而对应的解决办法如下:

办法 1: 从 OLR 备份中恢复 OLR (默认情况下,在集群安装结束后, OLR 会备份 <$GRID_HOME/cdata/< 节点名 >/backup_< 时间 >.olr> )

ocrconfig –local –restore <OLR 备份文件 >

办法 2 :重新启动 GI ,以便重建套接字文件

crsctl stop crs

crsctl start crs

办法 3 :修改 ohasd 日志文件的属性,确认它能够被访问到

-rw-r--r-- 1 root root 3171780 Feb 14 17:03 ohasd.log

当然,如果遇到了其他问题,那就需要查看 ohasd.log 来进行问题分析了

 

3.ohasd.bin 开始启动集群的初始化资源和进程

根据前面的介绍, ohasd.bin 会启动 4 个代理进程来启动所有的集群初始化资源。

oraagnet :启动 ora.asm 、 ora.evmd 、 ora.gipcd 、 ora.gpnpd 、 ora.mdnsd 等

orarootagent :启动 ora.crsd 、 ora.ctssd 、 ora.cluster_interconnect.haip 、 ora.crf 、 ora.diskmon 等

cssdagnet :启动 ora.cssd

cssdmonitor :启动 ora.cssdmonitor

如果对应的代理进程无法启动的话,那么以上的集群初始化资源也就无法启动,而代理进程无法启动的主要原因有以下两种:

原因 1 :代理进程对应的二进制文件损坏

原因 2 :代理进程的日志文件无法访问

[grid@ebsdb1 oraagent_grid]$ ls -l $GRID_HOME/log/ebsdb1/agent/ohasd/oraagent_grid

total 109976

……

-rw-r--r-- 1 grid oinstall  6895201 Feb 14 19:28 oraagent_grid.log

……

 

[grid@ebsdb1 oracssdagent_root]$ ls -l $GRID_HOME/log/ebsdb1/agent/ohasd/orarootagent_root

total 112468

……

-rw-r--r-- 1 root root  9467315 Feb 14 19:30 orarootagent_root.log

……

 

[grid@ebsdb1 oraagent_grid]$ ls -l $GRID_HOME/log/ebsdb1/agent/ohasd/oracssdagent_root

total 852

-rw-r--r-- 1 root root 865091 Feb 14 16:04 oracssdagent_root.log

 

[grid@ebsdb1 oracssdagent_root]$ ls -l $GRID_HOME/log/ebsdb1/agent/ohasd/oracssdmonitor_root

total 844

-rw-r--r-- 1 root root 856526 Feb 14 19:25 oracssdmonitor_root.log

 

对应的解决办法如下:

办法 1 :将有问题节点的代理进程二进制文件和健康节点的文件进行比较,发现不同后,把健康节点的文件复制到问题节点的对应位置。

办法 2 :确认代理进程的日志文件能够被对应的用户访问。

 

4. 集群的初始化资源开始启动

虽然 ohasd 的代理进程会同时启动所有的集群初始化资源,但是它们之间还是有依赖关系的,集群初始化资源的启动依赖关系如下:

clusterware启动顺序——OHASD

有些对集群不重要的初始化资源,在上图中并没有显示

从上面的途中大家可以看到 gipcd 、 gpnpd 、 mdnsd 负责完成集群的 bootstrap 过程; cssdagent 和 cssdmonitor 负责启动和监控 cssd 守护进程;而集群的其他初始化资源都要依赖于 cssd 。

下面对集群的 bootstrap 过程进行简单的介绍(详细的过程在 css 管理中)

1) mdnsd 守护进程被启动,并启动 mdns 服务,以便 gpnpd 能够通过 mdns 在节点之间传输 gpnp profile 文件。

2) gpnpd 守护进程被启动, gpnpd 开始读取本地节点的 gpnp profile ,之后和远程节点的 gpnpd 守护进程通信,以便获得集群中最新的 gpnp profile 信息。

3) gpnpd 启动完毕,向本地节点的其他集群初始化资源提供 gpnp profile 服务。

4) gipcd 守护进程被启动,从 gpnpd 守护进程获得集群的私网信息,并和远程节点的 gpipcd 守护进程通信,最后开监控本地节点的私网。

5) cssdagent 代理进程启动 ocssd.bin 守护进程。

6) cssdmonitor 守护进程启动,并开始监控 ocssd.bin 守护进程的状态。

在整个过程中,可能导致集群的 bootstrap 过程无法成功的主要原因如下。

原因 1 :集群中有其他的 mdns 软件运行,这会导致 GI 的 mdnsd 服务无法正常工作。

原因 2 : gpnp profile 文件中的信息出现错误,这会导致集群的 bootstrap 过程无法完成。

[grid@ebsdb1 peer]$ gpnptool get

[grid@ebsdb1 peer]$  cat $GRID_HOME/gpnp/<hostname>/profiles/peer/profile.xml

原因 3 :节点之间的网络通信存在问题,这会导致 gpnp profile 无法正常传输。

原因 4 : gpnp 的一些线程被挂起,这会导致 gpnpd 守护进程无法成功完成启动任务。

原因 5 :集群的私网网卡出现问题,这会导致 gipcd 无法和其他节点的 gipcd 进行通信或者集群没有可用的私网进行通信。

原因 6 : gipcd 存在问题,这会导致它错误地认为集群私网网卡存在问题。

原因 7 :以上守护进程的套接字文件丢失。

对应的解决方法如下。

方法 1 :停止并禁用其他的 mdns 软件。

方法 2 :如果 gpnp profile 只是在集群的某一个节点上出现了错误,可以从集群的其他节点将其复制过来。如果集群所有几点的 gpnp pfile 都出现了问题,那么就需要使用 gpnp 工具来进行修正。

下面的例子演示了如何使用 gpnp tool 修改 gpnp profile 中集群的私网信息。

1)   检查当前的 gpnp profile ,确认 gpnpd 能够通过 mdns 找到集群的其他节点。

[grid@ebsdb1 peer]$ gpnptool get

[grid@ebsdb1 peer]$ gpnptool find

2)   创建一个工作路径以用于编辑 gpnp profile

mkdir /home/grid/gpnp

export GPNPDIR=/home/grid/gpnp

$GRID_HOME/bing/gpnptool get -o=$GPNPDIR/profile.original

3)   创建一个用于修改的 gpnp profile 副本

cp $GPNPDIR/profile.original $GPNPDIR/p.xml

4)   查看 gpnp profile 的序列号和私网信息

$gpnptool getpval -p=$GPNPDIR/p.xml -prf_sq -o-

$gpnptool getpval -p=$GPNPDIR/p.xml -net -o-

5)   修改集群私网的网卡信息

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=eth2

6)   确认之前的修改

gpnptool sign -p=$GPNPDIR/p.xml -o=$GPNPDIR/p.xml -ovr -w=cw-fs:peer

7)   将修改后的 gpnp profile 应用到 gpnpd 守护进程中。

gpnptool put -p=$GPNPDIR/p.xml

8)   将改变后的 gpnp profile 推送到集群的其他节点

gpnptool find -c=< 集群名 >

gpnptool rget -c=< 集群名 >

方法 3 :确认件私网通信正常(例如:使用 ping 、 traceroute 等命令确认集群私网的连通性)

方法 4 :在操作系统层面重新启动 gpnp 守护进程,例如: kill -9 <gpnp 进程 ID>

当 gpnpd 守护进程被总之之后,对应的 ohasd 代理进程 oraagent 会及时发现这一情况,并启动新的 gpnpd 守护进程。

方法 5 :确认集群私网通信正常(例如:使用 ping 、 traceroute 等命令确认集群私网的连通性)

方法 6 :在操作系统层面重新启动 gipcd 守护进程,例如: kill -9 <gipcd 进程 ID>

当 gipcd 守护进程被总之之后,对应的 ohasd 代理进程 oraagent 会及时发现这一情况,并启动新的 gipcd 守护进程。

方法 7 :重新启动 GI ,以便重建套接字文件。

crsctl stop crs

crsctl start crs


您可能感兴趣的文档:

--结束END--

本文标题: clusterware启动顺序——OHASD

本文链接: https://www.lsjlt.com/news/47721.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • clusterware启动顺序——OHASD
    Clusterware启动顺序 [root@ebsdb1 etc]# crsctl check crs CRS-4638: Oracle High Availability Servic...
    99+
    2022-10-18
  • win7启动顺序怎么更改
    这篇“win7启动顺序怎么更改”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7启动顺序怎么更改”文章吧。win7启动顺...
    99+
    2023-07-01
  • ORACLE RAC 的启动和关闭顺序
    之前关闭集群数据库的时候,直接执行OS命令shutdown -h now ,后来发现启动OS之后很多服务都是UNKNOW状态,想想自己那样关闭数据库太过于"暴力",决定还是按照"温和"的方式去关闭集群数据库...
    99+
    2022-10-18
  • 改变Windows服务的启动顺序
    要改变Windows服务的启动顺序,只要修改Windows的注册表就可 以了。任何Windows服务的注册信息可以在注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serv...
    99+
    2023-05-24
    改变Windows服务的启动顺序 顺序 Windows 启动
  • windows如何设置开机程序启动顺序
    这篇文章主要介绍windows如何设置开机程序启动顺序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!按组合键win+R打开运行窗口,接着在命令框中输入“regedit”,按回车键执行。打开注册表后,在左侧列表中依次点...
    99+
    2023-06-28
  • Docker-compose编排微服务顺序启动
    docker-compose可以方便组合多个 docker 容器服务, 但是, 当容器服务之间存在依赖关系时, docker-compose 并不能保证服务的启动顺序。docker-compose 中的 depends_on 配置是容器的启...
    99+
    2023-01-31
    顺序 Docker compose
  • SpringBoot之Order注解启动顺序说明
    目录Order注解启动顺序order的规则见下它们的启动日志@Order注解提供消费顺序@org.springframework.core.annotation.OrderOrder...
    99+
    2022-11-12
  • Win7 双系统的启动顺序设置
    不过有一个麻烦,那就是系统启动顺序的问题,Windows 7安装成功后就把自己设置为默认启动。那么要把以前的Windows版本设置为启动默认项,该怎么修改呢?方法如下。   启动电脑进入Windows 7后,用鼠标右键单...
    99+
    2023-05-25
    Win7 双系统 顺序 启动
  • Oracle中RAC 11.2.0.4.0 OHASD服务无法启动怎么办
    这篇文章将为大家详细讲解有关Oracle中RAC 11.2.0.4.0 OHASD服务无法启动怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 ...
    99+
    2022-10-19
  • win10怎么设置双系统启动顺序
    这篇文章主要介绍了win10怎么设置双系统启动顺序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win10怎么设置双系统启动顺序文章都会有所收获,下面我们一起来看看吧。1,登录你的Win10系统,找到“此电脑”...
    99+
    2023-06-28
  • oracle 10G rac启动与关闭正常顺序
    [root@node-rac1 ~]# su - oracle关闭node-rac1[oracle@node-rac1 ~]$ cd /app/crs/product/10201/crs/bin/[orac...
    99+
    2022-10-18
  • oracle服务器启动的顺序是什么
    Oracle服务器启动的顺序如下:1、确保操作系统已经启动。2、启动监听器(LSNRCTL)。3、启动Oracle数据库实例。4、启...
    99+
    2023-03-22
    oracle服务器启动 oracle服务器 服务器
  • Ubuntu怎么调整多系统的启动顺序
    本篇内容介绍了“Ubuntu怎么调整多系统的启动顺序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们进入Ubuntu后,打开终端,先备份一...
    99+
    2023-06-13
  • aix7.1安装12c执行root.sh无法启动ohasd服务案例
    一、安装环境操作系统版本:IBM AIX 7100-03-05-1524ORACLE版本:ORACLE DATABASE 12C 12.1.0.2.0-64BIT RAC 二、安装报错该环境安装的...
    99+
    2022-10-18
  • Shell脚本如何控制docker容器启动顺序
    这篇文章将为大家详细讲解有关Shell脚本如何控制docker容器启动顺序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.遇到的问题在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能...
    99+
    2023-06-07
  • win8和fedora 19启动顺序设置全程图解
      利用周末时间又捣鼓了fedora一次,找到了篇不错的文章,是的启动顺序默认使用win 8,以前试过直接修改grub,看到这篇文章的效果好像不错,就按照说明试了试,效果挺满意的,只不过win 8 选择了启...
    99+
    2022-06-04
    顺序 全程 fedora
  • 怎么设置CentOS服务的开机启动顺序
    本篇内容介绍了“怎么设置CentOS服务的开机启动顺序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!打开/etc/init.d下的脚本,查找...
    99+
    2023-06-10
  • MySQL读取配置文件的顺序和启动方式以及启动原理
    本篇内容主要讲解“MySQL读取配置文件的顺序和启动方式以及启动原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL读取配置文件的顺序和启动方式以及启动...
    99+
    2022-10-18
  • ASP.NETCore启动地址配置方法及优先级顺序
    目录一、设置方法1.applicationUrl属性2.环境变量3.命令行参数4.UseUrls方法5.UseKestrel方法二、优先级结论:默认情况下,ASP.NET Core使...
    99+
    2022-11-13
  • 如何在VMware ESXi中调整虚拟机启动顺序
    默认情况下,位于VMWare ESXi(免费虚拟机监控程序)或VMWare Workstation上的虚拟机不会在主机启动时自动启动。这意味着ESXi/Workstation 主机重新启动(计划重新启...
    99+
    2023-10-10
    服务器 经验分享
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作