在Linux环境下查看Oracle数据库的监听端口是数据库管理和运维中的常见操作,掌握多种方法可以灵活应对不同场景需求,本文将详细介绍通过命令行工具、配置文件查询以及网络诊断等方式定位Oracle端口的具体步骤和注意事项。

使用netstat命令查看端口
netstat是Linux系统中经典的网络状态查看工具,通过它可以快速定位Oracle监听端口,需确认Oracle监听服务是否运行,执行以下命令:
ps -ef | grep tnslsnr
若发现监听进程(如tnslsnr),则使用netstat结合grep过滤Oracle相关端口:
netstat -tuln | grep :1521
其中-t显示TCP端口,-u显示UDP端口,-l仅显示监听状态,-n以数字形式显示地址和端口,Oracle默认监听端口为1521,若自定义端口,只需替换命令中的端口号即可。
通过ss命令高效查询
ss是netstat的替代工具,在性能上更优,尤其在高并发场景下表现突出,使用方法与netstat类似:
ss -tuln | grep oracle
或直接指定端口号:

ss -tuln | grep :1521
ss命令的-p参数还可显示占用端口的进程ID(PID),便于进一步排查:
ss -tulpn | grep :1521
检查Oracle监听配置文件
Oracle监听器的端口配置存储在listener.ora文件中,该文件通常位于$ORACLE_HOME/network/admin目录下,通过查看该文件可获取准确的监听端口信息:
cat $ORACLE_HOME/network/admin/listener.ora
``` 示例如下:
```plaintext
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521))
)
)
其中PORT参数即为监听端口,若文件中配置了多个监听地址,需逐一确认。
使用lsnrctl命令查询监听状态
Oracle提供的lsnrctl工具是管理监听器的专用命令,可直接获取监听端口及服务信息,执行以下命令进入监听控制台:
lsnrctl status
在输出结果中,找到Services Summary或Listening Endpoints Summary部分,即可看到监听的协议、IP和端口号,

Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)))
若需查询特定服务的端口,可结合services参数:
lsnrctl services
通过tnsping测试端口连通性
tnsping工具不仅能测试Oracle网络服务名是否可达,还能间接反馈监听端口状态,执行以下命令:
tnspang 服务名
若监听端口正常,将返回“OK”及响应时间;若端口未开放或监听未启动,则会提示错误。
$ tnsping orcl TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 20-OCT-2023 10:00:00 Copyright (c) 1997, 2023, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))) OK (10 msec)
注意事项
- 权限问题:执行上述命令时,建议使用Oracle用户或具有sudo权限的用户,避免因权限不足导致查询失败。
- 防火墙设置:若端口无法访问,需检查Linux防火墙(如iptables、firewalld)是否开放相应端口,
firewall-cmd --list-ports | grep 1521
- 多实例场景:若服务器运行多个Oracle实例,需通过
ps -ef | grep tnslsnr确认不同监听进程对应的端口,避免混淆。
通过以上方法,可以全面、准确地定位Oracle数据库的监听端口,实际操作中,可根据环境选择最便捷的方式,并结合多种工具交叉验证,确保结果的可靠性。















