oracle 12.2 rac权限问题Linux-x86_64 Error: 13: Permission denied-程序员宅基地

技术标签: 12c grid  权限  oracle rac12.2  

1、故障背景

现场不知道为啥在rac2节点上执行了chmod 777 /oracle,导致oracle和grid的权限全部变掉了。通过核查\库的不正常然后重启了库发现库起不来了。根据现场的描述,目前只更改了rac2节点的权限,没有更改rac1的节点权限。

2、解决思路

目前有两种解决思路:

2.1、使用oracle官方方法

正确安装完集群软件后,在$GRID_HOME/crs/utl目录下会生成两个文件crsconfig_dirs、crsconfig_fileperms记录了核心文件和文件夹的权限,恢复也很方便。

使用root用户执行:

for 11.2

#cd <GRID_HOME>/crs/install/

#./rootcrs.pl -init

for 12c以上

#cd <GRID_HOME>/crs/install/

#./rootcrs.sh -init

2.2、使用操作系统权限设置命令getfacl,setfacl

通过节点rac1的正常环境,获取对应/oracle目录的用户权限,然后在传到rac2上去做恢复。

本例我们采用本方法。以下是我们找了一套测试rac环境,来测试这种场景下的恢复。

3、测试恢复步骤

3.1、首先备份rac2的目录权限
root@rac2[/soft/backup]#getfacl -pR /u01/app >/soft/backup/backup.txt

3.2、更改rac2的权限为777
root@rac2[/soft/backup]#chmod -R 777 /u01/app

3.3、测试停掉rac2上面的数据库实例然后在起,看能否起来
grid@rac2[/home/grid]$srvctl stop instance -d test -n rac2
grid@rac2[/home/grid]$crsctl stat res -t
ora.test.db
      1        ONLINE  ONLINE       rac1                     Open,HOME=/u01/app/o
                                                             racle/product/12.1.0
                                                             ,STABLE
      2        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
3.4、再次启动,意料之中的报错了
grid@rac2[/home/grid]$srvctl start instance -d test -n rac2
PRCR-1013 : Failed to start resource ora.test.db
PRCR-1064 : Failed to start resource ora.test.db on node rac2
CRS-5017: The resource action "ora.test.db start" encountered the following error: 
ORA-00205: error in identifying control file, check alert log for more info
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/grid/diag/crs/rac2/crs/trace/crsd_oraagent_oraclerac.trc".

CRS-2674: Start of 'ora.test.db' on 'rac2' failed
grid@rac2[/home/grid]$

3.5、我们check一下alert日志
grid@rac2[/home/grid]$locate alert_test2.log
/u01/app/oracle/diag/rdbms/test/test2/trace/alert_test2.log
2019-12-19T16:30:30.255541+08:00
Error attempting to elevate LMS1's priority: no further priority changes will be attempted for this process
.....
Decreasing number of high priority LMS from 2 to 0
2019-12-19T16:33:31.842137+08:00
WARNING: failed to register ASMB0 with ASM instance
2019-12-19T16:33:31.842550+08:00
Errors in file /u01/app/oracle/diag/rdbms/test/test2/trace/test2_asmb_25121.trc:
ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
Linux-x86_64 Error: 13: Permission denied
Additional information: 6761
Additional information: 5996550
Stopping background process RBAL
2019-12-19T16:33:32.844553+08:00
WARNING: ASMB0 exiting with error
2019-12-19T16:33:34.845548+08:00
Starting background process ASMB
2019-12-19T16:33:34.862397+08:00
ASMB started with pid=44, OS id=29615
2019-12-19T16:36:35.670841+08:00
WARNING: failed to register ASMB0 with ASM instance
WARNING: ASMB0 exiting with error
2019-12-19T16:36:35.700823+08:00
Starting background process ASMB
2019-12-19T16:36:35.717018+08:00
ASMB started with pid=44, OS id=14051
2019-12-19T16:39:36.844672+08:00
WARNING: failed to register ASMB0 with ASM instance
WARNING: ASMB0 exiting with error
2019-12-19T16:39:36.848684+08:00
ORA-00210: cannot open the specified control file
ORA-00202: control file: '+DATA/test/control02.ctl'
ORA-17503: ksfdopn:2 Failed to open file +DATA/test/control02.ctl
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
Linux-x86_64 Error: 13: Permission denied
Additional information: 6761
Additional information: 5996550
ORA-00210: cannot open the specified control file
ORA-00202: control file: '+DATA/test/control01.ctl'
ORA-17503: ksfdopn:2 Failed to open file +DATA/test/control01.ctl
ORA-15001: diskgroup "DATA" does not exist or is not mounted

ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
Linux-x86_64 Error: 13: Permission denied
Additional information: 6761
Additional information: 5996550
2019-12-19T16:39:36.850963+08:00
ORA-205 signalled during: ALTER DATABASE MOUNT /* db agent *//* {2:18183:4569} */...
2019-12-19T16:39:39.036289+08:00
License high water mark = 2
2019-12-19T16:39:39.036741+08:00
USER (ospid: 18565): terminating the instance
2019-12-19T16:39:40.040061+08:00
Instance terminated by USER, pid = 18565
报了一堆这样的错,其实你去检查磁盘组是mount的和控制文件啥的也都是存在的,有个Linux-x86_64 Error: 13: Permission denied,这个一般就是<ORACLE_HOME>/bin/oracle文件的权限导致的,很明显这个地方我们改掉了/u01/app下所有的文件权限。

