目录
[一、修改默认SCAN listener port](#一、修改默认SCAN listener port)
[1.2.修改SCAN listener port](#1.2.修改SCAN listener port)
[1.3.重启SCAN listener生效新端口](#1.3.重启SCAN listener生效新端口)
[二、修改默认Listener Ports](#二、修改默认Listener Ports)
一、修改默认SCAN listener port
1.1.查看当前SCAN监听器配置
SCAN监听器是一个全局的、集群层面的资源 ,而不是某个节点私有 的。它的配置信息存储在OCR**(Oracle Cluster Registry,Oracle集群注册表)中,这个注册表由整个集群共享。**
所以无论你在节点1还是节点2上执行:srvctl config scan_listener,命令都会去访问同一个共享的OCR,所以执行查询的结果将会完全一致。


1.2.修改SCAN listener port
基于上边的认识,我们在修改SCAN监听器端口时,只需要在一个节点上执行,修改会自动同步到整个集群。
在任意节点(比如 p19c01)的grid用户下执行即可
srvctl stop scan_listener
srvctl modify scan_listener -p 11521
示例:
bash
[root@p19c01 ~]# su - grid
上一次登录:二 6月 2 11:00:24 CST 2026
[grid@p19c01 ~]$ srvctl modify scan_listener -p 15212
[grid@p19c01 ~]$
[grid@p19c01 ~]$ exit
登出
[root@p19c01 ~]# su - oracle
上一次登录:二 6月 2 11:10:33 CST 2026pts/0 上
[oracle@p19c01 ~]$
[oracle@p19c01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 2 11:14:36 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> set linesize 200
SQL>
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
forward_listener string
listener_networks string
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
192.168.75.111)(PORT=1521))
remote_listener string p19c-scan:15212
SQL>
1.3.重启SCAN listener生效新端口
$GRID_HOME/bin/srvctl stop scan_listener
$GRID_HOME/bin/srvctl start scan_listener
$GRID_HOME/bin/srvctl status scan_listener
示例:
bash
[grid@p19c01 ~]$ srvctl stop scan_listener
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl config scan_listener
网络 1 的 SCAN 监听程序:
注册邀请的节点:
注册邀请的子网:
端点:TCP:1521
已存在 SCAN 监听程序 LISTENER_SCAN1
SCAN 监听程序已启用。
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl modify scan_listener -p 11522
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl start scan_listener
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl status scan_listener
SCAN 监听程序 LISTENER_SCAN1 已启用
SCAN 监听程序 LISTENER_SCAN1 正在节点 p19c01 上运行
[grid@p19c01 ~]$
1.4.确认更改
$GRID_HOME/bin/srvctl config scan_listener
示例:
bash
[grid@p19c02 ~]$ srvctl status scan_listener
SCAN 监听程序 LISTENER_SCAN1 已启用
SCAN 监听程序 LISTENER_SCAN1 正在节点 p19c01 上运行
[grid@p19c02 ~]$
[grid@p19c02 ~]$ srvctl config scan_listener
网络 1 的 SCAN 监听程序:
注册邀请的节点:
注册邀请的子网:
端点:TCP:15212
已存在 SCAN 监听程序 LISTENER_SCAN1
SCAN 监听程序已启用。
[grid@p19c02 ~]$
[grid@p19c02 ~]$ srvctl status scan_listener
SCAN 监听程序 LISTENER_SCAN1 已启用
SCAN 监听程序 LISTENER_SCAN1 正在节点 p19c01 上运行
[grid@p19c02 ~]$
1.5.注册服务(强制注册)
注意:虽然通过show parameter listener查出来的配置是我们已经修改过的端口配置,但是此时数据库并没有注册新的服务端口,如下这种情况:
bash
[grid@p19c01 ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-JUN-2026 11:48:20
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-JUN-2026 11:09:32
Uptime 0 days 0 hr. 38 min. 48 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/p19c01/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.120)(PORT=15211)))
Services Summary...
Service "525305a5623b5d3de063654ba8c0aa67" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "p19c0" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "p19c0XDB" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
The command completed successfully
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl config scan_listener
网络 1 的 SCAN 监听程序:
注册邀请的节点:
注册邀请的子网:
端点:TCP:15211
已存在 SCAN 监听程序 LISTENER_SCAN1
SCAN 监听程序已启用。
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl status scan_listener
SCAN 监听程序 LISTENER_SCAN1 已启用
SCAN 监听程序 LISTENER_SCAN1 正在节点 p19c01 上运行
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl modify scan_listener -p 15212
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl status scan_listener
SCAN 监听程序 LISTENER_SCAN1 已启用
SCAN 监听程序 LISTENER_SCAN1 正在节点 p19c01 上运行
[grid@p19c01 ~]$ srvctl config scan_listener
网络 1 的 SCAN 监听程序:
注册邀请的节点:
注册邀请的子网:
端点:TCP:15212
已存在 SCAN 监听程序 LISTENER_SCAN1
SCAN 监听程序已启用。
[grid@p19c01 ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-JUN-2026 11:49:49
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-JUN-2026 11:09:32
Uptime 0 days 0 hr. 40 min. 17 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/p19c01/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.120)(PORT=15212)))
The listener supports no services
The command completed successfully
[grid@p19c01 ~]$
结论:The listener supports no services
**这是因为我们知识修改了 SCAN 监听器的端口,而数据库实例无法向新的 SCAN 端口注册服务。**还需执行以下两步操作,表示让数据库中的服务重新注册到新的端口中
ALTER SYSTEM SET REMOTE_LISTENER='p19c-scan:11512' SCOPE=BOTH;
ALTER SYSTEM REGISTER;
bash
[oracle@p19c01 ~]$
[oracle@p19c01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 2 11:52:03 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
forward_listener string
listener_networks string
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
192.168.75.111)(PORT=1521))
remote_listener string p19c-scan:15211
SQL>
SQL> alter system set remote_listener='p19c-scan:15212' scope=both;
System altered.
SQL> alter system register;
System altered.
SQL>
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@p19c01 ~]$ exit
登出
[grid@p19c01 ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-JUN-2026 11:52:58
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-JUN-2026 11:09:32
Uptime 0 days 0 hr. 43 min. 26 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/p19c01/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.120)(PORT=15212)))
Services Summary...
Service "525305a5623b5d3de063654ba8c0aa67" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "p19c0" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
Service "p19c0XDB" has 2 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Instance "p19c02", status READY, has 1 handler(s) for this service...
The command completed successfully
[grid@p19c01 ~]$
结果:从上边就可以看到当执行完上边两部操作之后,就有服务注册进去了。
二、修改默认Listener Ports
2.1.获取当前监听程序的配置信息.
To get the current settings of your listener on RAC issue the following command: srvctl config listener
The output should be similar to the following Name: LISTENER Network: 1, Owner: oracle Home: End points: TCP:1521
示例:
bash
[grid@p19c01 ~]$ srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: p19c01,p19c02
[grid@p19c01 ~]$
[grid@p19c01 ~]$ srvctl config listener
名称: LISTENER
类型: Database Listener
网络: 1, 所有者: grid
主目录: <CRS home>
端点: TCP:1521
监听程序已启用。
监听程序已在以下节点上分别启用:
监听程序已在以下节点上分别禁用:
[grid@p19c01 ~]$
[grid@p19c01 ~]$ lsnrctl status listener
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-JUN-2026 13:57:23
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-JUN-2026 13:39:07
Uptime 0 days 0 hr. 18 min. 15 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/p19c01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.101)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.111)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=p19c01)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.3.0/dbhome_1/admin/p19c0/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_OCR" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "525305a5623b5d3de063654ba8c0aa67" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "p19c0" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "p19c0XDB" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
The command completed successfully
[grid@p19c01 ~]$
2.2.修改端口
使用类似于修改SCAN listener port的命令的指令来修改所使用的端口:srvctl modify listener -l LISTENER -p "TCP:"。这将更改OCR中的条目,以便侦听器重新启动时能够获取新值。现有连接将保持连接状态。
eg:srvctl modify listener -l LISTENER -p "TCP:1522";
示例:
2.3.手工修改LOCAL_LISTENER
修改了节点监听器的端口,必须告诉数据库实例新的端口号,否则PMON进程找不到监听器,服务就无法注册,客户端也就无法连接。
应手动更改 LOCAL_LISTENER。以下是一个示例:
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=))))' scope=both sid='\<您选择的实例\| \* '
示例:
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.75.111)(PORT=1522))))' scope=both sid='p19c01';
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.75.112)(PORT=1522))))' scope=both sid='p19c02';
bash
[oracle@p19c01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 2 14:19:18 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select instance_name,host_name,version,status from v$instance;
INSTANCE_NAME
----------------
HOST_NAME
----------------------------------------------------------------
VERSION STATUS
----------------- ------------
p19c01
p19c01
19.0.0.0.0 OPEN
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.75.111)(PORT=1522))))' scope=both sid='p19c01';
System altered.
SQL>
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.75.112)(PORT=1522))))' scope=both sid='p19c02';
System altered.
SQL>
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
forward_listener string
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=192.
168.75.111)(PORT=1522))))
remote_listener string p19c-scan:15212
SQL>
SQL>
#注:节点2的local_listener输出也就是host不同。
2.4.重新启动监听程序
监听重新启动后,对应配置文件才会更改。
只有在停止并重新启动监听器后,才会更改每个SID的endpoints_listener.ora和local_listener.ora文件。
srvctl stop listener
srvctl start listener
示例:
bash
[grid@p19c01 admin]$ srvctl stop listener
[grid@p19c01 admin]$
[grid@p19c01 admin]$ srvctl start listener
[grid@p19c01 admin]$
2.5.检查监听配置
使用"srvctl config Listener"检查配置。
示例:
bash
[grid@p19c01 admin]$ srvctl config listener
名称: LISTENER
类型: Database Listener
网络: 1, 所有者: grid
主目录: <CRS home>
端点: TCP:1522
监听程序已启用。
监听程序已在以下节点上分别启用:
监听程序已在以下节点上分别禁用:
[grid@p19c01 admin]$
[grid@p19c01 admin]$ srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: p19c01,p19c02
[grid@p19c01 admin]$
[grid@p19c01 admin]$ lsnrctl status listener
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-JUN-2026 14:27:56
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-JUN-2026 14:27:23
Uptime 0 days 0 hr. 0 min. 33 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/p19c01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.101)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.111)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=p19c01)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.3.0/dbhome_1/admin/p19c0/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "525305a5623b5d3de063654ba8c0aa67" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "p19c0" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
Service "p19c0XDB" has 1 instance(s).
Instance "p19c01", status READY, has 1 handler(s) for this service...
The command completed successfully
[grid@p19c01 admin]$
2.6.测试连接
bash
[oracle@p19c01 admin]$ sqlplus profile_test_user/oracle@//p19c-scan:15212/orclpdb
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 2 15:11:56 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Tue Jun 02 2026 14:39:29 +08:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> alter session set container=orclpdb;
Session altered.
SQL>
SQL>
SQL> CONN migrate_src/src123@//p19c01:1522/orclpdb
Connected.
SQL>
SQL> select * from emp;
EMP_ID EMP_NAME
---------- --------------------------------------------------
DEPT SALARY
------------------------------ ----------
1001 张三
技术部 15000
1002 李四
技术部 18000
1003 王五
销售部 12000
EMP_ID EMP_NAME
---------- --------------------------------------------------
DEPT SALARY
------------------------------ ----------
1004 赵六
人事部 10000
SQL>