数据库监听是Oracle数据库系统中负责接收客户端连接请求的关键组件,作为数据库与客户端应用之间的“守门人”,它确保连接的建立与维持,正确配置监听器是保障数据库服务可用性的基础步骤,本文将详细说明监听器的配置流程、关键文件及常见问题解决方法。

监听器的作用与重要性
数据库监听器是Oracle Net Services的核心组件,主要功能包括:
- 连接管理:接收客户端的连接请求,验证身份后建立与数据库实例的连接。
- 服务注册:将数据库实例的服务名(如
orcl)注册到监听器,客户端通过服务名连接到指定实例。 - 负载均衡与故障转移:在集群环境中,监听器可负载均衡多个实例的连接请求,并在实例故障时自动切换。
- 协议转换:支持多种协议(如TCP、IPC)与客户端通信,适配不同操作系统环境。
配置监听器的核心文件
配置监听器主要涉及两个文件:listener.ora(监听器配置文件)和tnsnames.ora(客户端服务名配置文件)。
| 文件名称 | 作用 | 路径示例 | 关键参数示例 |
|---|---|---|---|
listener.ora | 配置监听器自身(端口、协议等) | $ORACLE_HOME/network/admin/ | SID_LIST_LISTENER(多实例配置)、LISTENER(监听器地址、端口) |
tnsnames.ora | 配置客户端服务名到监听器的映射 | $ORACLE_HOME/network/admin/ | 服务名(如ORCL)、地址(主机、端口) |
配置监听器的详细步骤
环境准备
- 确保Oracle软件已安装,且
Oracle Net Services组件可用。 - 检查操作系统权限:监听器通常需
root或system权限启动。
配置listener.ora文件
文件路径:
$ORACLE_HOME/network/admin/listener.ora。 单实例配置):
# listener.ora Network Configuration File: /opt/oracle/product/19.0/dbhome_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = ( SID_LIST = ( SID_DESC = ( SID_NAME = orcl ORACLE_HOME = /opt/oracle/product/19.0/dbhome_1 REMOTE_CONNECT = NO ) ) ) LISTENER = ( LISTENER = ( DESCRIPTION = 'LISTENER for Oracle Database' ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521) ) )关键参数说明:
SID_LIST_LISTENER:定义监听的服务实例(如orcl)。LISTENER:配置监听器的协议(TCP)、主机(168.1.100)、端口(默认1521)。
配置tnsnames.ora文件
文件路径:
$ORACLE_HOME/network/admin/tnsnames.ora。# tnsnames.ora Network Configuration File: /opt/oracle/product/19.0/dbhome_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCL = ( DESCRIPTION = 'Connection to ORACLE database on this host using TCP protocol with default port (1521)' ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521) )
关键参数说明:

- 服务名(
ORCL):客户端连接的标识符,需与listener.ora中的SID_NAME一致。 ADDRESS:指定监听器的IP地址和端口。
- 服务名(
启动监听器
- 命令:在Oracle Home目录下执行
lsnrctl start listener。 - 验证状态:执行
lsnrctl status listener,输出“STATUS of LISTENER”为“READY”表示启动成功。
客户端测试
- 使用SQL*Plus连接:
sqlplus user/password@orcl(需客户端已配置tnsnames.ora)。 - 或通过
netca工具自动配置客户端网络服务(推荐初学者使用)。
常见问题与解决
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 监听器无法启动,报错“ORA-12541: TNS: no listener” | listener.ora配置错误(如端口被占用、主机名错误) | 检查listener.ora的LISTENER配置,确保主机和端口正确,无冲突。 |
| 客户端连接失败,提示“TNS-12560: TNS: protocol adapter error” | tnsnames.ora服务名配置错误或监听器未启动 | 验证tnsnames.ora内容与listener.ora一致,确保监听器已启动。 |
| 监听器端口被占用 | 系统中存在其他服务使用1521端口 | 使用netstat -an | grep 1521检查端口占用,释放或修改监听器端口(如改为1522)。 |
FAQs
问题1:如何检查监听器是否正在运行?
解答:执行lsnrctl status listener命令,若输出中“STATUS of LISTENER”为“READY”,则监听器正在运行。
问题2:配置监听器后客户端无法连接,如何排查?
解答:
- 验证监听器状态:
lsnrctl status listener。 - 检查配置文件:确认
listener.ora和tnsnames.ora内容一致。 - 使用
tnsping测试:tnsping orcl(服务名),若返回“OK”则网络配置正确。 - 检查防火墙:确保端口1521(默认)未被防火墙阻止。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/201573.html


