1. 安装Oracle数据库软件
在Debian系统上配置lsnrctl前,需先安装Oracle Database软件(如19c、21c版本)。可从Oracle官方网站下载适用于Linux的Oracle Database安装包(如.deb格式),并按照官方文档完成安装。安装过程中需指定Oracle Home目录(如/opt/oracle/product/19.0.0/dbhome_1)、数据库SID等参数。
2. 配置Oracle环境变量
编辑用户shell配置文件(如~/.bashrc或~/.bash_profile),添加以下Oracle环境变量:
export ORACLE_HOME=/path/to/oracle/home # 替换为实际Oracle Home路径(如/opt/oracle/product/19.0.0/dbhome_1)
export PATH=$PATH:$ORACLE_HOME/bin # 将Oracle bin目录加入PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib # 添加Oracle库路径
保存文件后,运行source ~/.bashrc(或source ~/.bash_profile)使配置立即生效。
3. 创建/编辑监听器配置文件(listener.ora)
监听器配置文件默认位于$ORACLE_HOME/network/admin目录下。使用文本编辑器(如nano或vim)打开或创建listener.ora文件:
sudo nano $ORACLE_HOME/network/admin/listener.ora
添加以下基本配置(根据实际情况修改占位符):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) # HOST为服务器主机名或IP,PORT为监听端口(默认1521)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = your_sid) # 替换为数据库SID(如ORCL)
(ORACLE_HOME = /path/to/oracle/home) # 替换为实际Oracle Home路径
)
)
保存并关闭文件。
4. 启动Oracle监听器
在终端中运行以下命令启动监听器:
lsnrctl start
若启动成功,将显示类似以下信息:
Starting listener (TNSLSNR)...
TNSLSNR for Linux: Version x.x.x.x - Production
Starting the Listener...
The Command Prompt window closes automatically.
5. 验证监听器状态
使用以下命令检查监听器是否正常运行:
lsnrctl status
输出应包含监听器的版本、监听地址(如TCP:1521)、绑定的SID等信息。若状态显示“RUNNING”,则表示监听器已成功启动。
6. 可选:配置客户端连接文件(tnsnames.ora)
若需从客户端连接数据库,需编辑tnsnames.ora文件(同样位于$ORACLE_HOME/network/admin目录下):
sudo nano $ORACLE_HOME/network/admin/tnsnames.ora
添加以下配置(替换占位符):
YOUR_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) # 与listener.ora中的HOST、PORT一致
(CONNECT_DATA =
(SID = your_sid) # 与listener.ora中的SID_NAME一致
)
)
保存后,可使用sqlplus username/password@YOUR_DB命令测试客户端连接。
7. 可选:设置监听器为系统服务(自动启动)
为确保系统重启后监听器自动启动,可创建systemd服务文件:
sudo nano /etc/systemd/system/oracle-lsnrctl.service
添加以下内容(替换占位符):
[Unit]
Description=Oracle Listener Service
After=network.target
[Service]
Type=forking
ExecStart=/path/to/oracle/home/bin/lsnrctl start
ExecStop=/path/to/oracle/home/bin/lsnrctl stop
User=oracle # 运行Oracle的用户(通常为oracle)
Group=oinstall # 运行Oracle的组(通常为oinstall)
Restart=on-failure # 失败时自动重启
[Install]
WantedBy=multi-user.target
保存后,执行以下命令启用并启动服务:
sudo systemctl enable oracle-lsnrctl.service # 设置开机自启
sudo systemctl start oracle-lsnrctl.service # 立即启动服务
sudo systemctl status oracle-lsnrctl.service # 检查服务状态
注意事项
listener.ora中的HOST、PORT、SID_NAME等参数与数据库实例配置一致。sudo ufw allow 1521/tcp
lsnrctl log查看日志文件(位于$ORACLE_HOME/network/log目录下)排查问题。