Oracle监听服务是Oracle数据库服务端用于接收客户端连接请求的后台进程,它负责将客户端的连接请求转发到对应的数据库实例,是客户端与数据库建立通信的必要前提。如果监听配置不正确,客户端会出现无法连接数据库、连接超时等问题。

Oracle监听的核心配置文件
Oracle监听的配置主要依赖两个核心文件,这两个文件都存放在Oracle数据库安装目录的network/admin路径下:
listener.ora:监听服务的核心配置文件,用于定义监听的名称、监听的协议、监听的端口、监听对应的数据库实例等信息。tnsnames.ora:客户端或服务端的本地命名配置文件,用于定义数据库服务的连接别名,客户端可以通过别名直接访问对应的数据库实例。
通过netca图形化工具设置监听
netca是Oracle自带的监听配置图形化工具,适合新手操作,步骤如下:
1. 启动netca工具
在Oracle服务端服务器上,打开命令行终端,切换到Oracle用户,执行以下命令启动netca:
# 切换到oracle用户 su - oracle # 启动netca工具 netca
2. 选择监听配置选项
在弹出的netca界面中,选择「监听程序配置」选项,点击下一步。
3. 添加新监听
选择「添加」选项,点击下一步,输入监听程序的名称,默认名称为LISTENER,也可以自定义名称,点击下一步。
4. 选择监听协议
默认选择TCP协议即可,这是Oracle最常用的连接协议,点击下一步。
5. 设置监听端口
默认端口为1521,也可以自定义端口,注意不要和服务器上其他服务的端口冲突,设置完成后点击下一步。
6. 完成配置
选择「否」不配置另一个监听程序,点击下一步,直到出现配置完成的提示,点击完成即可。
通过手动编辑文件设置监听
如果不方便使用图形化工具,也可以直接手动编辑listener.ora文件完成监听配置,步骤如下:
1. 编辑listener.ora文件
找到listener.ora文件,添加以下内容,根据实际环境修改ORACLE_HOME、SID_NAME、端口等信息:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = orcl)
)
)
其中HOST填写数据库服务器的IP地址或者主机名,PORT为监听端口,GLOBAL_DBNAME为数据库全局名称,SID_NAME为数据库实例名,ORACLE_HOME为Oracle数据库的安装目录。
2. 编辑tnsnames.ora文件(可选)
如果需要配置本地连接别名,可以编辑tnsnames.ora文件,添加以下内容:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
监听服务的常用操作命令
监听配置完成后,需要通过命令对监听服务进行启动、停止、状态检查等操作,常用命令如下:
1. 查看监听状态
lsnrctl status
如果监听正常运行,会显示监听的名称、版本、监听地址、支持的实例等信息。
2. 启动监听
lsnrctl start
如果需要启动指定名称的监听,可以在start后面加上监听名称,例如lsnrctl start LISTENER1。
3. 停止监听
lsnrctl stop
4. 重新加载监听配置
修改完listener.ora文件后,不需要停止监听再启动,可以直接执行重新加载命令让配置生效:
lsnrctl reload
常见监听配置问题排查
- 监听启动后状态显示实例未注册:可以检查
listener.ora中的SID_NAME是否和数据库实例名一致,或者手动在数据库实例中执行ALTER SYSTEM REGISTER;命令强制注册实例到监听。 - 客户端连接提示TNS错误:检查客户端
tnsnames.ora中的HOST、PORT、SERVICE_NAME是否和服务端监听配置一致,同时检查服务器防火墙是否放通了监听对应的端口。 - 监听启动提示地址已被占用:检查配置的端口是否被其他进程占用,可以通过
netstat -tunlp | grep 端口号命令查看占用情况,更换未被占用的端口即可。
Oraclelistener监听配置tnsnames_ora修改时间:2026-07-10 19:54:27