Ubuntu lsnrctl最佳实践案例
导读:Ubuntu 上 lsnrctl 最佳实践案例 一 环境准备与最小可用配置 以 oracle 用户操作,确保环境变量正确:设置 ORACLE_HOME、ORACLE_SID,必要时执行 source ~/.bashrc 使配置生效。 编辑...
Ubuntu 上 lsnrctl 最佳实践案例
一 环境准备与最小可用配置
- 以 oracle 用户操作,确保环境变量正确:设置 ORACLE_HOME、ORACLE_SID,必要时执行
source ~/.bashrc使配置生效。 - 编辑监听配置 $ORACLE_HOME/network/admin/listener.ora,保持简洁可维护:
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 start - 状态:
lsnrctl status(应看到监听在 1521/TCP 且服务已注册)
- 启动:
- 客户端连通性测试:
sqlplus / as sysdba登录后执行SELECT instance_name FROM v$instance;- 远程可用
tnsping your_service或sqlplus user/pass@host:1521/service验证
以上步骤覆盖 Ubuntu 下 lsnrctl 的启动、状态检查与基础连通性验证,适合作为标准化部署的起点。
二 系统服务化与开机自启
- 创建 systemd 服务单元文件 /etc/systemd/system/oracle-listener.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
将监听器纳入 systemd 管理,可确保 开机自启、统一日志、可靠重启,便于纳入生产运维体系。
三 备份与恢复
- 配置与状态双备份:
- 配置文件备份:
cp $ORACLE_HOME/network/admin/listener.ora /home/oracle/listener.ora.bak_$(date +%F) - 运行状态备份:
lsnrctl status > listener_status_$(date +%F).txt
- 配置文件备份:
- 恢复流程:
- 停止监听:
lsnrctl stop - 还原配置:
cp /home/oracle/listener.ora.bak_YYYY-MM-DD $ORACLE_HOME/network/admin/listener.ora - 启动监听:
lsnrctl start - 校验结果:
lsnrctl status
- 停止监听:
- 建议将备份纳入 定期任务(如每日) 并做 异地/离线 留存,确保回滚能力。
上述方法同时覆盖“配置文件级”和“运行时状态级”的备份,恢复路径清晰、可验证。
四 防火墙与安全加固
- 放行监听端口:
- UFW:
sudo ufw allow 1521/tcp;检查:sudo ufw status - firewalld:
sudo firewall-cmd --add-port=1521/tcp --permanent & & sudo firewall-cmd --reload
- UFW:
- 访问控制:
- 在 listener.ora 中使用明确的 HOST(避免仅用通配或易变主机名),必要时限制来源网段。
- 结合网络 ACL/安全组仅放通应用所在 网段/IP。
- 运行期核查:
lsnrctl status确认监听地址与端口;netstat -tulnp | grep 1521或ss -lntp | grep 1521校验端口监听;lsof -i :1521定位占用进程,避免端口冲突。
通过“最小暴露面 + 可验证”的策略,兼顾 可用性 与 安全性。
五 常见问题快速排查清单
- 命令找不到或权限不足:
- 用
which lsnrctl确认路径,加入 PATH;必要时以 oracle 用户或sudo执行。
- 用
- 环境变量未生效:
- 检查 ORACLE_HOME、ORACLE_SID,执行
source ~/.bashrc或相应 profile。
- 检查 ORACLE_HOME、ORACLE_SID,执行
- 端口冲突:
netstat -tulnp | grep 1521或lsof -i :1521查找占用进程并处置,或调整 listener.ora 端口后重启监听。
- 监听未注册服务:
lsnrctl status检查服务映射;必要时lsnrctl reload或确认数据库实例已启动并注册到监听。
- 客户端连不通:
- 复核 防火墙 与 网络路由,并用
tnsping/sqlplus分段验证。
以上为 Ubuntu 下高频问题的定位路径,覆盖 路径、权限、环境、端口、注册、连通性 六大维度,便于快速恢复。
- 复核 防火墙 与 网络路由,并用
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu lsnrctl最佳实践案例
本文地址: https://pptw.com/jishu/753779.html