3.6、获取rac1的权限
我们只改了rac2的/u01/app权限,rac1的权限是正常的,所以我们通过rac1的权限来恢复rac2
root@rac1[/root]#getfacl -pR /u01/app >/soft/backup.txt

3.7、传到rac2
root@rac1[/root]#getfacl -pR /u01/app >/soft/backup.txt
root@rac1[/root]#scp /soft/backup.txt rac2:/soft/backup_rac1.txt
backup.txt                                                                                      100%   24MB  77.3MB/s   00:00    
root@rac1[/root]#

3.8、替换/soft/backup_rac1.txt中主机名,数据库名,asm名
sed -i 's/rac1/rac2/g' /soft/backup_rac1.txt
sed -i 's/test1_/test2_/g' /soft/backup_rac1.txt
sed -i 's/ASM1/ASM2/g' /soft/backup_rac1.txt
注意这边有多少个实例都要改多少个,我们这边只有一个test库,所以只需要改test对应的实例,可以通过如下命令获取有多少个库
grid@rac1[/home/grid]$srvctl config database
joyce
test
上面获取到了两个库,joyce是rac one node单节点,所以只在rac1上有,rac2上并没有,不需要改。
root@rac2[/root]#sed -i 's/rac1/rac2/g' /soft/backup_rac1.txt
root@rac2[/root]#sed -i 's/test1_/test2_/g' /soft/backup_rac1.txt
root@rac2[/root]#sed -i 's/ASM1/ASM2/g' /soft/backup_rac1.txt

3.9、使用修改过的权限文件恢复rac2
setfacl --restore=/soft/backup_rac1.txt
该命令遇到文件不存在的会报错并跳过错误继续执行下面的所有文件,不会终止,所以不用担心文件不存在报错的问题。

3.10、检查关键文件权限
oraclerac@rac2[/home/oraclerac]$ll $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oraclerac oinstall 408857200 Dec 19 12:38 /u01/app/oracle/product/12.1.0/bin/oracle
oraclerac@rac2[/home/oraclerac]$
发现oracle文件权限已经回来了。

3.11、尝试再次启动test实例
grid@rac2[/home/grid]$srvctl start instance -d test -n rac2
grid@rac2[/home/grid]$crsctl stat res -t
ora.test.db
      1        ONLINE  ONLINE       rac1                     Open,HOME=/u01/app/o
                                                             racle/product/12.1.0
                                                             ,STABLE
      2        ONLINE  ONLINE       rac2                     Open,HOME=/u01/app/o
                                                             racle/product/12.1.0
                                                             ,STABLE

--------------------------------------------------------------------------------
发现已经可以起来了。

3.12、继续测试oracle官方提供的方法
停rac2
grid@rac2[/home/grid]$srvctl stop instance -d test -n rac2

3.13、修改rac2上的/u01/app目录权限
root@rac2[/root]#chmod -R 777 /u01/app

3.14、验证权限变了
grid@rac2[/home/grid]$ll $ORACLE_HOME/bin/oracle
-rwxrwxrwx 1 grid oinstall 373556656 Nov 13 22:21 /u01/app/grid/product/bin/oracle

3.15、此时起仍然起不来。

3.16、去grid_home/crs/install目录
cd <GRID_HOME>/crs/install/
root@rac2[/u01/app/grid/product/crs]#cd /u01/app/grid/product/crs/install
root@rac2[/u01/app/grid/product/crs/install]#./rootcrs.sh -init
/u01/app/grid/product/perl/bin/perl: symbol lookup error: /root/perl5/lib/perl5/auto/XML/Parser/Expat/Expat.so: undefined symbol: Perl_xs_apiversion_bootcheck
The command '/u01/app/grid/product/perl/bin/perl -I/u01/app/grid/product/perl/lib -I/u01/app/grid/product/crs/install /u01/app/grid/product/crs/install/rootcrs.pl -init' execution failed
很遗憾,报错了,这个错误是perl的版本问题,搞起来还是比较麻烦的。建议使用上面那种方式。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kadwf123/article/details/103619433

智能推荐

【python爬虫专项(9)】哪吒之魔童降世影片的海报爬取_python 爬取电影海报-程序员宅基地

文章浏览阅读1.8k次。以哪吒之魔童降世影片的海报为例进行图片爬取参考网址:哪吒之魔童降世官方海报爬虫逻辑:【分页网页url采集】-【数据采集】-【保存图片】经过前两篇文章的实践,可以发现两种爬虫逻辑各有优缺点,逻辑(一)可以获得相对详细的信息,但是需要从主url中获取分页url再进行数据的爬取,很消耗时间,而逻辑(二)则是直接获取在第一个url上的信息,爬取即可,很省时,当然相对地获取的信息也就较少一些。而这次..._python 爬取电影海报

