Pacemaker双节点集群Oracle监听器启动异常但数据库可连接排查求助
双节点Pacemaker集群Oracle监听故障排查解决步骤
1 验证监听实际运行状态与资源配置匹配度
- 切换至oracle用户执行
lsnrctl status pdb1,确认监听实际运行状态、监听端口、服务注册情况,重点核对监听名称是否与资源配置中的pdb1完全一致,大小写敏感 - 执行
crm configure show查看oralsnr资源配置,确认ORACLE_HOME、监听名、SID参数配置无误,且ORACLE_HOME路径对oracle用户开放读写执行权限 - 手动执行资源代理命令复现启动逻辑:
sudo OCF_ROOT=/usr/lib/ocf /usr/lib/ocf/resource.d/heartbeat/oralsnr start,直接获取命令执行返回的报错细节,定位配置问题
2 修复ocf:heartbeat:oralsnr元数据超时问题
- 先验证资源代理文件权限:
ls -l /usr/lib/ocf/resource.d/heartbeat/oralsnr,确认文件具备可执行权限,无损坏缺失 - 手动执行元数据获取命令测试:
sudo OCF_ROOT=/usr/lib/ocf /usr/lib/ocf/resource.d/heartbeat/oralsnr meta-data,若返回超时,需在资源配置中显式添加envfile参数,指向oracle用户的环境变量配置文件(如/home/oracle/.bash_profile),避免资源代理执行时缺少Oracle相关环境变量 - 临时关闭SELinux测试:
setenforce 0,确认是否为安全策略拦截了资源代理的系统调用导致超时
3 解决监听实际运行但集群检测异常问题
数据库可正常连接说明监听本身功能正常,故障点集中在集群状态检测逻辑:
- 调整监听资源启动超时阈值:当前执行耗时393ms接近默认超时阈值,执行
crm_resource --meta -r listener_or -p timeout -v 20s将启动超时调整为20秒 - 验证双节点时间同步状态:执行
chronyc sources确认两节点时间差小于500ms,时间偏移过大将导致集群状态判断异常 - 清理手动启动的监听进程:执行
ps -ef | grep tns确认监听进程是否为手动启动,若为手动启动先执行lsnrctl stop pdb1关闭进程,再由集群统一拉起,避免状态不一致冲突
修复验证
执行crm status查看集群资源状态,待listener_or资源变为Started状态后,手动执行节点切换测试,确认监听资源可在两个节点正常漂移启停。
内容的提问来源于stack exchange,提问作者Tsunani
相关产品推荐
相关产品推荐

