Ubuntu 上 lsnrctl 最佳实践案例
一 环境准备与最小可用配置
source ~/.bashrc 使配置生效。LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = your_sid)
(ORACLE_HOME = your_oracle_home)
)
)
lsnrctl startlsnrctl status(应看到监听在 1521/TCP 且服务已注册)sqlplus / as sysdba 登录后执行 SELECT instance_name FROM v$instance;tnsping your_service 或 sqlplus user/pass@host:1521/service 验证二 系统服务化与开机自启
[Unit]
Description=Oracle Listener Service
After=network.target
[Service]
Type=forking
ExecStart=$ORACLE_HOME/bin/lsnrctl start
ExecStop=$ORACLE_HOME/bin/lsnrctl stop
ExecReload=$ORACLE_HOME/bin/lsnrctl reload
User=oracle
Group=oinstall
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl start oracle-listenersudo systemctl enable oracle-listenersudo systemctl status oracle-listener三 备份与恢复
cp $ORACLE_HOME/network/admin/listener.ora /home/oracle/listener.ora.bak_$(date +%F)lsnrctl status > listener_status_$(date +%F).txtlsnrctl stopcp /home/oracle/listener.ora.bak_YYYY-MM-DD $ORACLE_HOME/network/admin/listener.oralsnrctl startlsnrctl status四 防火墙与安全加固
sudo ufw allow 1521/tcp;检查:sudo ufw statussudo firewall-cmd --add-port=1521/tcp --permanent && sudo firewall-cmd --reloadlsnrctl status 确认监听地址与端口;netstat -tulnp | grep 1521 或 ss -lntp | grep 1521 校验端口监听;lsof -i :1521 定位占用进程,避免端口冲突。五 常见问题快速排查清单
which lsnrctl 确认路径,加入 PATH;必要时以 oracle 用户或 sudo 执行。source ~/.bashrc 或相应 profile。netstat -tulnp | grep 1521 或 lsof -i :1521 查找占用进程并处置,或调整 listener.ora 端口后重启监听。lsnrctl status 检查服务映射;必要时 lsnrctl reload 或确认数据库实例已启动并注册到监听。tnsping/sqlplus 分段验证。