Oracle 11g Rac进程启动梳理

  • RAC集群软件组件
    • CRS
    • CSS
  • RAC集群启动原理
    • 启动过程
    • 进程展示
    • 顺序分析
  • RAC故障快速定位
  • 写给读者

RAC集群软件组件


Oracle Rac集群软件有两大组件,分别为CRS和CSS组件。

CRS

CRS作用是管理集群内高可用操作的基本程序。

  1. CRS管理的任何事务都被称之为资源,数据库、实例、监听、VIP地址、应用进程等;
  2. CRS是根据存储于OCR中的资源配置信息来管理这些资源【当某一资源状态改变时,CRS进程生成一个事件】

CSS

CSS作用是管理集群节点的成员信息。

  1. 控制哪个节点为集群成员
  2. 节点加入或离开集群时通知集群成员来控制集群的配置信息
  3. 进程故障会导致集群重启

RAC集群启动原理

启动过程

  1. 操作系统守护进程 /sbin/init 调用集群软件 /etc/init.d/init.ohasd启动脚本。
  2. 集群软件启动脚本启动Oracle集群软件相应进程。

进程展示

RAC集群软件启动之后,分别有root用户和grid用户启动的后台进程。

# root用户启动的进程
[root@rac1 bin]# ps -ef | grep /u01/app/11.2.0/grid/bin | grep -v grep | grep -w root
root     23432     1  0 Nov27 ?        00:00:14 /u01/app/11.2.0/grid/bin/ohasd.bin reboot
root     23778     1  0 Nov27 ?        00:00:12 /u01/app/11.2.0/grid/bin/orarootagent.bin
root     23795     1  1 Nov27 ?        00:00:49 /u01/app/11.2.0/grid/bin/osysmond.bin
root     23822     1  0 Nov27 ?        00:00:02 /u01/app/11.2.0/grid/bin/cssdmonitor
root     23854     1  0 Nov27 ?        00:00:02 /u01/app/11.2.0/grid/bin/cssdagent
root     23988     1  1 Nov27 ?        00:01:02 /u01/app/11.2.0/grid/bin/ologgerd -M -d /u01/app/11.2.0/grid/crf/db/rac1
root     24375     1  0 Nov27 ?        00:00:08 /u01/app/11.2.0/grid/bin/octssd.bin reboot
root     24814     1  0 Nov27 ?        00:00:21 /u01/app/11.2.0/grid/bin/crsd.bin reboot
root     24973     1  0 Nov27 ?        00:00:12 /u01/app/11.2.0/grid/bin/orarootagent.bin# grid用户启动的进程
[root@rac1 bin]# ps -ef | grep /u01/app/11.2.0/grid/bin | grep -v grep | grep -v root
grid     23680     1  0 Nov27 ?        00:00:06 /u01/app/11.2.0/grid/bin/oraagent.bin
grid     23691     1  0 Nov27 ?        00:00:00 /u01/app/11.2.0/grid/bin/mdnsd.bin
grid     23713     1  0 Nov27 ?        00:00:01 /u01/app/11.2.0/grid/bin/gpnpd.bin
grid     23781     1  0 Nov27 ?        00:00:12 /u01/app/11.2.0/grid/bin/gipcd.bin
grid     23872     1  0 Nov27 ?        00:00:10 /u01/app/11.2.0/grid/bin/ocssd.bin
grid     24453     1  0 Nov27 ?        00:00:08 /u01/app/11.2.0/grid/bin/evmd.bin
grid     24922 24453  0 Nov27 ?        00:00:00 /u01/app/11.2.0/grid/bin/evmlogger.bin -o /u01/app/11.2.0/grid/evm/log/evmlogger.info -l /u01/app/11.2.0/grid/evm/log/evmlogger.log
grid     24984     1  0 Nov27 ?        00:00:05 /u01/app/11.2.0/grid/bin/oraagent.bin
grid     25142     1  0 Nov27 ?        00:00:00 /u01/app/11.2.0/grid/bin/scriptagent.bin
grid     25308     1  0 Nov27 ?        00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid     25360     1  0 Nov27 ?        00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit

