Oracle连接异常:指定1521端口却尝试1522端口连接?
以下是几种可能导致该问题的常见情况:
远程数据库监听的多端口配置/动态注册
远程Oracle数据库的监听程序可能同时配置了1521和1522两个监听端口,或者数据库实例在动态注册时,因1521端口临时异常(如监听重启、资源占用),临时注册到了1522端口。当你通过1521成功连接后,数据库可能返回实例实际使用的端口信息,导致SQL Developer后续尝试直接连接1522。SQL Developer的连接缓存机制
SQL Developer会缓存连接元数据(包括数据库实例端口),如果某次连接时意外获取到1522端口的信息,后续部分连接请求可能复用这个缓存值,而非严格读取你配置的1521端口。多Oracle客户端配置冲突
你的Azure服务器上可能安装了多个Oracle客户端组件(如ODBC客户端+Oracle Instant Client),不同组件的tnsnames.ora/sqlnet.ora配置文件优先级不同。若某个高优先级配置文件中存在指向1522端口的条目,SQL Developer可能偶尔读取到该配置。数据库连接重定向机制
远程数据库可能开启了连接重定向(用于负载均衡、实例迁移等场景),当客户端通过1521连接后,数据库会发送重定向指令,要求客户端切换到1522端口建立实际连接。这种情况可在客户端sqlnet.ora中添加配置禁用重定向:DISABLE_OOB=ON网络中间设备的临时规则
防火墙、负载均衡器等网络设备可能存在临时端口映射规则,将1521的请求偶尔转发到1522,导致SQL Developer发起对1522的连接尝试。
内容的提问来源于stack exchange,提问作者Programnik

