Debian lsnrctl的使用案例分析
导读:Debian 上 lsnrctl 使用案例与排错要点 一 环境准备与常用命令 以 oracle 用户操作,确保环境变量正确:设置 ORACLE_HOME、PATH,并确认 $ORACLE_HOME/network/admin 下有配置文件...
Debian 上 lsnrctl 使用案例与排错要点
一 环境准备与常用命令
- 以 oracle 用户操作,确保环境变量正确:设置 ORACLE_HOME、PATH,并确认 $ORACLE_HOME/network/admin 下有配置文件。
- 常用命令一览:
- 启动/停止/重启:lsnrctl start|stop|reload
- 查看状态:lsnrctl status [LISTENER_NAME]
- 在线查看服务:lsnrctl services [SERVICE]
- 动态设置参数:lsnrctl set (如日志级别)
- 查看日志文件位置:lsnrctl logfile [LISTENER_NAME]
- 进入交互模式:lsnrctl,退出:exit
- 建议变更前备份配置,变更后用 reload 或重启使配置生效。
二 案例一 新建监听器并注册 SID 服务
- 目标:在 Debian 上新建名为 LISTENER 的监听器,监听 TCP/1521,并静态注册 ORCL 实例。
- 步骤:
- 编辑配置文件
- 文件路径:$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 = ORCL) (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) ) )
- 启动并验证
- 启动:lsnrctl start
- 状态:lsnrctl status(应看到监听地址与端口)
- 服务:lsnrctl services(应看到 ORCL 的注册信息)
- 连通性验证
- 本机端口:ss -lntp | grep 1521 或 netstat -an | grep 1521
- 远程测试:tnsping ORCL 或 sqlplus sys/oracle@ORCL as sysdba
- 编辑配置文件
- 说明:静态注册适用于实例未自动注册或需要显式声明的场景。
三 案例二 在线调整日志级别并验证
- 目标:不重启监听器,将日志级别提升到 16(更详细),并确认日志输出。
- 步骤:
- 动态设置
- 查看当前级别:lsnrctl get log_level
- 设置级别:lsnrctl set log_level 16
- 定位与查看日志
- 获取日志文件路径:lsnrctl logfile LISTENER
- 实时查看:tail -f /opt/oracle/diag/tnslsnr/$(hostname)/listener/alert/listener.log
- 动态设置
- 说明:动态参数修改对运行中监听器立即生效,适合临时排障;长期建议写入配置文件并持久化。
四 案例三 将监听器纳入 systemd 开机自启
- 目标:创建 systemd 服务,使 LISTENER 随系统启动自动运行,并支持标准的启停管理。
- 步骤:
- 创建服务文件
- 文件路径:/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 User=oracle Group=oinstall Restart=on-failure [Install] WantedBy=multi-user.target
- 启用与验证
- 重载并启用:systemctl daemon-reload & & systemctl enable --now oracle-listener
- 查看状态:systemctl status oracle-listener
- 联动验证:lsnrctl status
- 创建服务文件
- 说明:使用 Type=forking 与 ExecStart/ExecStop 可正确托管 lsnrctl 的启动/停止流程。
五 常见问题与排错清单
- 端口未监听
- 检查监听:lsnrctl status;本机端口:ss -lntp | grep 1521
- 若未监听,重启监听器:lsnrctl stop & & lsnrctl start
- 客户端无法解析服务
- 在客户端配置 tnsnames.ora,或使用 EZCONNECT:sqlplus user/pass@//host:1521/service
- 配置变更未生效
- 优先使用:lsnrctl reload
- 必要时重启:lsnrctl stop & & lsnrctl start
- 权限与运行身份
- 以 oracle 用户执行;必要时使用 sudo -u oracle 提权
- 日志与诊断
- 动态查看:tail -f $ORACLE_HOME/diag/tnslsnr/$(hostname)/listener/alert/listener.log
- 获取日志路径:lsnrctl logfile LISTENER
- 不建议的应急方式
- 避免直接 kill -9 监听进程,优先使用 lsnrctl stop 或 systemctl 停止服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian lsnrctl的使用案例分析
本文地址: https://pptw.com/jishu/748152.html