顺序分析



观察以上两张图,我们可以得到如下信息:

从ohasd开始派生:

 -> orarootagent: 负责管理所有root所拥有的ohasd资源的agent代理进程-> crsd: 负责管理集群资源的主要进程-> ctssd: 集群时间同步的服务进程-> diskmon: 磁盘监控进程-> acfs: asm集群文件系统程序-> cssdagent: 负责生成cssd的代理进程-> cssd: 集群同步服务进程-> oraagent: 负责管理所有oracle所拥有的属于crsd相关资源的代理进程-> asm resource: asm实例资源-> diskgroup: 用于管理、监控asm磁盘组使用的资源-> db resource: 用来监控、管理数据库和实例使用的资源-> scan listener: 监听器资源,在scan vip上进行监听-> listener: 节点监听器资源-> services: 用来监控和管理service使用的资源-> ons: oracle通知服务-> eons: 增强的oracle通知服务-> gsd进程: 向后兼容9i的资源-> gns(可选): 网格命名服务,该服务用于scan命名解析-> orarootagent: 负责管理所有root所拥有的属于crsd相关资源的代理进程-> network resource: 监控公共网络资源-> scan vip: scan vip资源-> node vips: 每个节点1个vipz资源-> acfs registery: 加载acfs资源-> gns vip(可选)-> oraagent: 负责管理所有oracle所拥有的ohasd资源的agent代理进程-> mdnsd: dns lookup时使用的进程-> evmd: 时间监控进程-> gipcd: 内联集成和内连接节点通信时使用的进程-> gpnpd: 即插即用主进程-> cssdmonitor: 与cssdagent共同负责监控cssd和节点健康-> cssmonitor: cssd进程监控进程

RAC故障快速定位

了解了RAC集群软件的启动顺序之后,我们定位问题的能力又上升了一大截啦!后续如果遇到集群上出现故障,那么我们便可以快速定位具体组件的日志,通过组件日志找到对应的问题,然后快速解决问题啦!

