温馨提示×

如何用lsnrctl自定义Ubuntu服务脚本

小樊
40
2025-11-23 11:36:55
栏目: 智能运维

lsnrctl 是 Oracle 数据库监听器的命令行工具,用于管理监听器。如果你想要在 Ubuntu 系统中创建一个自定义的服务脚本来管理 Oracle 监听器,你可以遵循以下步骤:

  1. 创建服务脚本文件: 在 /etc/init.d/ 目录下创建一个新的脚本文件,例如 oracle_lsnrctl

    sudo nano /etc/init.d/oracle_lsnrctl
    
  2. 编写服务脚本: 在打开的编辑器中,编写以下内容作为你的服务脚本。请根据你的实际情况调整路径和参数。

    #!/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
    
  3. 设置脚本权限: 保存并关闭文件后,为脚本设置执行权限。

    sudo chmod +x /etc/init.d/oracle_lsnrctl
    
  4. 测试服务脚本: 在将脚本添加到系统服务之前,先手动测试脚本以确保它能正常工作。

    sudo /etc/init.d/oracle_lsnrctl start
    sudo /etc/init.d/oracle_lsnrctl status
    sudo /etc/init.d/oracle_lsnrctl stop
    
  5. 添加服务到系统启动: 使用 update-rc.d 命令将你的脚本添加到系统的启动序列中。

    sudo update-rc.d oracle_lsnrctl defaults
    

    或者,如果你使用的是 systemd,你可以创建一个新的 systemd 服务单元文件。

  6. 使用 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 监听器。

0