在 Ubuntu 上修改 Oracle 数据库监听端口(默认是 1521)一般分为以下几个步骤。下面以 Oracle 19c / 11g / 12c 常见环境为例。
lsnrctl status
查看输出中的:
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx)(PORT=1521)))
netca(图形化,推荐)sudo su - oracle
netca
listener.ora$ORACLE_HOME/network/admin/listener.ora)cd $ORACLE_HOME/network/admin
vi listener.ora
示例(改成 1522):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
)
)
lsnrctl stop
lsnrctl start
确认:
lsnrctl status
tnsnames.ora(如有使用)如果客户端或本机使用 tnsnames.ora:
vi $ORACLE_HOME/network/admin/tnsnames.ora
示例:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
如果是 动态监听注册,需要让数据库知道新端口:
sqlplus / as sysdba
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))' SCOPE=BOTH;
ALTER SYSTEM REGISTER;
sudo ufw allow 1522/tcp
或(iptables):
sudo iptables -I INPUT -p tcp --dport 1522 -j ACCEPT
sqlplus system/password@//localhost:1522/orcl
✅ 端口被占用
netstat -tunlp | grep 1522
✅ 监听起不来
HOST 是否正确(不要用错 IP)listener.log如果你能告诉我:
我可以给你更精确的配置示例。