在 Ubuntu 上使用 lsnrctl 管理 Oracle 监听器
一、准备与环境
sudo su - oracle。lsnrctl 是 Oracle 监听器工具,主要管理监听进程,并非通用的 Ubuntu 服务管理工具。确保已安装 Oracle 数据库软件,并正确设置环境变量或将 $ORACLE_HOME/bin 加入 PATH。常见变量:ORACLE_HOME(如:/u01/app/oracle/product/19.0.0/dbhome_1)、PATH=$PATH:$ORACLE_HOME/bin。配置文件目录通常为 $ORACLE_HOME/network/admin(包含 listener.ora、tnsnames.ora)。二、常用 lsnrctl 命令
lsnrctl start [listener_name]、lsnrctl stop [listener_name]、lsnrctl restart [listener_name](默认监听器名为 LISTENER)。lsnrctl status [listener_name]、lsnrctl services [listener_name](可查看监听端口、服务映射、实例注册情况)。lsnrctl reload(不中断现有连接重载配置)、lsnrctl select listener_name(切换当前上下文的监听器)。以上命令均可在命令行直接执行。三、配置与生效
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521))
)
)
lsnrctl reload 或 lsnrctl restart;用 lsnrctl status 核对监听地址与端口。四、日志与排错
tail -f $ORACLE_HOME/network/log/listener.log,定位启动失败、连接拒绝等问题。lsnrctl status 检查监听端口与服务注册;若监听未启动,常见报错为 TNS-12541: TNS:no listener,应先 lsnrctl start 再验证。五、与 systemd 的配合(可选)
sudo systemctl stop oracle-xe 等方式启停;但这与 lsnrctl 管理的监听器进程不同。建议统一用 lsnrctl 控制监听,或用 systemd 管理服务包装器,避免混用导致状态不一致。