# 集群软件启动日志路径
[grid@rac1 ~]$ cd $ORACLE_HOME/log
[grid@rac1 log]$
[grid@rac1 log]$ ll
total 4
drwxr-xr-x  2 grid oinstall    6 Nov 22 00:14 crs
drwxrwx--T  5 grid asmadmin   71 Nov 23 00:36 diag
drwxr-xr-t 25 root oinstall 4096 Nov 22 23:55 rac1
[grid@rac1 log]$
# 进入指定实例日志目录下
[grid@rac1 log]$ cd rac1/
# 日志结构展示
[grid@rac1 rac1]$ tree
.
├── acfs
│   └── kernel
│       ├── acfs.log.0
│       └── file.order
├── acfslog
├── acfsrepl
├── acfsreplroot
├── acfssec
├── admin
├── agent
│   ├── crsd
│   │   ├── oraagent_grid
│   │   │   ├── oraagent_grid.log
│   │   │   ├── oraagent_gridOUT.log
│   │   │   └── oraagent_grid.pid
│   │   ├── oraagent_oracle
│   │   │   ├── oraagent_oracle.log
│   │   │   ├── oraagent_oracleOUT.log
│   │   │   └── oraagent_oracle.pid
│   │   ├── orarootagent_root
│   │   │   ├── orarootagent_root.log
│   │   │   ├── orarootagent_rootOUT.log
│   │   │   └── orarootagent_root.pid
│   │   └── scriptagent_grid
│   │       ├── scriptagent_grid.log
│   │       └── scriptagent_gridOUT.log
│   └── ohasd
│       ├── oraagent_grid
│       │   ├── oraagent_grid.log
│       │   ├── oraagent_gridOUT.log
│       │   └── oraagent_grid.pid
│       ├── oracssdagent_root
│       │   └── oracssdagent_root.log
│       ├── oracssdmonitor_root
│       │   └── oracssdmonitor_root.log
│       └── orarootagent_root
│           ├── orarootagent_root.log
│           ├── orarootagent_rootOUT.log
│           └── orarootagent_root.pid
├── alertrac1.log
├── client
│   ├── clsc_10.log
│   ├── clsc_1.log
│   ├── clsc1.log
│   ├── clsc_2.log
│   ├── clsc2.log
│   ├── clsc_3.log
│   ├── clsc3.log
│   ├── clsc_4.log
│   ├── clsc4.log
│   ├── clsc_5.log
│   ├── clsc_6.log
│   ├── clsc_7.log
│   ├── clsc_8.log
│   ├── clsc_9.log
│   ├── clscfg1.log
│   ├── clscfg.log
│   ├── clsc.log
│   ├── crsctl_grid.log
│   ├── crsctl_oracle.log
│   ├── crsctl_root.log
│   ├── crswrapexece.log
│   ├── css1.log
│   ├── css.log
│   ├── gpnptool_2736.log
│   ├── gpnptool_394.log
│   ├── gpnptool_400.log
│   ├── ocr_4187_7.log
│   ├── ocrcheck_9007.log
│   ├── ocrconfig_2096.log
│   ├── ocrconfig_29902.log
│   ├── ocrconfig_32279.log
│   ├── ocrconfig_4742.log
│   ├── oifcfg.log
│   └── olsnodes.log
├── crflogd
│   ├── crflogd.log
│   └── crflogdOUT.log
├── crfmond
│   ├── crfmond.log
│   └── crfmondOUT.log
├── crsd
│   ├── crsd.log
│   └── crsdOUT.log
├── cssd
│   ├── cssdOUT.log
│   └── ocssd.log
├── ctssd
│   ├── ctssdOUT.log
│   └── octssd.log
├── cvu
│   ├── cvulog
│   │   └── cvu20211122174808.log
│   └── cvutrc
│       ├── cvuhelper.log.0
│       └── cvutrace.log.0
├── diskmon
├── evmd
│   ├── evmd.log
│   └── evmdOUT.log
├── gipcd
│   ├── gipcd.l01
│   ├── gipcd.l02
│   ├── gipcd.l03
│   ├── gipcd.log
│   └── gipcdOUT.log
├── gnsd
├── gpnpd
│   ├── gpnpd.log
│   ├── gpnpdOUT.log
│   └── rac1.pid
├── mdnsd
│   ├── mdnsd.log
│   └── mdnsdOUT.log
├── ohasd
│   ├── ohasd.log
│   └── ohasdOUT.log
├── racg
│   ├── evtf.log
│   ├── racgeut
│   ├── racgevtf
│   └── racgmain
└── srvm

我们通过观察日志的结构,不难发现,日志存放的层级与集群启动的顺序是一一对应的,这对于我们快速排查问题提供了极大的便利!

写给读者

本文的目的是深入了解集群底层运行的过程,提高运维Oracle Rac集群的能力。

