首先查看当前的监听设置
$ srvctl config listener
Name: LISTENER
Network: 1, Owner: oracle
Home:
End points: TCP:1521
$srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
以下是将原监听端口1521修改为1522的步骤
1. 修改本地监听
su - grid
srvctl modify listener -l LISTENER -p "TCP:1522"
这将更改OCR中的条目,以便LISTENER重新启动将获取新值,现有的连接将保持连接。
2. 修改scan listener
su - grid
srvctl modify scan_listener -p 1522
3. 修改LOCAL_LISTENER和REMOTE_LISTENER参数(所有节点都要修改)
SQL> create pfile='/home/oracle/pfile_bak.ora' from spfile;
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.200.173.135)(PORT=1522))' sid='pfdb1';
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.200.173.136)(PORT=1522))' sid='pfdb2';
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.200.173.137)(PORT=1522))' sid='pfdb3';
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.200.173.138)(PORT=1522))' sid='pfdb4';
SQL> alter system set remote_listener='newpfdbn-scan:1522' sid='*';
4. endpoints_listener.ora 和 local_listener.ora文件在监听关闭并重启后会自动修改
srvctl stop listener -l LISTENER
srvctl start listener -l LISTENER
srvctl stop scan_listener
srvctl start scan_listener
5. 重新检查配置
srvctl config listener
srvctl config scan_listener
6. 检查监听状态
lsnrctl status --所有节点
lsnrctl status LISTENER_SCAN1 --scan监听运行的节点
参考:Changing Listener Ports On RAC/EXADATA (Doc ID 1473035.1)