跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何修改Oracle默认端口1521_监听配置文件与本地服务名更新

需修改listener.ora中(PORT=1521)为新端口(如1522),停监听后编辑,确保所有TCP端口同步更新,再执行lsnrctl reload并验证status;同时必须同步更新tnsnames.ora中对应服务名的PORT值,并在必要时调整数据库local_listener参数以确保动态注册成功。 怎么改
listener.ora
里的监听端口 oracle 默认监听 1521 端口,改它得动
listener.ora
,位置通常在
$oracle_home/network/admin/
下。改之前先停掉监听:
lsnrctl stop
,否则配置不生效。 打开
listener.ora
,找到
LISTENER
(或你自定义的监听名)段落下的
(PORT = 1521)
,改成目标端口,比如
(PORT = 1522)
。注意别只改一处——如果用了 IPC 或其他协议,
(IPC = ...)
不用动,但所有
TCP
类型的
PORT
都得同步更新。 改完运行
lsnrctl reload
(不是
start
),让监听器热加载新配置。再用
lsnrctl status
看输出里是否显示新端口,且状态是
READY
。 常见错误:改了
listener.ora
没 reload,客户端连老端口还能通,新端口却连不上 常见错误:防火墙没开新端口,
telnet host 1522
直接超时 注意:Windows 上服务名可能叫
OracleOraDB21Home1TNSListener
(版本/路径不同名字不同),改完配置后若监听起不来,查 Windows 事件查看器里的 Oracle 日志 tnsnames.ora 里对应的服务名怎么同步更新
tnsnames.ora
是客户端连库用的,和监听端口强绑定。只要监听端口变了,这里就必须改,否则
sqlplus user/pass@MYDB
会报
ORA-12170: TNS:Connect timeout occurred
。 找到你要用的服务名段(比如
MYDB =
开头的部分),定位到
(HOST = ...)
和
(PORT = ...)
这一行,把
PORT
值换成新端口,比如从
1521
改成
1522
。如果
HOST
是
localhost
或
127.0.0.1
,确保数据库实例确实在本机;如果是远程地址,确认网络路由可达。 常见错误:只改了服务器端
listener.ora
,忘了改客户端(包括应用服务器、开发机)的
tnsnames.ora
常见错误:多个环境共用同一份
tnsnames.ora
,结果一个库改端口,其他库连不上了 小技巧:用
tnsping MYDB
测试解析和基础连通性,它不校验用户名密码,只看网络层和监听是否响应 数据库初始化参数
local_listener
什么时候要动 绝大多数单机部署不用碰
local_listener
,但如果你启用了动态注册(默认开启)、或者监听名不是默认的
LISTENER
、或者监听端口不是 1521,数据库实例启动后可能无法自动向监听器注册服务名,导致
lsnrctl status
里看不到
SERVICE_NAME
,只有
UNKNOWN
状态。 这时就得进 SQL*Plus 连上库,查当前值:
show parameter local_listener
。如果为空,或指向旧端口,就执行:
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))' scope=both;
(把
1522
换成你的新端口)。 必须动的情况:监听名改了(比如叫
MYLISTENER
),或监听绑定了非 localhost 的 IP 不用动的情况:监听名仍是
LISTENER
、端口仍是 1521、
HOST
是
localhost
或未指定(靠默认解析) 验证方式:改完等 30 秒,再跑
lsnrctl status
,看到
SERVICE_NAME
下有你的库名,且状态是
READY
,才算注册成功 改完端口后应用连不上?优先排查这三处 端口一改,最常出现的是“明明配置都改了,就是连不上”。别急着重装,按顺序快速过这三处: 查监听是否真在新端口上监听:
netstat -an | grep 1522
(Linux/macOS)或
netstat -ano | findstr :1522
(Windows),确认有
LISTENING
状态行 查数据库实例是否已注册到该监听:
lsnrctl status
输出里有没有你的
SERVICE_NAME
,状态是不是
READY
;如果没有,重点看
local_listener
设置和监听日志(
$ORACLE_HOME/network/log/listener.log
) 查应用侧连接串:JDBC 里是
jdbc:oracle:thin:@host:1522:orcl
还是
@host:1522/MYDB
?Service Name 模式(
/
)和 SID 模式(
:
)不能混用,且必须和服务名大小写、拼写完全一致 端口改动看着简单,实际卡点全在“多端同步”和“注册可见性”上。最容易被忽略的是:监听器 reload 后,数据库实例不会自动重新注册,得等下一次动态注册周期(默认60秒),或者手动触发
alter system register;
。

相关文章