lsnrctl 是 Oracle Database Listener 的管理工具,不是 Debian 自带的系统命令。因此“优化 Debian 上的 lsnrctl”通常指 优化 Oracle Listener 在 Debian / Linux 上的性能、稳定性和资源使用。下面从 系统、Oracle、网络、参数、监控 五个层面给你一套实用优化建议。
先确认你用的是:
lsnrctl version
以及:
uname -a
cat /etc/debian_version
常见问题:
编辑:
sudo vi /etc/sysctl.conf
推荐参数(示例,按内存调整):
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
应用:
sudo sysctl -p
编辑:
sudo vi /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
⚠️ Debian 使用 pam_limits 才生效,确认:
grep pam_limits /etc/pam.d/common-session
路径示例:
$ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(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)
)
)
# 优化参数
DIAG_ADR_ENABLED_LISTENER = OFF
LOGGING_LISTENER = OFF
INBOUND_CONNECT_TIMEOUT_LISTENER = 30
✅ 解释:
DEDICATED_THROUGH_BROKER_LISTENER = ON
SQLNET.INBOUND_CONNECT_TIMEOUT = 30
SQLNET.EXPIRE_TIME = 10
✅ 作用:
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo sysctl -w net.ipv4.tcp_fin_timeout=30
防 TIME_WAIT 堆积
Debian 10+ 使用 systemd 管理 listener:
sudo vi /etc/systemd/system/oracle-listener.service
[Unit]
Description=Oracle Listener
After=network.target
[Service]
Type=forking
User=oracle
Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1"
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable oracle-listener
lsnrctl status
lsnrctl services
| 问题 | 原因 | 解决 |
|---|---|---|
| 连接慢 | DNS 反向解析 | 加 HOSTNAME_LOOKUP=off |
| CPU 高 | listener 日志过大 | 关闭日志 |
| 连接失败 | 半连接 | 调整 INBOUND_CONNECT_TIMEOUT |
Debian 上优化 lsnrctl = 系统参数 + listener.ora 精简 + 网络调优 + 关闭不必要日志
如果你愿意,可以告诉我:
我可以给你一份 针对你环境的精确优化方案。