在 Debian 上优化 lsnrctl(Oracle Listener),通常目标是:减少连接延迟、提高并发能力、增强稳定性、便于运维。下面按「配置优化 → 系统优化 → 运维建议」来说明。
文件位置一般在:
$ORACLE_HOME/network/admin/listener.ora
避免使用默认 1521 被滥用,明确监听地址:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
✅ 不建议用 HOST=localhost 或通配地址(性能 & 安全)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
(QUEUESIZE = 512)
)
)
QUEUESIZE:监听队列长度(默认通常 128)ADR_BASE_LISTENER = /u01/app/oracle
LOGGING_LISTENER = OFF
# 或
TRACE_LEVEL_LISTENER = OFF
⚠ 日志过多会严重拖慢 listener
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1)
(SID_NAME = orcl)
)
)
适合:
ulimit -n
推荐:
* soft nofile 65536
* hard nofile 65536
修改:
/etc/security/limits.conf
sysctl -w net.core.somaxconn=1024
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
永久:
/etc/sysctl.conf
避免 root 启动,确保:
lsnrctl start
由 oracle 用户执行
lsnrctl status
lsnrctl services
lsnrctl reload # 不中断连接
✅ 修改 listener.ora 后优先用 reload
$ORACLE_BASE/diag/tnslsnr/.../trace
可脚本化清理或限制大小
LISTENER1 → 1521
LISTENER2 → 1522
客户端通过 tnsnames.ora 做负载
✅ 生产环境推荐配置:
listener.ora直接贴配置或说现象就行。