甲:快快快上来看下数据库重启起不来了!
我:大哥,大白天的重启数据库!
甲:不是说导数据嘛,报权限不足,按网上的步骤改了权限,然后重启数据库
我:啥权限?!!命令是?
甲:chown -R oracle:oinstall /oracle
我:…… 没事你们RAC另一个节点不动就行。
甲:另一个节点也改了,还没重启
我:……(生无可恋)
干运维这行,虽说擦屁股救火是家常便饭,但还是最怕查询问题找百度的「神」队友。
大家知道众多数据库软件中,Oracle权限相对复杂,安装完目录下上千个文件,用户有oracle、grid、root之分,组也有oinstall、dba、oper、asmadmin,当集群和数据库软件意外都被chown -R误操作时,由于权限问题将导致集群和数据库都无法启动,遇到此类问题如果人肉比对修改,估计没个一天下不来。
有没有更简便高效的方法呢?
别慌张!下面,就让小编给大家介绍几种快速恢复的方法:
软件权限恢复
关闭问题节点集群和数据库
方法一、使用Oracle官方方法
正确安装完集群软件后,在$GRID_HOME/crs/utl目录下会生成两个文件crsconfig_dirs、crsconfig_fileperms记录了核心文件及文件夹的权限,恢复也很方便。
root用户执行:
方法二、使用操作系统权限设置命令getfacl、setfacl
找一套运行正常的环境进入/oracle目录,使用getfacl收集当前目录下所有文件权限。
替换backup.txt中的主机名、ASM名和数据库名。
快速替换小技巧::1,$s/rac1/rac2/g (替换文中rac1为rac2)
拷贝至当前需要恢复的环境/oracle目录下执行恢复
getfacl、setfacl简单使用方法介绍,这里不做展开有兴趣的小伙伴可以自行查询官方使用详解。
上述两种方法都能实现恢复,小编更推荐第二种,第一种限制及bug较多成功率不高。当然还有方法三,结合操作系统命令find -uid和chown,先卖个关子有兴趣的小伙伴可以先思考,有思路了随时与小编交流。
此时软件权限已经基本修复完成集群可以正常启动,但启动数据库还是报错。
这个报错经常打补丁的小伙伴一定不陌生,对于存在asmadmin组,在打补丁过程中oracle执行文件权限发生了改变与ASM磁盘组权限不一致。此案例需要考虑的关键两个文件。
处理方法:
此时整个恢复就完成了,数据库可以正常打开。
参考文档:
✦ Database Will Not Mount: ORA-15025, ORA-27041, ‘Permission denied’, ORA-15081 (Doc ID 1378747.1)
✦ How to check and fix file permissions on Grid Infrastructure environment (Doc ID 1931142.1)
最后,给各位亲的一点温馨提醒:
1、有问题少用百度(这个大家懂的),无法判断命令危险性的时候不要在生产环境操作,有条件可以咨询专业人员。
2、规范自己操作,操作生产库和操作测试库的窗口尽量不要同时开启,避免误切(不要抱有侥幸,常在河边走,就算老司机也有失误的时候)。
美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。
来源:freebuf.com 2020-06-10 10:10:58 by: database
请登录后发表评论
注册