在 Debian 上,lsnrctl 是 Oracle Database Listener 的管理工具,修改监听端口不是直接通过 lsnrctl 命令完成的,而是修改 listener.ora 配置文件,然后重启监听。
下面按步骤说明。
lsnrctl status
在输出中可以看到类似:
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
常见路径(根据 Oracle 安装方式不同):
$ORACLE_HOME/network/admin/listener.ora
例如:
/u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
vi listener.ora
原始配置示例(默认端口 1521):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
✅ 只修改 PORT 即可,例如改为 1522:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
)
)
⚠️ 如果有多段 ADDRESS,逐条修改即可
lsnrctl stop
lsnrctl start
或直接:
lsnrctl reload
reload不会中断已连接会话,但部分修改可能需要stop/start
lsnrctl status
确认显示:
(PORT=1522)
也可以用系统命令验证:
ss -lntp | grep 1522
# 或
netstat -lntp | grep 1522
如果端口不是 1521(Oracle 默认端口),客户端必须显式指定端口:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP)(PORT = 1522))
(CONNECT_DATA =
(SERVICE_NAME = orclpdb)
)
)
sqlplus user/password@//localhost:1522/orclpdb
如果连不上,记得放行端口:
sudo ufw allow 1522/tcp
lsnrctl status LISTENER_NAME
指定监听修改和重启。
Debian 下修改 Oracle 监听端口 = 修改
listener.ora中的 PORT → 重启监听
如果你愿意,可以把你的 Oracle 版本、Debian 版本 或 listener.ora 内容贴出来,我可以帮你精确检查。