oracle 监听无法创建 ,提示端口占用,监听自动停止

本文记录了解决Oracle监听服务无法启动的问题,焦点在于监听日志过大导致的服务异常。通过排查,发现必须删除过长的日志文件名才能恢复监听服务。

发现oracle忽然连接不上了,查询后发现监听停掉了,重启又启不来,老是自动停止,试了以下sqlplus 可以连接,怀疑是监听日志满了超过4G了,查看后发现真的是,于是停掉了oracle服务,然后给监听日志改了名字,重启服务,发现还是启动不了,查看日志已经产生了新的日志,就这样折腾了两天,各种报错 适配器协议错误,filename too long 什么的,最后发现监听那个大日志必须删掉才行,改名字是不行的,删掉之后,监听服务立马就可以启动了。 

在Windows系统下,当Oracle监听端口(如默认的1521)被占用或被系统保留,导致Oracle监听无法正常启动时,可以采取以下措施解决该问题: ### 1. 检查端口占用情况 使用 `netstat` 命令查看端口是否被占用: ```bash netstat -aon | findstr :1521 ``` 如果命令未返回任何结果,说明端口可能被Windows系统保留[^1]。 ### 2. 检查Windows保留端口范围 Windows系统可能会在启动时随机预留一部分端口供系统使用。可以通过以下命令查看当前的保留端口范围: ```bash netsh interface ipv4 show excludedportrange protocol=tcp ``` 如果发现1521端口在保留范围内,则需要调整系统保留的端口范围,以避免冲突。 ### 3. 修改系统保留端口范围 通过以下命令调整系统保留端口范围,将1521排除在保留范围之外: ```bash netsh interface ipv4 set dynamicport tcp start=49152 num=16384 ``` 上述命令将TCP动态端口分配范围设置为49152到65535,确保1521端口不被系统占用[^1]。 ### 4. 修改Oracle监听端口 如果不想更改系统端口范围,也可以修改Oracle监听器使用的端口。编辑 `listener.ora` 文件,修改监听端口: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 8080)) ) ) ``` 保存后重启Oracle监听服务,使其使用新的端口[^2]。 ### 5. 重启Oracle监听服务 修改配置后,需重启Oracle监听服务以使更改生效。可以通过以下方式重启服务: - 打开“服务”管理器(通过“运行”输入 `services.msc`)。 - 找到 `OracleOraDb11g_home1TNSListener` 或类似名称的服务。 - 右键选择“重启”。 ### 6. 验证监听状态 使用 `lsnrctl` 命令验证监听器状态: ```bash lsnrctl status ``` 如果显示监听器正在运行且端口正确,则说明问题已解决。 ### 7. 防止未来端口冲突 为避免未来再次出现类似问题,建议: - 将Oracle监听端口设置为非默认端口(如8080、8090等)。 - 确保系统保留端口范围与数据库服务端口无冲突。 - 定期检查端口使用情况,防止其他应用程序占用监听端口[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值