当然可以!下面是 修改 Oracle 数据库监听器(Listener)端口号的完整步骤教程,适用于 Linux 和 Windows 环境下的 Oracle 数据库(如 Oracle 11g、12c、19c 等)。
🎯 场景说明
Oracle 默认监听端口是 1521,如果你想因安全性、端口冲突或网络策略更改这个端口,比如改成 1522,就可以按照以下步骤进行。
📝 一、查看当前监听端口
lsnrctl status
你会看到类似输出(重点是 Port=1521
):
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
🛠️ 二、修改监听配置文件 listener.ora
该文件位于:
- Linux:
$ORACLE_HOME/network/admin/listener.ora
- Windows:
%ORACLE_HOME%\network\admin\listener.ora
1. 打开该文件,找到类似配置:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
)
)
2. 把 PORT = 1521
改成你想要的新端口,比如 1522
:
(PORT = 1522)
🛠️ 三、修改客户端配置 tnsnames.ora
如果你有客户端或远程连接数据库的配置,也需要改端口。
文件路径同上,一般是:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1522))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
将其中的 (PORT = 1521)
改为你设定的新端口。
🔄 四、重启监听器
lsnrctl stop
lsnrctl start
或使用 reload(有时无需 stop)
lsnrctl reload
✅ 五、验证端口是否修改成功
lsnrctl status
确认输出中已经是新端口 1522
。
🔁 六、修改数据库注册端口(可选)
某些自动注册的数据库服务也要同步更新端口号:
修改 local_listener
参数(在 sqlplus 中执行):
ALTER SYSTEM SET local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))' SCOPE=BOTH;
然后:
ALTER SYSTEM REGISTER;
🚀 七、测试连接
- 使用 SQL*Plus、PL/SQL Developer、DBeaver 等工具用新端口连接数据库;
- 如果使用 JDBC 连接,URL 中端口也需要修改:
jdbc:oracle:thin:@your_host:1522:orcl
🧩 补充说明
问题 | 说明 |
---|---|
监听器无法启动? | 检查端口是否被占用:`netstat -anp |
连接失败? | 防火墙是否放通了新端口?客户端是否同步修改了端口? |
自动注册无效? | 请检查 local_listener 是否设置正确并执行 ALTER SYSTEM REGISTER; |
好的!下面是整理好的 Oracle 修改监听端口完整教程(可复制为 Markdown 文档使用):
🛠️ Oracle 修改监听端口号完整教程
适用于 Oracle 11g / 12c / 19c / 21c,适配 Linux / Windows 系统。
✅ 一、查看当前监听端口
lsnrctl status
如果监听正常,输出中会包含当前端口,如:
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
✅ 二、修改监听配置文件 listener.ora
📌 文件位置:
- Linux:
$ORACLE_HOME/network/admin/listener.ora
- Windows:
%ORACLE_HOME%\network\admin\listener.ora
📄 示例原始内容:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
)
)
✏️ 修改为:
(PORT = 1522) -- 改为你想使用的新端口号
✅ 三、修改客户端连接文件 tnsnames.ora
(如果使用)
该文件位置与 listener.ora
相同。
📄 示例修改前:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
✏️ 修改为:
(PORT = 1522)
✅ 四、重启监听器
lsnrctl stop
lsnrctl start
或使用:
lsnrctl reload
✅ 五、同步数据库注册端口(推荐)
在 SQL*Plus 中执行:
ALTER SYSTEM SET local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))' SCOPE=BOTH;
ALTER SYSTEM REGISTER;
查看服务是否成功注册:
lsnrctl services
✅ 六、测试连接
- 使用 SQL 工具(如 PL/SQL Developer、DBeaver)测试连接;
- JDBC URL 示例:
jdbc:oracle:thin:@localhost:1522/orcl
🧱 常见问题排查
问题 | 解决方案 |
---|---|
端口修改后连接不上 | 检查防火墙是否放通新端口;客户端是否同步改了端口 |
lsnrctl start 失败 | 检查端口是否被占用:`netstat -anp |
服务未注册 | 执行 ALTER SYSTEM REGISTER; 并检查 local_listener |
使用 SID 还是 SERVICE_NAME? | 大多数现代连接推荐使用 SERVICE_NAME |
📎 附加参考(可选)
listener.log
路径:$ORACLE_HOME/diag/tnslsnr/hostname/listener/trace/listener.log
- 查看监听器配置项:
lsnrctl show current_listener
- Oracle 网络配置工具(Windows):
netca
发表回复