ubuntu lsnrctl使用中常见错误及解决方法
1. 命令未找到(Command Not Found)
原因:lsnrctl未安装、安装路径未加入系统环境变量,或命令拼写错误。
解决方法:① 用which lsnrctl
确认命令路径(若未安装,需先安装Oracle客户端/服务器);② 编辑~/.bashrc
或~/.zshrc
,添加export PATH=$PATH:/path/to/lsnrctl
(将/path/to/lsnrctl
替换为实际路径,如/u01/app/oracle/product/19c/bin
);③ 执行source ~/.bashrc
使环境变量生效;④ 若仍无法解决,尝试用绝对路径执行(如/u01/app/oracle/product/19c/bin/lsnrctl
)。
2. 权限不足(Permission Denied)
原因:当前用户无执行lsnrctl的权限。
解决方法:使用sudo
提升权限,例如sudo lsnrctl start
(需输入当前用户密码)。
3. Oracle未安装或未配置(Oracle Not Installed/Configured)
原因:lsnrctl依赖Oracle软件,未安装或配置会导致命令无法运行。
解决方法:按照Oracle官方文档安装Oracle Database(如19c/21c版本),并完成监听器配置(生成listener.ora
文件,通常位于$ORACLE_HOME/network/admin
目录)。
4. 环境变量未正确设置(Environment Variables Not Configured)
原因:ORACLE_HOME
(Oracle安装目录)、ORACLE_SID
(数据库实例名)未设置或设置错误,导致lsnrctl无法定位资源。
解决方法:① 编辑~/.bashrc
,添加export ORACLE_HOME=/path/to/oracle
(如/u01/app/oracle/product/19c
)、export ORACLE_SID=your_sid
(如实例名orcl
)、export PATH=$PATH:$ORACLE_HOME/bin
;② 执行source ~/.bashrc
使变量生效;③ 验证变量:echo $ORACLE_HOME
应显示安装路径,echo $ORACLE_SID
应显示实例名。
5. 端口冲突(Port Conflict)
原因:Oracle默认监听端口1521被其他应用(如MySQL、Nginx)占用。
解决方法:① 用sudo netstat -tulnp | grep 1521
或sudo lsof -i :1521
查找占用进程;② 终止占用进程:sudo kill -9 PID
(替换为实际进程ID);③ 若无法终止,修改listener.ora
文件($ORACLE_HOME/network/admin
),将端口改为未使用的值(如1522):LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
;④ 重启监听器:lsnrctl stop &
&
lsnrctl start
。
6. 监听器未启动(Listener Not Started)
原因:监听器未手动启动或启动失败。
解决方法:① 执行lsnrctl start
启动监听器;② 若启动失败,用lsnrctl status
查看状态(如“Listener is not running”);③ 检查alert.log
文件($ORACLE_HOME/diag/tnslsnr/hostname/listener/alert/log.xml
)获取具体错误(如端口冲突、配置文件语法错误)。
7. TNS-1189认证失败(TNS-1189: The Listener Could Not Authenticate the User)
原因:LSNRCTL与tnslsnr
进程之间的本地认证失败,常见于多网卡环境或listener.ora
修改后。
解决方法:① 修改listener.ora
文件,添加IPC协议地址(优先使用IPC认证):LISTENER = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = ANYTHING)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))
;② 或关闭本地OS认证:添加LOCAL_OS_AUTHENTICATION = OFF
;③ 保存文件后重启监听器:lsnrctl stop &
&
lsnrctl start
。
8. TNS-12541/12560协议错误(TNS-12541: No Listener/TNS-12560: Protocol Adapter Error)
原因:① 监听器未启动;② listener.ora
配置错误(如主机名拼写错误、端口错误);③ 协议适配器异常(如网络驱动问题)。
解决方法:① 执行lsnrctl status
确认监听器状态;② 若未启动,用lsnrctl start
启动;③ 检查listener.ora
中的HOST
(应为localhost
或实际IP)、PORT
(如1521)是否正确;④ 若为协议适配器错误,重启服务器或重新安装Oracle客户端。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu lsnrctl使用中常见错误及解决方法
本文地址: https://pptw.com/jishu/718141.html