Ubuntu lsnrctl网络配置技巧
导读:Ubuntu 下 lsnrctl 网络配置技巧 一 基础配置与常用命令 以 oracle 用户操作,确保环境变量正确(如 ORACLE_HOME、ORACLE_SID)。常用命令速览: 启动/停止/状态:lsnrctl start|st...
Ubuntu 下 lsnrctl 网络配置技巧
一 基础配置与常用命令
- 以 oracle 用户操作,确保环境变量正确(如 ORACLE_HOME、ORACLE_SID)。常用命令速览:
- 启动/停止/状态:lsnrctl start|stop|status
- 热加载配置:lsnrctl reload
- 查看服务与端点:lsnrctl services
- 在线修改参数:lsnrctl set =;查看参数:lsnrctl get
- 跟踪与日志:lsnrctl trace_level_listener|trace_level_server
- 帮助:lsnrctl help
- 配置文件路径通常为 $ORACLE_HOME/network/admin/listener.ora;必要时同时检查 tnsnames.ora。修改后优先使用 reload 使配置生效,减少中断。
二 监听端口与地址配置
- 修改监听端口(示例改为 1522)
- 编辑配置文件: sudo -i -u oracle nano $ORACLE_HOME/network/admin/listener.ora
- 在 LISTENER 的 ADDRESS 中将 PORT=1521 改为 PORT=1522。
- 使配置生效: lsnrctl stop lsnrctl start 或热加载:lsnrctl reload
- 验证: lsnrctl status ss -lntp | grep 1522
- 仅监听内网地址(示例 192.168.1.100)
- 在 listener.ora 的 ADDRESS 中将 HOST=192.168.1.100(不要用主机名以避免解析不确定性)。
- 重启或热加载监听器,并用 ss -lntp | grep 1521 确认仅绑定到指定地址。
- 防火墙放行
- UFW:sudo ufw allow 1521,1522/tcp
- firewalld:sudo firewall-cmd --add-port=1521/tcp --permanent & & sudo firewall-cmd --reload
- 客户端连通性测试
- tnsping 或 sqlplus:sqlplus sys/密码@//192.168.1.100:1521/ORCL as sysdba
- 变更端口会影响现有应用,务必提前通知并更新客户端/中间件配置,且确认新端口未被占用。
三 服务注册与客户端解析
- 静态注册(推荐在需要显式声明 SID 的场景)
- 在 listener.ora 的 SID_LIST_LISTENER 中声明数据库 SID 与 ORACLE_HOME,示例: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1) ) )
- 动态注册(更常见)
- 确保数据库参数 LOCAL_LISTENER 指向当前监听地址,例如: ALTER SYSTEM SET LOCAL_LISTENER=‘(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))’ SCOPE=BOTH; ALTER SYSTEM REGISTER;
- 客户端解析
- 在 tnsnames.ora 中定义服务别名,示例: ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) )
- 验证
- 查看监听端注册的服务:lsnrctl services
- 从客户端测试:tnsping ORCL 或 sqlplus user/pass@ORCL。
四 systemd 托管与开机自启
-
创建服务单元文件 /etc/systemd/system/oracle-listener.service: [Unit] Description=Oracle Listener 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-reload & & sudo systemctl enable --now oracle-listener
- 查看状态:sudo systemctl status oracle-listener
-
使用 systemd 可确保监听器随系统启动、统一日志与故障重启。
五 故障排查要点
- 端口与进程
- 检查监听端口:ss -lntp | grep 1521 或 netstat -an | grep 1521
- 若端口被占用,换端口或释放占用进程后再启动监听器。
- 监听状态与服务注册
- lsnrctl status 查看监听地址、端口与已注册服务;lsnrctl services 核对 SID/SERVICE_NAME 是否出现。
- 客户端连通
- 先用 tnsping 验证解析与连通,再用 sqlplus 测试登录;必要时在客户端 tnsnames.ora 中使用 IP 而非主机名以规避 DNS 问题。
- 防火墙与云安全组
- 确认 UFW/firewalld 与云厂商安全组已放行对应 TCP 端口。
- 日志与跟踪
- 提高日志与跟踪级别定位疑难:lsnrctl trace_level_listener 16、lsnrctl trace_level_server 16,检查 $ORACLE_HOME/diag/tnslsnr/ 下日志。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu lsnrctl网络配置技巧
本文地址: https://pptw.com/jishu/753784.html
