Troubleshooting ORA-29783:GPnP Attribute SET Failed With Error [CLSGPNP_NOT_FOUND]
在oracle RAC 环境中节点的信息配置文件有些记录在gpnp profile,如asm_diskstring, 当修改其中的参数时需要在节点间同步,在root.sh时也需要校验,CSS守护进程在启动期间使用GPNP profile来发现 voting files(参数“DiscoveryString”)。发现字符串的不正确值将阻止CSS守护进程(最终阻止整个CRS堆栈)启动。相关的服务有gpnp.bin\mdns.bin。 如果因为一些原因无法push到远程节点时会提示如下错误, 这里记录几个分析方法:
ORA-29783:GPnP Attribute SET Failed With Error [CLSGPNP_NOT_FOUND]
今天同事在增加ASM DISK新路径时遇到了这个问题。
SQL>alter system set asm_diskstring='<string_1>', '<string_2>', '<string_3>', '<string_4>'; ERROR at line 1: ORA-29783: GPnP attribute SET failed with error [CLSGPNP_NOT_FOUND] oracle@ora19c1:/home/oracle $oerr ora 29783 29783, 00000, "GPnP attribute SET failed with error [%s]" // *Cause: An attempt to set the Grid Plug and Play (GPnP) attribute failed. // See the brackets for the reason. // *Action: Resolve the problem in the included message and retry the request.
注意这里提示的是gpnp 修改配置文件或同步错误, 此时show parameter确认内存中的asm_diskstring并且是修改生效的。
排查方法
1, 确认spfile 是否同步
SQL> show parameter asm_diskstring; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ asm_diskstring string <string_1>, <string_2>, <string_3>, <string_4> SQL> show spparameter asm_diskstring;
确认spfile与memory中diskstring值一致,防止增加磁盘后,下次重启文件读取错误。
2, 检查gpnp file是否正常
[grid@ora19c1 ~]$ gpnptool lfind
Success. Local gpnpd found.
# gpnptool get
...
Success.
[grid@ora19c1 ~]$ gpnptool rget
Warning: some command line parameters were defaulted. Resulting command line:
/u01/app/19.3.0.0/grid/bin/gpnptool.bin rget -o-
..
Found 2 gpnp service instance(s) to rget profile from.
...
[grid@ora19c1 ~]$ gpnptool find -t=7
Found 2 instances of service 'gpnp'.
mdns:service:gpnp99fc885f9._tcp.local.://ora19c1:38921/agent=gpnpd,cname=rac19c-cluster,guid=13148db89fdd4fd3bfc9c1399fc885f9,host=ora19c1,pid=28240/gpnpd h:ora19c1 c:rac19c-cluster u:13148db89fdd4fd3bfc9c1399fc8
mdns:service:gpnp99fc885f9._tcp.local.://ora19c2:32684/agent=gpnpd,cname=rac19c-cluster,guid=13148db89fdd4fd3bfc9c1399fc885f9,host=ora19c2,pid=7463/gpnpd h:ora19c2 c:rac19c-cluster u:13148db89fdd4fd3bfc9c1399fc8
3, 检查操作系统限制
# systemctl status firewalld
-- stop
# cat /etc/sysconfig/selinux
SELINUX=enforcing -- change to permissive
-- Disable NetwokManager and Avahi daemon.
#systemctl status NetworkManager.service
#systemctl mask NetworkManager.service
#systemctl stop NetworkManager.service
#systemctl disable NetworkManager.service
如果无法发现其它节点,检查是否网络受阻,同样不建议interconnect network加任何port限制。
4, 尝试kill gpnpd.bin
ps -ef|grep gpnpd.bin kill -9 xxxxpid ps -ef|grep gpnpd.bin
不健康的gpnpd.bin进程同样会导致无法通信,尝试kill 所有节点 gpnpd.bin, 也可以通过重启gpnpd.服务
# crsctl stop res ora.gpnpd -init # crsctl start res ora.gpnpd -init
5, 开启实例19783 errorstack
SQL> alter system set events '29783 TRACE NAME ERRORSTACK level 3'; System altered. SQL> alter system set asm_diskstring='<string_1>', '<string_2>', '<string_3>', '<string_4>'; alter system set asm_diskstring='<string_1>', '<string_2>', '<string_3>', '<string_4>' * ERROR at line 1: ORA-29783: GPnP attribute SET failed with error [CLSGPNP_NOT_FOUND]
检查trace file, 像Mos Doc ID 2998044.1 记录显示是部分实例的mDNS服务异常。
6, 重启mDNS服务
crsctl stop res ora.mdnsd -init
crsctl start res ora.mdnsd -init
不会影响实例重启。
— enjoy —
对不起,这篇文章暂时关闭评论。