~/.bashrc或/etc/profile,添加以下变量(根据实际安装路径调整):export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 # 替换为实际ORACLE_HOME路径 export ORACLE_SID=orcl # 替换为实际数据库SID export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib 执行source ~/.bashrc使变量生效。监听器配置文件默认位于$ORACLE_HOME/network/admin/目录下,使用文本编辑器(如vi)打开:
sudo vi $ORACLE_HOME/network/admin/listener.ora 添加或修改以下内容(关键参数说明见注释):
# 监听器基本配置:定义监听的协议、IP地址和端口 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) # 监听所有网络接口(生产环境建议指定具体IP) ) ) # 可选:关联SID与Oracle Home(若需监听多个数据库实例) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = orcl) # 数据库SID(需与实际一致) (ORACLE_HOME = $ORACLE_HOME) # 指向Oracle安装目录 ) ) 保存并退出编辑器。
若需通过服务名连接数据库,需配置tnsnames.ora文件(同样位于$ORACLE_HOME/network/admin/):
sudo vi $ORACLE_HOME/network/admin/tnsnames.ora 添加以下内容(示例):
# 定义数据库服务名(别名),用于客户端连接 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 替换为服务器实际IP (CONNECT_DATA = (SERVER = DEDICATED) # 连接模式(专用服务器) (SERVICE_NAME = orcl) # 数据库服务名(需与实际一致) ) ) 保存并退出。
使用lsnrctl命令启动监听器:
lsnrctl start 若启动成功,将显示类似以下信息:
Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 19.0.0.0.0 - Production System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/ubuntu/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) Services summary... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully 通过以下命令检查监听器是否运行正常:
lsnrctl status 重点确认:
HOST(如0.0.0.0或具体IP);PORT(如1521);orcl)且状态为READY。lsnrctl stoplsnrctl reload(修改listener.ora后无需停机即可生效)tnsping命令验证服务名是否可达(如tnsping ORCL)。若需将监听器作为系统服务管理(开机自启、状态查看),可创建以下服务文件:
sudo vi /etc/systemd/system/oracle-listener.service 添加以下内容:
[Unit] Description=Oracle Listener Service After=network.target [Service] Type=forking ExecStart=$ORACLE_HOME/bin/lsnrctl start ExecStop=$ORACLE_HOME/bin/lsnrctl stop ExecReload=$ORACLE_HOME/bin/lsnrctl reload User=oracle Group=oinstall Restart=on-failure [Install] WantedBy=multi-user.target 执行以下命令启用并启动服务:
sudo systemctl daemon-reload sudo systemctl start oracle-listener sudo systemctl enable oracle-listener # 开机自启 sudo systemctl status oracle-listener # 查看状态 oracle)对$ORACLE_HOME/network/admin/目录及文件有读写权限。sudo ufw allow 1521/tcp HOST设置为具体IP而非0.0.0.0,并启用SSL加密(修改PROTOCOL为TCPS)以提高安全性。