/var/tmp/.oracle权限导致RAC节点被T出集群

/var/tmp/.oracle权限导致RAC节点被T出集群

@(Oracle)

1. 项目背景

项目组假期回来上班发现无法使用系统,自己排查后发现没有启动监听,在联系我排查后发现是RAC环境,在一节点上可以发现集群没有启动。

[grid@oradb1 ~]$ crsctl check cluster
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager

将这情况反馈给项目组后,客户协调了集群安装人员来进行处理,我就停下让对方人员处理。

晚点的时候,项目经理联系我:第三方服务商人员无法搞定或者根本没有排查,请求我来解决。

TIM图片20171011161935.png

2. 恢复系统

确认好是RAC环境,如果是一节点无法启动,那对我这个数据库服务是没有影响的,还有二节点可以提供服务。

检查二节点和三节点的情况,发现安装人员没有对这两个节点配置环境变量,导致所有命令都需要用绝对路径,有些文件路径也没法知道,需要和一节点进行匹配,很烦。

[grid@oradb2 ~]$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

查看二节点和三节点的集群情况,发现是在正常运行的,那系统为什么无法使用呢?
检查应用的配置,发现TNS配置的只有节点1的IP,根本没用到RAC负载均衡功能。
和项目人员沟通后,配置了节点二、节点三的IP地址,系统恢复。

3. 修复节点一

在处理节点一故障时,分析问题的原因就需要抽丝剥茧,难免会走错方向。
检查一节点的日志文件,比较重要的就是ohasd.logalertoradb1.log

3.1 弯路一:存储

检查alertoradb1.log日志,发现在10月1日时节点一就已经被T出集群。

[/g01/grid/app/11.2.0/grid/bin/oraagent.bin(9168)]CRS-5011:Check of resource "ORCL" failed: details at "(:CLSN00007:)" in "/g01/grid/app/11.2.0/grid/log/oradb1/agent/crsd/oraagent_oracle/oraagent_oracle.log"
2017-10-01 12:06:32.773: 
[cssd(8096)]CRS-1649:An I/O error occured for voting file: /dev/asm-diskc; details at (:CSSNM00060:) in /g01/grid/app/11.2.0/grid/log/oradb1/cssd/ocssd.log.
2017-10-01 12:06:32.773: 
[cssd(8096)]CRS-1649:An I/O error occured for voting file: /dev/asm-diskc; details at (:CSSNM00059:) in /g01/grid/app/11.2.0/grid/log/oradb1/cssd/ocssd.log.
2017-10-01 12:06:36.773: 
[cssd(8096)]CRS-1649:An I/O error occured for voting file: /dev/asm-diskc; details at (:CSSNM00060:) in /g01/grid/app/11.2.0/grid/log/oradb1/cssd/ocssd.log.
2017-10-01 12:06:44.773: 
[cssd(8096)]CRS-1649:An I/O error occured for voting file: /dev/asm-diskc; details at (:CSSNM00060:) in /g01/grid/app/11.2.0/grid/log/oradb1/cssd/ocssd.log.

根据日志的信息,表决盘/dev/asm-diskc出现IO错误
检查ASM的权限、用户在一节点上都是正确的,在测试磁盘也能正常使用。
dd if=/dev/asm-diskc of=/opt/ count=1 bs=512
初步判断,存储应该没有问题,继续分析。
但是在分析中,发现了一个安装的问题,只有一块ASM磁盘组+DATADG,也就是说,OCR文件、数据文件、控制文件等等文件都放在一个磁盘组里。

3.2 弯路二:网络故障

检查oraagent_grid.log日志查看具体详细信息,可以看到如下报错:

[  clsdmc][2973124352]Fail to connect (ADDRESS=(PROTOCOL=ipc)(KEY=oradb1DBG_MDNSD)) with status 9
2017-10-10 15:15:38.481: [ora.mdnsd][2973124352]{0:0:605} [start] Error = error 9 encountered when connecting to MDNSD
2017-10-10 15:15:39.481: [ora.mdnsd][2973124352]{0:0:605} [start] without returnbuf
2017-10-10 15:15:39.647: [ COMMCRS][2979428096]clsc_connect: (0x7f5f94065760) no listener at (ADDRESS=(PROTOCOL=ipc)(KEY=oradb1DBG_MDNSD))

