在Linux环境下查看Oracle数据库的监听端口是数据库管理和运维中的常见操作,Oracle数据库通过监听器(Listener)接收客户端连接请求,正确识别监听端口对于网络配置、故障排查及性能优化至关重要,本文将详细介绍多种查看Oracle端口的方法,涵盖不同场景下的实用命令和操作步骤。

使用Oracle自带工具查看端口
Oracle提供了多种内置工具,可以便捷地获取监听端口的配置信息,其中最常用的是lsnrctl命令行工具。
通过lsnrctl status命令查看
lsnrctl是Oracle监听器的控制实用程序,通过该命令可以实时查看监听器的运行状态和端口信息,操作步骤如下:
- 首先切换到Oracle用户(通常为
oracle),使用su - oracle命令。 - 执行
lsnrctl status命令,若监听器默认名称为LISTENER,则直接输入该命令;若为自定义名称,需指定监听器名称,如lsnrctl status LISTENER_MYDB。
命令执行后,输出结果中会包含“Listener Parameter File”和“Listener Log File”等关键信息,重点查看“Services Summary”部分。“Port”字段即为监听器监听的端口号,默认为1521。
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Port: 1521
若监听器配置了多个端口,输出中会显示所有监听的端口及对应的协议(如TCP、IPC等)。
通过lsnrctl services命令查看连接服务
lsnrctl services命令用于查看监听器当前注册的服务及实例信息,同时也会显示监听端口,执行该命令后,可以获取更详细的服务状态和端口号信息,适合需要确认特定服务端口绑定的场景。
通过Linux系统命令查看端口
若无法直接使用Oracle工具(如未安装Oracle客户端或监听器未启动),可通过Linux系统命令查询监听端口,常用工具包括netstat、ss和lsof。
使用netstat命令
netstat是传统的网络状态查看工具,可通过以下参数定位Oracle监听端口:

netstat -tuln:显示所有监听的TCP(-t)和UDP(-u)端口,不解析域名(-n),执行后,查找包含“1521”或Oracle自定义端口的行,tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN“1521”即为监听端口,“0.0.0.0:1521”表示监听所有网络接口的1521端口。
netstat -anp | grep oracle:结合-p参数显示进程ID(PID)和程序名称,可确认端口是否被Oracle进程占用。tcp 0 0 127.0.0.1:1521 0.0.0.0:* LISTEN 12345/oracle输出中的“12345”为Oracle监听进程的PID,“oracle”为进程名。
使用ss命令(推荐)
ss是netstat的替代工具,在Linux系统中性能更优,推荐优先使用,常用参数如下:
ss -tuln:与netstat -tuln功能类似,显示监听端口:LISTEN 0 128 0.0.0.0:1521 0.0.0.0:*ss -tulpn | grep oracle:显示端口对应的进程信息,更清晰地定位Oracle相关端口:LISTEN 0 128 0.0.0.0:1521 0.0.0.0:* users:(("oracle",pid=12345,fd=3))
使用lsof命令
lsof(list open files)可查看进程打开的文件和网络连接,通过以下命令查询Oracle监听端口:
lsof -i :1521:直接查询1521端口的占用情况,COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME oracle 12345 oracle 3u IPv4 12345 0t0 TCP *:1521 (LISTEN)若不确定端口号,可使用
lsof -i | grep oracle过滤Oracle相关的网络连接。
通过Oracle配置文件查看端口
若监听器未启动或无法通过命令查询,可通过Oracle的配置文件直接获取端口信息,监听器的配置文件通常为listener.ora,位于Oracle网络的配置目录中。
定位listener.ora文件
listener.ora的默认路径因Oracle安装版本和系统而异,常见路径包括:

$ORACLE_HOME/network/admin/listener.ora/etc/oracle/network/admin/listener.ora- 若使用网格基础设施(Grid Infrastructure),路径可能为
$GRID_HOME/network/admin/listener.ora
可通过find命令快速定位文件:
find / -name listener.ora 2>/dev/null
解析配置文件内容
打开listener.ora文件,查找LISTENER监听器配置段,重点查看PORT参数。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
)
其中(PORT = 1521)即为监听器配置的TCP端口,若配置了多个ADDRESS段,则对应多个监听端口。
常见问题与注意事项
- 监听器未启动:若
lsnrctl status提示“监听器未启动”,需先使用lsnrctl start命令启动监听器,再查看端口信息。 - 多监听器配置:若系统配置了多个监听器(如不同实例使用不同监听器),需通过
lsnrctl status [监听器名]分别查看。 - 防火墙与安全组:确认Linux防火墙(如iptables、firewalld)或云平台安全组是否放行了Oracle监听端口,否则客户端无法连接。
- 端口冲突:若发现端口被非Oracle进程占用,需检查
listener.ora配置,修改为其他未被占用的端口,并重启监听器。
在Linux环境下查看Oracle端口可通过多种方式实现:优先使用lsnrctl命令获取实时监听状态,结合ss或netstat命令验证端口占用情况,必要时通过listener.ora配置文件直接查询,根据实际场景选择合适的方法,可快速定位Oracle监听端口,确保数据库连接的稳定性和安全性,掌握这些技能不仅能提升日常运维效率,也为数据库故障排查提供了重要依据。

