JEB 3.7.0 Merry Xmas Edition by DimitarSerg-程序员宅基地

文章浏览阅读1.3k次。1. Maximum license type (copying, scripts, etc. work now).2. Fixed integrity check #1.3. Fixed integrity check #2.4. All the telemetry has been cut out.5. Removed the update checks and other shit ..._jeb 3.7.0

《Orthogonal Time Sequency Multiplexing Modulation: Analysis and Low-Complexity Receiver Design》论文笔记_otsm-程序员宅基地

文章浏览阅读737次。1.标题Orthogonal Time Sequency Multiplexing Modulation: Analysis and Low-Complexity Receiver Design2.作者Tharaj Thaj, Emanuele Viterbo, and Yi Hong3.关键词OTFS,WHT,OTSM,Delay_sequency4.词汇OTFS正交时频空间OTSM正交时间序列复用delay_sequency延迟序列delay_Dopp_otsm

【三相旋转磁场】旋转磁场直到指定数量的周期(Matlab代码实现)-程序员宅基地

文章浏览阅读844次,点赞16次,收藏20次。【三相旋转磁场】研究涉及了对旋转磁场直到指定数量的周期的详尽探索,并且在研究过程中绘制了磁场随时间变化的图表。本文将深入探讨三相电机中磁场的旋转特性,包括磁场的形成过程、随时间的演变以及对电机性能的影响。通过对旋转磁场的系统分析,读者将能够更全面地理解三相电机工作原理,从而为电力系统和电机控制领域的进一步研究和应用提供坚实的理论基础。通常情况下,可以通过控制三个相位电流的频率和相位差来控制旋转磁场的速度和方向。要让这个磁场旋转到指定数量的周期,需要控制三个相位电流的频率和相位差。行百里者,半于九十。

大华工业相机SDK【QT+ C++】vs2015配置环境_c++调用华睿工业相机sdk-程序员宅基地

文章浏览阅读4.8k次,点赞3次,收藏34次。安装华睿相机的驱动:http://download.huaraytech.com/pub/sdk/Ver2.2.3/Windows/2.2.3版本里面增加QT调用的例程,很详细另有Document文件夹下的相关文件文档,配置可以进行参考本文对在调试需求下配置1、环境变量:自动安装的话,环境变量会自动添加,可以不动;2、3、解决方案,添加头文件和使用命名空间..._c++调用华睿工业相机sdk

java 库存 进销存 商户 多用户管理系统 SSM springmvc 项目源码-程序员宅基地

文章浏览阅读112次。统介绍:1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用)2.springmvc +spring4.3.7+ mybaits3.3 SSM 普通java web(非maven, 附赠pom.xml文件) 数据库:mysql3.开发工具:myeclipse eclipse idea 均可, 没有限制. 我这边myeclipse 2014 导出..._spring库存系统

随便推点

WEBSHELL-程序员宅基地

文章浏览阅读327次。<?php/*****************************************************************************===================== 请误用于非法用途,造成一切后果与本人无关。====================发布此版本是为了纪念安全天使曾经的辉煌。感谢你们与我一同走过:Sniper\Super...

国内四家AI大模型---转自今日头条|产业互联网研习社_头条的大模型-程序员宅基地

文章浏览阅读326次。笔者主要介绍国内四家AI大模型相关情况_头条的大模型

自定义RatingBar评分动画控件_android 打分星星动画-程序员宅基地

文章浏览阅读541次。KRatingBar先说说,这个控件存在的意义(和原生RatingBar相比):1.自动排列:指定星星数量后,星星自动均等排列2.星星点击动画:算是满足一丢丢少女心吧3.星星数量脱离了RatingBar宽度的控制4.避免星星出现拖影和“流泪”现象5.星星的样式直接调用res的drawable,不用再单独去定义个layer-list总之就是使用更方便一点吧。请看效果:为啥要..._android 打分星星动画

DB2导入数据时乱码问题-程序员宅基地

文章浏览阅读2k次。1.由于导入import导入数据时乱码,一直找不到解决办法,于是就用load导入LOAD后,发现某些表检查挂起( 原因码为 "1",所以不允许操作 SQLSTATE=57016)解决办法:set integrity for xxxxxx immediate checked2.表锁定(原因码为7)解决办法:reorg table xxxx3.去重select di..._db2 export 默认编码

Java基础教程(3)-Java变量和数组-程序员宅基地

文章浏览阅读237次。定义一个整型变量num:num是标识符号,也叫变量名称,int是变量类型, 10是初始值可选变量分为两种:基本类型的变量和引用类型的变量。在Java中,所有的变量必须先声明再使用。基本的变量声明方法如下:type是Java的基本类型之一,或类及接口类型的名字。标识符(identifier)是变量的名字,指定一个等号和一个值来初始化变量。请记住初始化表达式必须产生与指定的变量类型一样(或兼容)的变量。声明指定类型的多个变量时,使用逗号将各变量分开;

yarn 安装依赖报错 error An unexpected error occurred: https://registry.yarnpkg.com“-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏4次。yarn 安装依赖报错 error An unexpected error occurred: https://registry.yarnpkg.com“