行业动态

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
Oracle 修改默认监听端口故障分析
2022-05-29 19:39:53 【

环境说明:

OS:Redhat 7.5

DB:Oracle 11.2.0.4.0 单实例

问题:

测试环境数据库端口使用默认端口1521,尝试修改默认端口为8821,修改成功后进行验证。

发现通过8821可以登录到数据库了,搞定,收工?

sqlplus cjc/******@10.0.0.10:8821/cjcdb

在验证下1521是不是连接不上了,居然还能连接?

sqlplus cjc/******@10.0.0.10:1521/cjcdb

操作过程如下:

1.停止监听

lsnrctl stop

2.修改监听文件listener.ora

cd $ORACLE_HOME/network/admin

cp listener.ora listener.ora.bak

vi listener.ora

1
2
3
4
5
LISTENER =
   (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
       (ADDRESS = (PROTOCOL = TCP)(HOST = myhostname)(PORT = myport))
   )

3.修改tnsnames.ora文件

cd $ORACLE_HOME/network/admin

cp tnsnames.ora tnsnames.ora.bak

vi tnsnames.ora

(1)修改对应端口号

(2)文件末尾添加如下内容

1
2
3
4
MYLISTENER =
   (DESCRIPTION =
       (ADDRESS = (PROTOCOL = TCP)(HOST = myserver )(PORT = myport))
)

4.修改LOCAL_LISTENER参数

show parameter local

ALTER SYSTEM SET LOCAL_LISTENER='MYLISTENER' SCOPE=BOTH;


5.启动监听文件

lsnrctl start


6.验证

sqlplus cjc/******@10.0.0.10:8821/cjcdb

成功!

sqlplus cjc/******@10.0.0.10:1521/cjcdb

成功?

sqlplus cjc/******@10.0.0.10:61521/cjcdb

随便写一个端口号,失败

问题排查:

为什么改完端口了通过1521还能远程登录?

停止监听

lsnrctl stop

测试,通过1521还能远程登录

sqlplus cjc/******@10.0.0.10:1521/cjcdb


难道是配置了多个监听?

全盘搜索,只有一个listener.ora,而且配置没问题

#find / -name listener.ora


检查1521端口对应的进程

lsof -i:1521

找到1521对应进程pid

查看进程信息

ps -ef|grep pid

xxx/bin/tnslsnr listener -inherit

已经停了监听,为何还有监听进程

手动杀掉这个进程,重启监听恢复正常。

问题原因:

Metalink上没有找到对应版本的问题,

和Bug 4518443类似,但是版本对不上,这个bug描述如下:

The listener process can hang under load while spawning a process.  

The last process the listener spawned will have a stack which

includes a mutex lock call in ons_atfork_prepare().


如何检查你的数据库是否有这个问题?

ps -ef|grep -i tnslsnr|grep -v grep

如果有2个进程,说明可能会有类似的问题。


解决方案:

临时解决方案:

杀掉多余的进程。

永久解决方案:

单实例下,将SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF配置到监听文件汇总。

或者打补丁。

其他:如何修改RAC环境下默认监听端口号?

1.查看当前监听配置

srvctl config listener

2.修改ocr中记录的端口号

srvctl modify listener -l LISTENER -p "TCP:<new-listener-port>"

3.修改scan_listener端口号

srvctl modify scan_listener -p <new-scan-port>

4.修改LOCAL_LISTENER

alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<Host-name>)(PORT=<new-port-number>))))' scope=both sid='[<your-chosen-instance> | * ] '

5.修改REMOTE_LISTENER

6.重启监听

参考:

Changing Default Listener Port Number (Doc ID 359277.1)

Changing Listener Ports On RAC/EXADATA (Doc ID 1473035.1)

Bug 4518443 - Listener hang under load (Doc ID 4518443.8)


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇较多邮件安全解决方案仍存在风险 下一篇掌握这五点建议,Linux学习不再难

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:13051179500 18910191973
企业QQ:1245940436
技术支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:18910191973
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800