看到Fail to connect (ADDRESS=(PROTOCOL=ipc) 经验主义告诉我可能是和网络有关的问题,检查网络相关

  • 网卡信息没有问题
  • IP也没有变更
  • 私网IP也能ping通
  • ...

看来,应该也不是网络问题,继续分析。

3.3 正确路线:/var/tmp/.oracle

正在陷入困惑时,发现报错信息提到MDNSD守护进程Error = error 9 encountered when connecting to MDNSD
可以查看下MDNSD的日志信息,分析,为什么连不上MDNSD
查看日志$ORACLE_HOME/log/oradb1/mdnsd/mdnsd.log
看到有明显的报错信息:

2017-10-09 10:22:53.400: [ default][4201023232]mdnsd START pid=7996 
2017-10-09 10:22:53.408: [ COMMCRS][4192470784]clsclisten: Permission denied for (ADDRESS=(PROTOCOL=ipc)(KEY=oradb1DBG_MDNSD))

2017-10-09 10:22:53.408: [  clsdmt][4194572032]Fail to listen to (ADDRESS=(PROTOCOL=ipc)(KEY=oradb1DBG_MDNSD))
2017-10-09 10:22:53.408: [  clsdmt][4194572032]Terminating process
2017-10-09 10:22:53.408: [    MDNS][4194572032] clsdm requested mdnsd exit
2017-10-09 10:22:53.409: [    MDNS][4194572032] mdnsd exit
2017-10-09 10:24:58.452: [ default][3607267072]

可以看到明显提示是Permission denied,看来是有某些文件的权限不对。
Metalink查看相关资料,在Troubleshoot Grid Infrastructure Startup Issues (文档 ID 1050908.1) 找到了问题解决。

文档中介绍:

Network Socket File Location, Ownership and Permission

Network socket files can be located in /tmp/.oracle, /var/tmp/.oracle or /usr/tmp/.oracle
When socket file has unexpected ownership or permission, usually daemon log file (i.e. evmd.log) will have the following:
2011-06-18 14:07:28.545: [ COMMCRS][772]clsclisten: Permission denied for (ADDRESS=(PROTOCOL=ipc)(KEY=racnode1DBG_EVMD))
2011-06-18 14:07:28.545: [  clsdmt][515]Fail to listen to (ADDRESS=(PROTOCOL=ipc)(KEY=lena042DBG_EVMD))
2011-06-18 14:07:28.545: [  clsdmt][515]Terminating process
2011-06-18 14:07:28.559: [ default][515] EVMD exiting on stop request from clsdms_thdmai

可以看见,文档介绍如果/tmp/.oracle/var/tmp/.oracle/usr/tmp/.oracle权限出现问题,就会遇到相应的错误。
检查节点一对应文件的权限信息:

oradb1.png

可见节点一 /var/tmp/.oracle下文件权限信息是oracle:oinstall

对比节点二(节点二正常,可以加入进集群)对应文件的权限信息:

oradb2.png

可见节点一 /var/tmp/.oracle下文件权限信息是oracle:oinstall

至此,问题原因找到,只要修改对应的文件夹权限信息即可

3.4 解决

  1. 删除此目录下所有文件
    rm -rf /var/tmp/.oracle

  2. 重启集群
    这步我选择了更偷懒的方法,直接重启服务器,让RAC自己去开机加入集群的特性自己完成。

root@oradb1 bin]# ./crsctl start cluster -all
CRS-4690: Oracle Clusterware is already running on 'oradb1'
CRS-4690: Oracle Clusterware is already running on 'oradb2'
CRS-4690: Oracle Clusterware is already running on 'oradb3'

至此,我们将节点一成功恢复,完成了第三方服务商也棘手的问题。

4. 知识点

Clusterware Startup Sequence

下图是集群启动时会做的检查,任一点出现问题都会导致集群无法启动:

Clusterware Startup Sequence.png

/var/tmp/.oracle目录下文件在安装完RAC生成,之后每次启动集群进行检查:

  • 如果这些文件存在,进行验证
  • 如果不存在,重新生成。

5. 总结

  1. 这套RAC安装的时候就有一些问题,二、三节点没环境变量,磁盘组只有一块等等...
  2. 至于为什么/var/tmp/.oracle文件权限信息会变,和项目组沟通10月1日那天切换过存储控制器,集群相关的存储、网络、主机做变更的时候一定要先关闭集群。
  3. 对于这个问题的解决,一定要对Cluster 的启动顺序有一定了解,还要对MDNSD这些守护进程关键字足够敏感。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容