lsnrctl 是 Oracle 数据库监听器的命令行工具,用于管理监听器。如果你想要在 Ubuntu 系统中创建一个自定义的服务脚本来管理 Oracle 监听器,你可以遵循以下步骤:
创建服务脚本文件:
在 /etc/init.d/ 目录下创建一个新的脚本文件,例如 oracle_lsnrctl。
sudo nano /etc/init.d/oracle_lsnrctl
编写服务脚本: 在打开的编辑器中,编写以下内容作为你的服务脚本。请根据你的实际情况调整路径和参数。
#!/bin/sh
### BEGIN INIT INFO
# Provides: oracle_lsnrctl
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop Oracle listener
### END INIT INFO
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
LSNRCTL=$ORACLE_HOME/bin/lsnrctl
case "$1" in
start)
echo "Starting Oracle listener..."
$LSNRCTL start
;;
stop)
echo "Stopping Oracle listener..."
$LSNRCTL stop
;;
status)
echo "Checking Oracle listener status..."
$LSNRCTL status
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/oracle_lsnrctl {start|stop|status|restart}"
exit 1
;;
esac
exit 0
设置脚本权限: 保存并关闭文件后,为脚本设置执行权限。
sudo chmod +x /etc/init.d/oracle_lsnrctl
测试服务脚本: 在将脚本添加到系统服务之前,先手动测试脚本以确保它能正常工作。
sudo /etc/init.d/oracle_lsnrctl start
sudo /etc/init.d/oracle_lsnrctl status
sudo /etc/init.d/oracle_lsnrctl stop
添加服务到系统启动:
使用 update-rc.d 命令将你的脚本添加到系统的启动序列中。
sudo update-rc.d oracle_lsnrctl defaults
或者,如果你使用的是 systemd,你可以创建一个新的 systemd 服务单元文件。
使用 systemd 管理服务(如果适用):
如果你的 Ubuntu 版本使用 systemd,你可以创建一个名为 oracle_lsnrctl.service 的文件在 /etc/systemd/system/ 目录下。
sudo nano /etc/systemd/system/oracle_lsnrctl.service
在文件中添加以下内容:
[Unit]
Description=Oracle Listener Service
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/oracle_lsnrctl start
ExecStop=/etc/init.d/oracle_lsnrctl stop
ExecReload=/etc/init.d/oracle_lsnrctl restart
User=oracle
Group=oracle
Restart=on-failure
[Install]
WantedBy=multi-user.target
保存并关闭文件后,重新加载 systemd 配置并启动服务。
sudo systemctl daemon-reload
sudo systemctl enable oracle_lsnrctl
sudo systemctl start oracle_lsnrctl
请注意,这些步骤假设你已经有了 Oracle 数据库的安装,并且 ORACLE_HOME 环境变量已经设置为正确的路径。如果你的 Oracle 安装路径不同,请相应地修改脚本中的路径。此外,确保运行这些脚本的用户具有适当的权限来管理 Oracle 监听器。