记一次rac数据库服务器重启后crsctl命令调用出错的问题
问题描述:
在一次重启RAC数据库服务器之后,使用crsctl命令查询各资源与服务的状态,发现调用出错,还以为 是集群软件出了问题,结果用crs_stat -t 命令发现各资源状态都是正常的。

查找了几个小时未果,最后终于确定前面在调试一个监听起不来的问题时,增加了环境变量LDR_CNTRL=SHARED_SYMTAB=Y
因为是听别的大神说的,要加这个变量,也不太明白这个变量代表的是什么,这次出问题,查了一下一个这个变量
https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/performance/misc_tun_params.html
IBM的官方文档
The LDR_CNTRL environment variable can be used to control one or more aspects of the system loader behavior. You can specify multiple options with the LDR_CNTRL variable. When specifying the option, separate the options with the '@' sign. An example of specifying multiple options is: LDR_CNTRL=PREREAD_SHLIB@LOADPUBLIC.
Specifying the SHARED_SYMTAB=Y option causes the system to create a shared symbol table for a 64-bit program, if the program exports any symbols. If multiple instances of the program run concurrently, using a shared symbol table can reduce the amount of system memory that is required by the program.
Specifying the SHARED_SYMTAB=N option prevents the system from creating a shared symbol table for a 64-bit program. This option overrides the AOUT_SHR_SYMTAB flag in the XCOFF auxiliary header.
LDR_CNTRL=SHARED_SYMTAB=Y这个设置会使系统创建共享symbol
很显然我的报错信息里提示 crsctl.bin调用时,某些symbol is not exported, 所以才会报错。
注释掉环境变量就没有问题了。
这提示我不懂的事情一定要搞明白,一定不能只是按照别人教的来弄,还是要每做一步操作都要十分清楚明白。
最后搞清楚了一点,crsctl 只是一个运维工具,跟集群的正常启动没有关系。
浙公网安备 33010602011771号