rac下更改数据库的OS用户名引起crs服务失败

一.问题描述
oracle版本:11.2.0.4 rac  
os中更改用户名:usermod -l oraabc oramdabc
将数据库的os用户由oramdabc改为oraabc后,出现如下问题:
问题一:无法用srvctl增加db资源,报无权限
#>/mdabcapp/oradb/home$srvctl add database -d nhabcst -n abcst -o /mdabcapp/oradb/11.2.0
PRCR-1006 : Failed to add resource ora.nhabcst.db for nhabcst
PROC-5: User does not have permission to perform a cluster registry operation on this key.
问题二:
  重启crs后,crsd进程有启动,但用crsctl stat res -t提示无法连接上crs.


二.问题分析
查看crsd.log:
2017-12-23 11:23:52.268: [  CRSSEC][4256614144]{1:20466:2} Exception: OwnerEntry construction failed to retrieve user id by name with ACL string: owner:oramdabc:rwx 
and error: 1
2017-12-23 11:23:52.268: [  CRSSEC][4256614144]{1:20466:2} Exception: ACL entry creation failed for: owner:oramdabc:rwx
日志显示是由于os用户的更改,而增加db到ocr中或是重启crs等操作,ocr中都是用原来用户来操作引起此问题。
尝试增加一个oramdabc用户后,上面问题没有出现,更肯定了问题是由于os用户更改引起。
useradd -d /mdabcapp/oradb/home -u 1005 -g oinstall -G dba oramdabc
根据MOS中文档:ID 1931046.1的说明,需要找出OCR中的资源,有哪些还是用的oramdabc用户,如是操作如下:
1.将用户名改回oramdabc
usermod -l oramdabc oraabc
2.启动statck:
crsctl start has
3.将ocr和olr进行dump
$ ocrdump -local /tmp/olr.log
$ ocrdump /tmp/ocr.log
4.查找哪些资源类型的onwer为oramdabc用户
root@mcpl50025 tmp]# cat ocr.log|grep oraabc
ORATEXT : ACL=owner:oramdabc:rwx,pgrp:root:rwx,other::r--~EXCLUSIVE_POOLS=~FROZEN=1~IMPORTANCE=0~MAX_SIZE=-
1~MIN_SIZE=0~NAME=ora.nhabcst~PARENT_POOLS=Generic~SERVER_NAMES=~
ORATEXT : DEFAULT=owner:oraabc:rwx,pgrp:oinstall:rwx,other::r--~FLAGS=_READONLY|_CONFIG~ID=1078~TYPE=_STRING~
[root@mcpl50025 tmp]# cat ocr.log|grep oramdabc
ORATEXT : DEFAULT=owner:oramdabc:rwx,pgrp:oinstall:rwx,other::r--~FLAGS=_CONFIG~ID=1078~TYPE=_STRING~
vi /tmp/ocr.log
[SYSTEM.CRSD.TYPES.ora!service!type.TYPE_ACL.CONFIG]
ORATEXT : DEFAULT=owner:oramdabc:rwx,pgrp:oinstall:rwx,other::r--~FLAGS=_CONFIG~ID=1078~TYPE=_STRING~
[SYSTEM.CRSD.TYPES.ora!database!type.TYPE_ACL.CONFIG]
ORATEXT : DEFAULT=owner:oramdabc:rwx,pgrp:oinstall:rwx,other::r--~FLAGS=_CONFIG~ID=1078~TYPE=_STRING~
检查确认onwer:
[root@mcpl50025 bin]# ./crsctl getperm type ora.service.type
Name: ora.service.type
owner:oramdabc:rwx,pgrp:oinstall:rwx,other::r--
[root@mcpl50020 bin]# ./crsctl getperm type ora.database.type
Name: ora.database.type
owner:oramdabc:rwx,pgrp:oinstall:rwx,other::r--
另外查看其它资源的owner方法:
-bash-4.1$  crs_stat -p |grep type
TYPE=ora.diskgroup.type
DESCRIPTION=CRS resource type definition for ASM disk group resource
TYPE=ora.listener.type
TYPE=ora.scan_listener.type
TYPE=ora.diskgroup.type
DESCRIPTION=CRS resource type definition for ASM disk group resource
TYPE=ora.diskgroup.type
DESCRIPTION=CRS resource type definition for ASM disk group resource
TYPE=ora.asm.type
TYPE=ora.cvu.type
TYPE=ora.gsd.type
TYPE=ora.cluster_vip_net1.type
TYPE=ora.cluster_vip_net1.type
TYPE=ora.network.type
TYPE=ora.oc4j.type
TYPE=ora.ons.type
TYPE=ora.registry.acfs.type
TYPE=ora.scan_vip.type
再用crsctl getperm type查看其onwer.

三.问题解决
1.在crs正启运行的情况下更改os用户
usermod -l oraabc oramdabc
2.更改资源的Owner为oraabc
crsctl setperm type ora.database.type -o oraabc
crsctl setperm type ora.service.type -o oraabc
3.重启crs和db
4.验证crs各资源是否正常
crsctl stat res -t 
crsctl stat res -p
























你可能感兴趣的:(oracle)