注意:
1.本文的os是Oracle Linx 5.8,DB版本是11.2.0.4.0。 本文非exadata环境,若是Exadata环境,请读Changing Listener Ports On RAC/EXADATA (文档 ID 1473035.1) 2.本文修改了如下监听器的端口号,改为1528
1.(1)修改前的检查
[grid@hosta admin]$ srvctl config listener Name: LISTENER Network: 1, Owner: grid Home: < CRS home > End points: TCP:1521 [grid@hosta admin]$
(2)查询系统的hostname与oracle数据库的sid
[grid@hosta ~]$ srvctl status database -d orcl
2.仅仅在一个主机上执行, 修改本地监听的端口
[grid@hosta admin]$ srvctl modify listener -l LISTENER -p "TCP:1528"
3. 修改SCAN监听的端口
将SCAN监听的端口修改为1528,本地监听的端口不变,依然为1521:
[grid@hosta ~]
修改后查看监听状态:
[grid@hosta ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2 .0 .3 .0 - Production on 06 -5 月 -2016 01 :32 :52
Copyright (c) 1991 , 2011 , Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
LISTENER 的 STATUS
------------------------
别名 LISTENER_SCAN1
版本 TNSLSNR for Linux: Version 11.2 .0 .3 .0 - Production
启动日期 06 -5 月 -2016 01 :31 :28
正常运行时间 0 天 0 小时 1 分 23 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /u01/app/11.2 .0 /grid/product/db_1/network/admin/listener.ora
监听程序日志文件 /u01/app/11.2 .0 /grid/product/db_1/log/diag/tnslsnr/web2/listener_scan1/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168 .1 .15 )(PORT=1521 )))
服务摘要..
服务 "orcl" 包含 2 个实例。
实例 "orcl1" , 状态 READY, 包含此服务的 1 个处理程序...
实例 "orcl2" , 状态 READY, 包含此服务的 1 个处理程序...
服务 "orclXDB" 包含 2 个实例。
实例 "orcl1" , 状态 READY, 包含此服务的 1 个处理程序...
实例 "orcl2" , 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
[grid@web2 ~]$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
发现SCAN监听端口号还是1521,是因为没有重启监听原因,接下来重启监听:
[grid@hosta ~]
[grid@hosta ~]
更改确认:
[grid@hosta ~]
SCAN 监听程序 LISTENER_SCAN1 已存在。端口: TCP : 3521
[root@hosta ~]
4.修改LOCAL_LISTENER仅仅在一个主机上执行
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.183)(PORT = 1528))' scope = both sid = 'orcl1' ; alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.184)(PORT = 1528))' scope = both sid = 'orcl2' ;
5.修改remote_listener
alter system set remote_listener = 'orcl-scan:1528' scope = both ;
6.在第一个节点关闭本地监听
[grid@hosta ~]$ srvctl stop listener -l LISTENER -n hosta
修改第一个节点的$GI_HOME/network/admin/endpoints_listener.ora文件,将1521改为1528
[grid@hosta admin]$ cat listener.ora--- > 该文件中不存储端口号,因此不用修改。 LISTENER =( DESCRIPTION =( ADDRESS_LIST =( ADDRESS =( PROTOCOL = IPC )( KEY = LISTENER )))) # line added by Agent LISTENER_SCAN1 =( DESCRIPTION =( ADDRESS_LIST =( ADDRESS =( PROTOCOL = IPC )( KEY = LISTENER_SCAN1 )))) # line added by Agent ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1 = ON # line added by Agent ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON # line added by Agent [grid@hosta admin]$ cat endpoints_listener.ora ---> 该文件中存储端口号,修改本文件即可。 LISTENER_HOSTA =( DESCRIPTION =( ADDRESS_LIST =( ADDRESS =( PROTOCOL = TCP )( HOST = hosta -vip)( PORT = 1528 ))( ADDRESS =( PROTOCOL = TCP )( HOST = 192 .168.188.181)( PORT = 1528 )( IP = FIRST )))) # line added by Agent [grid@hosta admin]$
启动第一个节点本地监听
[grid@hosta admin]$ srvctl start listener -l LISTENER -n hosta
7.在第二个节点上进行相同的操作。
[grid@hostb ~]$ srvctl stop listener -l LISTENER -n hostb 修改endpoints_listener.ora文件,不再贴出 [grid@hostb admin]$ srvctl start listener -l LISTENER -n hostb
6.确认修改效果
[grid@hostb admin]$ srvctl config Listener Name: LISTENER Network: 1, Owner: grid Home: < CRS home > End points: TCP:1528
之后,应用程序连接串以及dblink的定义修改端口号,启动业务进行测试 即可。