Oracle 19c Nagios监控报ORA-12154错误排查求助
校验Nagios执行用户的环境变量
Oracle 19c对环境变量的依赖和18c存在细微差异,重点确认ORACLE_HOME、ORACLE_SID、TNS_ADMIN这三个变量是否正确指向19c的安装路径。切换到nagios用户,执行以下命令验证:echo $ORACLE_HOME echo $TNS_ADMIN sqlplus username/password@tns_name确保手动执行sqlplus能正常连接19c实例,排除环境变量继承18c配置的问题。
检查tnsnames.ora的权限与访问路径
即使文件内容和18c完全一致,也要确认19c的tnsnames.ora所在目录(通常为$ORACLE_HOME/network/admin)对nagios用户有可读权限。如果配置了TNS_ADMIN自定义路径,必须保证nagios用户能访问该路径下的所有配置文件,而非仅数据库用户有权限。验证19c监听的实例注册状态
19c默认监听可能启用了VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON这类严格参数,导致实例无法自动注册。执行lsnrctl status查看监听状态,确认目标19c实例是否已注册。若未注册,可执行以下命令手动注册:ALTER SYSTEM REGISTER;同时检查数据库的
local_listener参数配置是否正确指向监听地址。直接执行Nagios插件命令排查
跳过Nagios web界面,直接在服务器上手动运行监控插件命令,获取更详细的报错信息。例如:check_oracle_health --connect YOUR_TNS_NAME --username MONITOR_USER --password MONITOR_PASS --mode tnsping --verbose通过
--verbose参数能看到插件执行时的TNS解析细节,定位是否是插件本身的解析逻辑问题。对比调整sqlnet.ora配置
19c默认的sqlnet.ora可能开启了18c没有的安全特性,比如SQLNET.AUTHENTICATION_SERVICES=(NONE)或NAMES.DIRECTORY_PATH的顺序变更。将19c的sqlnet.ora配置调整为与18c完全一致,重启监听和数据库实例后再测试监控连接。确认插件与19c的兼容性
部分旧版本的Nagios Oracle监控插件对19c的TNS解析支持不完善,检查插件版本(比如check_oracle_health --version),尝试更新至最新版本后重新测试。
内容的提问来源于stack exchange,提问作者tafa

