Oracle rac里头listener端口改了该怎么弄,简单说说步骤和注意点
- 问答
- 2026-01-14 09:55:30
- 2
最重要的一点是,在Oracle RAC环境中修改监听器端口不像在单机数据库中那么简单,因为它涉及到集群中多个节点之间的协调,并且与SCAN(服务器应用集群网络)和本地监听器都有关联,整个过程需要谨慎,最好在业务低峰期进行,并提前做好备份。
核心思路是分两步走:先修改集群中每个节点上的本地监听器配置,然后再修改SCAN监听器的配置。 不能只改一边,否则连接会出问题。

以下是具体的步骤和关键注意点:
第一步:准备工作(非常重要,能避免很多问题)

- 备份配置:在开始任何操作之前,务必备份两个关键文件,一个是每个节点上的
listener.ora文件(通常位于$ORACLE_HOME/network/admin目录下),另一个是每个节点上的tnsnames.ora文件,这样如果修改出现问题,可以迅速回退。 - 确认当前配置:使用命令
lsnrctl status LISTENER(这里的LISTENER是你的本地监听器名称,通常是LISTENER)在每个节点上检查当前监听器的状态和端口号,用srvctl config scan_listener命令查看当前SCAN监听器的配置,包括端口号。 - 规划新端口号:选择一个系统中未被占用的新端口号,确保这个端口号在所有集群节点上都是可用的,最好通过系统管理员确认防火墙规则已经允许新的端口号通过,否则改完了谁也连不上。
- 通知相关人员:提前通知应用开发团队、系统管理员和所有数据库用户,告知他们维护窗口和连接字符串可能需要变更。
第二步:修改本地监听器(每个节点都需要操作)
- 停止本地监听器:在每个节点上,以oracle用户身份执行命令:
srvctl stop listener -n <节点名>,在节点rac1上,命令是srvctl stop listener -n rac1,使用srvctl命令而不是简单的lsnrctl stop,是因为srvctl能确保集群资源管理器知道这个操作。 - 修改listener.ora文件:在每个节点上,编辑
listener.ora文件,找到定义本地监听器的部分(通常是名为LISTENER的条目),将其中的PORT参数值从旧的端口号(比如1521)改为新的端口号(比如1522),保存文件。 - 修改本地TNS条目:在每个节点上,编辑
tnsnames.ora文件,找到指向本地实例的连接描述符(通常名称类似<实例名>_LOCAL),将其中的PORT参数也改为新的端口号,这一步是为了确保数据库实例在注册到监听器时,能使用正确的新地址。 - 启动本地监听器:在每个节点上,执行命令:
srvctl start listener -n <节点名>。 - 验证修改:在每个节点上,执行
lsnrctl status LISTENER,确认监听器已经在新端口上启动并运行,并且数据库实例已经成功注册到了这个新端口的监听器上。
第三步:修改SCAN监听器
- 停止SCAN监听器:在任意一个节点上,以oracle用户身份执行命令:
srvctl stop scan_listener,SCAN监听器是集群范围的资源,在一个节点上操作即可。 - 修改SCAN监听器配置:执行命令:
srvctl modify scan_listener -p <TCP>/<新端口号>,要将端口从1521改为1522,命令是srvctl modify scan_listener -p TCP/1522,这个命令会更新Oracle集群ware(OCR)中的配置。 - 启动SCAN监听器:执行命令:
srvctl start scan_listener。 - 验证修改:执行
srvctl config scan_listener确认SCAN监听器的端口已经更新,可以用lsnrctl status scan_listener命令(需要在SCAN VIP所在的当前主节点上执行)来查看其详细状态,确认它正在监听新的端口。
第四步:最终验证和收尾工作
- 测试连接:这是最关键的一步,分别使用以下两种方式的连接字符串进行连接测试:
- 通过SCAN的新端口连接:使用类似
sqlplus username/password@scan_name:新端口/service_name的格式进行连接,确保能从集群外的客户端成功连接。 - 通过本地监听器的新端口连接:使用类似
sqlplus username/password@node1-vip:新端口/service_name的格式,测试直接连接到某个特定节点。
- 通过SCAN的新端口连接:使用类似
- 更新应用配置:通知应用团队将他们连接数据库的字符串中的端口号更新为新的端口号,如果应用使用的是TNS名称,则需要更新它们引用的
tnsnames.ora文件中的端口定义。 - 回顾检查:再次检查所有节点的
listener.ora和tnsnames.ora文件,确保没有遗漏或错误。
主要注意点总结:
- 顺序很重要:一定要先改完所有节点的本地监听器并确保实例注册成功,再去修改SCAN监听器,顺序反过来可能会导致服务中断。
- 使用集群命令:操作监听器的启动、停止和修改,尽量使用
srvctl命令而不是lsnrctl,这样能保证集群资源状态的一致性。 - 端口冲突:确保新端口在所有节点上都没有被其他进程占用。
- 防火墙:这是最容易忽略的一点,务必在修改前就协调好开放新端口的防火墙策略,否则修改成功后网络不通,排查起来很麻烦。
- 回退计划:万一修改失败或出现问题,要明确回退步骤:停止所有监听器,用备份的
listener.ora和tnsnames.ora文件覆盖,然后用srvctl命令重新启动监听器。
在Oracle RAC中改监听端口是一个需要细心和协调的操作,只要按照步骤,做好准备和验证,就能平稳完成。

本文由钊智敏于2026-01-14发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/80486.html
