修改$ORACLE_HOME/network/admin/listener.ora文件(监听器配置文件),优化核心参数以提升并发处理能力:
LISTENER_PROCESSES(监听器进程数,建议根据服务器CPU核心数调整,如4核可设为4-8)、LISTENER_MAX_CONNECTIONS(监听器允许的最大连接数,如1000),避免因连接数限制导致请求排队。SQLNET.EXPIRE_TIME(连接超时时间,单位:秒,如10秒,减少无效连接占用资源)、RETRY_COUNT(监听器遇到错误时的重试次数,如3次,提高稳定性)。LISTENER_QUEUE_SIZE(监听器请求队列大小,如100,处理更多并发连接请求)。LOG_LEVEL_LISTENER(日志级别,生产环境建议设为OFF或SEVERE,减少日志写入开销)、MAX_LOG_FILES(日志文件最大数量,如5个)、MAX_LOG_FILE_SIZE(单个日志文件最大大小,如100M),避免日志文件过大占用磁盘空间。sysctl命令启用tcp_fastopen内核选项(sudo sysctl -w net.ipv4.tcp_fastopen=3),减少TCP三次握手时间,提升连接速度。/etc/sysctl.conf文件,增加TCP发送/接收缓冲区大小(如net.ipv4.tcp_sndbuf=16777216、net.ipv4.tcp_rcvbuf=16777216),提高网络吞吐量。/etc/security/limits.conf文件,添加oracle soft nofile 65536、oracle hard nofile 65536(oracle用户可打开的文件描述符数量),避免因文件描述符不足导致连接失败。vm.swappiness=10,减少内存交换)、kernel.pid_max=65536(增加进程ID数量),提升系统并发处理能力。listener.ora文件中为数据库实例配置SERVER=SHARED(如SID_DESC=(SID_NAME=your_sid)(ORACLE_HOME=/path/to/oracle/home)(SERVER=SHARED)),减少监听器管理的进程数量,提高并发连接能力(适用于高并发场景)。listener.ora中启用FAN(ENABLE_FAN=ON),减少应用程序在数据库实例变化(如实例重启)时重新建立连接的次数,降低延迟。lsnrctl status命令检查监听器的运行状态(如监听的地址、端口、注册的数据库实例),确认无异常。lsnrctl services命令查看监听器服务的连接数、请求处理时间等统计信息,识别高负载的服务或实例。lsnrctl trace命令启用监听器跟踪(如lsnrctl set trace_level_listener 16,16为调试级别),生成跟踪文件(位于$ORACLE_DIAGNOSTIC_DEST/trace目录),分析性能瓶颈。listener.ora文件,移除不再使用的服务或实例注册(如已下线的数据库实例),减少监听器的管理开销。lsnrctl stop→lsnrctl start),释放累积的资源(如内存、文件描述符),避免长期运行导致的性能下降。在应用程序端配置连接池(如Oracle UCP、HikariCP),复用数据库连接,减少对监听器的直接连接请求(每次连接无需重新建立TCP连接和身份验证),降低监听器的负载。