当然可以!下面是 修改 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