Oracle 19c Windows环境下TNS监听器无法启动问题求助
解决Oracle监听器启动失败问题(服务启动即停+TNS连接错误)
看起来你碰到了Oracle监听器的典型启动故障,结合你提供的日志、配置文件和操作记录,我整理了几个关键的排查和解决步骤,应该能帮你解决问题:
1. 修正监听器名称不匹配的问题
我注意到你的listener.ora里定义的监听器名称是LISTENER_UBIX,但你一直用针对默认LISTENER的命令来操作——这个默认监听器在你的配置里根本不存在,这肯定会报错。
- 先试试用正确的名称查询状态:
lsnrctl status LISTENER_UBIX - 如果要启动这个监听器,执行:
lsnrctl start LISTENER_UBIX
2. 修复ORACLE_HOME与配置文件路径的冲突
你的listener.ora放在了Instant Client的目录(C:\app\instantclient_19_8\NETWORK\admin\),但配置里指定的ORACLE_HOME是数据库安装目录(C:\app\E5665551\product\19.3.0\dbhome19c)。Instant Client目录里没有Oracle数据库的消息文件,这就是日志里出现“Message ... not found”错误的原因。
- 把
listener.ora从Instant Client目录复制到数据库安装目录的network\admin下(也就是和你的tnsnames.ora同路径:C:\app\E5665551\product\19.3.0\dbhome19c\network\admin\),然后删掉Instant Client下的那份配置,避免监听器读错文件。 - 检查系统环境变量
ORACLE_HOME:右键“此电脑”→属性→高级系统设置→环境变量,确认ORACLE_HOME的值是C:\app\E5665551\product\19.3.0\dbhome19c,如果不是就修改,改完记得重启命令提示符窗口。
3. 核对Windows监听器服务的启动参数
你的服务名称是OracleOraDB19Home1TNSListenerORACLE19C,需要确认它对应的是你配置的LISTENER_UBIX,而不是默认的LISTENER:
- 打开注册表编辑器(按下Win+R,输入
regedit回车),导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDB19Home1TNSListenerORACLE19C - 查看
ImagePath这个键值,里面应该有-listener LISTENER_UBIX的参数。如果是-listener LISTENER,就把它改成LISTENER_UBIX,然后重启服务试试。
4. 检查端口1521是否被占用
错误里的“64-bit Windows Error: 61”是连接被拒绝的意思,很可能是端口1521被其他进程占了:
- 执行命令查看端口占用情况:
netstat -ano | findstr :1521 - 如果看到有其他进程占用这个端口,要么用
taskkill /pid <查到的进程ID> /F杀掉它,要么修改listener.ora里的端口号(比如改成1522),同时把tnsnames.ora里的对应端口也更新了。
5. 排查权限问题
监听器服务可能没有足够的权限访问Oracle的安装目录:
- 打开Windows服务管理器,找到
OracleOraDB19Home1TNSListenerORACLE19C,右键→属性→登录,确保使用的账户(通常是Local System)对C:\app\E5665551\product\19.3.0\dbhome19c目录有读写权限。 - 也可以试试右键命令提示符,选择“以管理员身份运行”,然后执行
lsnrctl start LISTENER_UBIX,看能不能正常启动。
6. 获取更详细的启动日志
如果前面的步骤都没用,手动启动监听器并导出详细日志:
lsnrctl start LISTENER_UBIX > listener_start_log.txt
打开生成的listener_start_log.txt,里面会有更具体的错误信息,能帮你进一步定位问题。
内容的提问来源于stack exchange,提问作者Ora_en
相关产品推荐
相关产品推荐

