环境
操作系统 | CentOS release 6.9 (Final) |
---|---|
数据库版本 | Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production(2节点相同版本grid集群环境) |
故障简介
*有个同事初装RAC,觉得参照文档不够,可能涉及个别参数计算吧,于是打开生产RAC集群cat查看配置,结果误操作,在生产RAC节点1上面执行: *
chown -R grid:asmadmin /u01
chmod -R 755 /u01
*然后给我说她好像操作错服务器了,我瞬间有点头疼,于是第二天果然没时间起来洗头了 ^ _^ *
我首先查看集群状态:
1 | crsctl stat res -t # 使用root执行,2节点资源看起来都正常,主要是没重启服务,所以权限改了暂时还没蹦 |
然后查看数据库alert日志,有很多权限错误报出来,我用oracle用户去ORACLE_HOME/bin下面一看,oracle文件也是755了,那新的服务器进程估计是起不来,估计会有问题,我为了不影响后面进来的服务,决定把vip先从node01转移到node02:
1 | status vip -node node01 # 输出node01 vip地址信息 |
由于在中午,出问题比较严重,也比较忙,所以决定等晚上下班后在修复node01问题,出事了影响也比较小。
然后又怕集群node01启动新进程故障,导致影响服务,于是乎直接把node01节点停止了(其实这一步错了,应该先进性集群检查一下组件资源的,关闭就校验不了, 后面自己实验机上面试试,看看集群校验后能不能简单修复: cluvfy comp software -n all -verbose)
1 | crsctl stop crs # 如果异常 加上 -f |
晚上开搞,原以为把grid和oracle用户的$ORACLE_HOME/bin给tar -cpf带权限打包和解压恢复过去,然后启动集群,结果和意料中一样,起不来,查看集群日志很少,就报错不能获取chm资源信息,好像是集群健康监控资源,可能是集群pmon进程有关,不太懂。
于是只能Google和mos,找到2个itpub教程和mos教程。
正文:节点集群恢复
如果没有mos账号不方便,可以使用下面脚本,我将权限收集脚本放于这里:
1 | touch permission.pl # 在 node02 正确权限的节点使用 root 执行 |
1 | #!/usr/bin/perl -w |
1 | # 将 restore-perm-<timestamp>.cmd 脚本拷贝到 node01,使用root执行,恢复 node01 权限 |
此时,大部分重要文件权限应该都恢复了,少部分日志或者其他文件,由于2节点不全部一致,所以没办法,这是一个小隐患(所以还是推荐删除节点,再把节点添加进来,只是相对麻烦一些)但启动集群还是报错,和之前无区别,报错日志很少,卡很久才提示还是集群资源chm无法获取,这时再重新初始化集群即可。
1 | cd /u01/app/12.2.0/grid/crs/install |
至此,本次RAC node01 chmod和chown误操作恢复!
因水平有限,如果有误,欢迎指正,不喜勿喷,希望能帮到大家 ^ · ^
参考大神博客和mos文档