概述
今天主要分享一个最近排查的监听问题,还是有点意思的,一起来看看吧~
环境:oracle19c 单实例
用plsql连接提示,这里排除防火墙、账号密码问题,连接字符串按监听文件格式写
1. 测试监听
服务器本地测试监听发现没问题。
2. 查看数据库状态
数据库状态正常
3. 查看监听状态
发现没有数据库服务..
4. 查看数据库服务名
怀疑是service_name问题,查看也没有异常
5. 查看错误日志:
路径为:/u01/app/oracle/diag/tnslsnr/ZL-FSL-SRM-TOOLS-DB/listener/alert/log.xml
- </msg>
- <msg time='2020-03-04T17:46:23.601+08:00' org_id='oracle' comp_id='tnslsnr'
- type='UNKNOWN' level='16' host_id='ZL-FSL-SRM-TOOLS-DB'
- host_addr='172.26.151.84' pid='1072'>
- <txt>04-MAR-2020 17:46:23 * ping * 0
- </txt>
- </msg>
- <msg time='2020-03-04T17:48:53.202+08:00' org_id='oracle' comp_id='tnslsnr'
- type='UNKNOWN' level='16' host_id='ZL-FSL-SRM-TOOLS-DB'
- host_addr='172.26.151.84' pid='1072'>
- <txt>WARNING: Subscription for node down event still pending
- </txt>
- </msg>
- <msg time='2020-03-04T17:48:53.202+08:00' org_id='oracle' comp_id='tnslsnr'
- type='UNKNOWN' level='16' host_id='ZL-FSL-SRM-TOOLS-DB'
- host_addr='172.26.151.84' pid='1072'>
- <txt>04-MAR-2020 17:48:53 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=ZL-FSL-SRM-TOOLS-DB)(USER=oracle))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=318767104)) * status * 0
- </txt>
- </msg>
排查日志没有明显异常
6. 查看数据库中listener相关参数
对比正常和异常数据库的listener相关参数..
可以发现不太一样。
7. 修改数据库监听参数
ps:动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,如果需要向非默认监听注册,则需要配置local_listener参数。
监听的信息添加到tnsnames.ora文件中。 因为pmon在动态注册监听时要从tnsnames.ora中读取相关信息。
- alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.xx)(PORT=1522))))' scope=both;
8. 重启监听并查看监听状态
问题解决..