你可能不知道的关于Oracle Rac的事...相关推荐

  1. install npm 到某个文件下执行_你可能不知道的 npm 依赖管理那些事

    点击上方蓝字关注我们 npm 是 Node.js 默认的.以 JavaScript 编写的包管理工具,如今,它已经成为世界上最大的包管理工具,是每个前端开发者必备的工具.不知你是否遇到过下面问题: 哎 ...

  2. 你可能不知道的Spring Boot那点事

    当前微服务的概念被炒的非常的火热,而Spring Boot则被赋予了"为微服务而生"的称号,相信看这篇文章的你,对微服务或者Spring Boot都有所了解了,我在该篇中也不再赘述 ...

  3. 我的世界java版移除猪灵了吗_我的世界:猪灵拥有三种类型?关于猪灵,你可能不知道的7件事...

    猪灵是1.16下界更新第二个快照版本20w07a加入的下界新生物,虽然上线时间已经有两个月之久,但对于大部分国内玩家来说却还是一个陌生的存在.为了让玩家更加的了解猪灵,迷恋整理了7件,你可能不知道的关 ...

  4. oracle磁盘iops,磁盘性能,你可能不知道的IOPS计算方法

    每个I/O 请求到磁盘都需要若干时间.主要是因为磁盘的盘边必须旋转,机头必须寻道.磁盘的旋转常常被称为"rotational delay"(RD),机头的移动称为"dis ...

  5. 安装oracle后在cmd,在WINDOWS上安装ORACLE RAC的注意事项

    在WINDOWS上安装ORACLE RAC的注意事项 1.检查防火墙和杀毒软件 如果不关掉防火墙,在安装CRS时,在"Oracle Clusterware Configuration Ass ...

  6. oracle rac理论知识

    oracle数据库高可靠性高性能的特性是很多企业需要的,这些年一直给各大政府企业做oracle咨询与规划,实施安装以及维护,回头看看,自己已经忘记大部分oracle rac的整体具体架构理论知识,现在 ...

  7. 数据库周刊36丨2020年8月数据库排行;云厂商腾讯云增速第一;OceanBase集群安装;Oracle RAC调整网卡MTU值;不改代码解决sql性能问题;Mysql索引研究;TiDB电子书……

    热门资讯 [1.2020年8月数据库排行:PolarDB.GoldenDB发力,云数据库和自主可控成主流] [摘要]2020年8月号的国产数据库流行度排行榜发布.本月的前9位排序依旧没有任何变化.达梦 ...

  8. 酷炫时钟_您不知道的11种酷炫形状

    酷炫时钟 Whether it's in nature, architecture or the products we use, cool shapes are everywhere around ...

  9. oracle RAC环境 1521端口NAT映射后,端口能通,数据库报ORA-12541

    在工作中,经常会遇到oracle 1521端口NAT映射后,端口能通,数据库报ORA-12541错误. 用tnsping 数据库显示正常. 联系对方说检查lisenter配置,数据库侦听是正常,内网是 ...

最新文章

  1. qq图片选择效果的处理
  2. 云服务器适合什么样的用户?
  3. BZOJ 1084: [SCOI2005]最大子矩阵
  4. c语言fgetpos的参数,C语言fgetpos()函数:获得当前文件的读写指针(转)
  5. Java的MD5加密和解密
  6. linux es数据库 head,elasticsearch安装es-sql插件
  7. DotNet中的集合对象(2): Hashtable
  8. 微信小程序生成海报功能
  9. msc用户无法登陆问题记录
  10. 你知道如何判定一个大整数为素数吗?——米勒拉宾素数判定算法
  11. Docker更改镜像源
  12. 东方式插花注重花材所表达的内容美
  13. CSS选择器大全包含nth-child和nth-of-type的区别
  14. 生活,寻找幸福的感觉
  15. 网络安全现状与未来蓝图||建立高效的网络安全体系
  16. 三剑客之Docker Swarm
  17. 详细解读petalinux的配置
  18. 删除文件右键及打开方式下的HBuiderX 已成功
  19. C语言程序设计(理论课)第八章 函数与宏定义
  20. Angular+Node实战之登陆注册

热门文章

  1. Spark大数据技术与应用期末总结大题
  2. 亚马逊买家号注册流程
  3. 计算机锁定不能强制选项无法关机,Win10无法关机只能按电源强制关机的解决方法...
  4. ERP中英文缩写汇总
  5. 计算机数学的外文翻译,计算机 数学 外文翻译 外文文献 英文文献 模糊随机森林.doc...
  6. ubuntu16.04 update 出现 aborted(core dumped)错误
  7. 【2】SCI易中期刊推荐——遥感图像领域(中科院2区)
  8. 如何打印菱形图案(C语言)
  9. 点到点轨迹规划——三次曲线,五次曲线,梯形曲线,S曲线
  10. 论语 灵公篇(笔记)