在 Debian 上,lsnrctl 是 Oracle Database Listener(监听器)的管理工具,它本身不能直接“设端口”,而是通过修改 listener.ora 配置文件来设置监听端口,然后用 lsnrctl 重新加载或启动监听。
下面按步骤说明。
通常在:
$ORACLE_HOME/network/admin/listener.ora
例如:
/u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
示例(监听端口 1522):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1522))
)
)
说明:
PORT = 1522 ← 你要设置的端口HOST 可用主机名或 IP多端口示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1522))
)
)
lsnrctl reload
lsnrctl stop
lsnrctl start
lsnrctl status
或:
netstat -tulnp | grep 1522
# 或
ss -tulnp | grep 1522
如果端口不是默认 1521,客户端需要在 tnsnames.ora 或连接串中指定:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1522))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
✅ 端口被占用
→ 换端口或释放端口
✅ 防火墙拦截(Debian)
sudo ufw allow 1522/tcp
✅ ORACLE_HOME 未设置
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。