配置数据库监听程序
数据库监听程序是Oracle数据库中至关重要的组件,作为客户端与数据库服务之间的“守门人”,负责接收来自客户端的连接请求,并将请求转发至相应的数据库实例,正确配置监听程序是保障数据库服务可用性的基础步骤,本文将详细阐述配置数据库监听程序的完整流程,涵盖环境准备、核心配置文件修改、启动与验证等关键环节,帮助读者全面掌握配置技巧。

环境准备与前置检查
在配置监听程序前,需确保环境满足基本要求,并检查现有状态,避免配置冲突。
操作系统与Oracle版本兼容性
- 确认操作系统版本与Oracle数据库版本兼容(Oracle 19c需在Linux/Windows等系统上验证)。
- 检查已安装的Oracle数据库版本(需匹配监听程序对应的Oracle客户端版本,否则可能导致连接失败)。
必要的权限与目录权限
- 以
oracle用户(或具有相应权限的用户)登录系统,确保对监听程序目录有读写权限(通常为$ORACLE_HOME/network/admin)。 - 检查
$ORACLE_HOME/bin目录下是否存在lsnrctl工具(监听程序管理工具)。
检查现有监听程序状态
运行以下命令查看当前监听程序是否已启动:
$ORACLE_HOME/bin/lsnrctl status listener
若输出显示“Listener is not running”或“Listener status…”,则需先启动监听程序或检查配置问题。
配置监听器配置文件(listener.ora)
监听器配置文件是监听程序的核心配置文件,定义了监听程序的网络监听地址、协议、服务名等信息,通常位于$ORACLE_HOME/network/admin目录下。
基本参数配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
)- ADDRESS_LIST:指定监听程序的IP地址和端口。
HOST:监听程序所在服务器的IP地址(需与服务器网络配置一致)。PORT:监听端口(默认为1521,可根据需求修改,但需确保与数据库实例配置一致)。
服务名配置
SERVICES_LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)- SERVICE_NAME:指定监听程序提供的服务名,用于关联数据库实例(需与数据库实例配置中的
SERVICE_NAMES参数一致)。
高级配置选项(可选)
- MAX_CONNECTIONS:限制最大连接数,防止资源耗尽(
MAX_CONNECTIONS = 200)。 - LOG_LEVEL:设置日志记录级别(如
LOG_LEVEL = 1表示仅记录错误信息,LOG_LEVEL = 10表示记录详细日志)。 - TRACE_LEVEL:设置跟踪级别(如
TRACE_LEVEL = 0表示关闭跟踪,TRACE_LEVEL = 10表示详细跟踪)。
配置网络服务名配置文件(tnsnames.ora)
网络服务名配置文件是客户端连接数据库时使用的配置文件,定义了服务名与数据库实例的连接信息,通常位于Oracle客户端的$ORACLE_HOME/network/admin目录下。

服务名定义
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)- HOST:数据库服务器的IP地址(需与监听程序配置中的
HOST一致)。 - PORT:监听端口(需与监听程序配置中的
PORT一致)。 - SERVICE_NAME:数据库实例的服务名(需与监听程序配置中的
SERVICE_NAME一致)。
多实例配置(若存在多个数据库实例)
若系统中存在多个数据库实例,可在tnsnames.ora中定义多个服务名:
DB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DB1)
)
)启动与验证监听程序
使用lsnrctl工具启动监听程序
以oracle用户登录系统,进入监听程序目录(如$ORACLE_HOME/bin),执行以下命令启动监听程序:
$ORACLE_HOME/bin/lsnrctl start listener
启动成功后,输出信息会显示“Listener started.”。
验证监听程序状态
运行以下命令检查监听程序是否正常运行:
$ORACLE_HOME/bin/lsnrctl status listener
输出示例:

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 07-JUN-2025 10:30:15 Copyright (c) 1991, 2020, Oracle. All rights reserved. Connected to listener Listener Status ... ... Listeners running on this machine: ...
测试客户端连接
使用SQL*Plus连接测试:
sqlplus username/password@ORCL
若能成功连接,说明监听程序配置正确。
常见问题与解决方案(FAQs)
问题:监听程序无法启动,提示“listener already started”
- 解决方案:
先停止现有监听程序(lsnrctl stop listener),再尝试启动,如果系统中有多个监听程序,需确认是否为同名监听程序冲突(可通过lsnrctl services listener查看当前所有监听服务)。
问题:客户端无法连接数据库,提示“TNS:protocol:address”
- 解决方案:
检查tnsnames.ora文件中的服务名配置是否正确,确保HOST、PORT、SERVICE_NAME与监听程序配置一致,确认数据库实例是否已启动(通过sqlplus / as sysdba检查实例状态,如SQL> startup)。
通过以上步骤,可完成数据库监听程序的配置与验证,确保客户端能稳定连接到数据库实例,配置过程中需重点关注网络参数的一致性(如IP地址、端口、服务名),并定期检查监听程序状态,保障数据库服务的可用性。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/201345.html


