温馨提示×

在Ubuntu上如何用lsnrctl管理数据库

小樊
45
2025-11-23 11:28:53
栏目: 智能运维

在 Ubuntu 上使用 lsnrctl 管理 Oracle 监听器

一、准备与环境

  • oracle 用户操作(推荐):sudo su - oracle。lsnrctl 是 Oracle 监听器工具,主要管理监听进程,并非通用的 Ubuntu 服务管理工具。确保已安装 Oracle 数据库软件,并正确设置环境变量或将 $ORACLE_HOME/bin 加入 PATH。常见变量:ORACLE_HOME(如:/u01/app/oracle/product/19.0.0/dbhome_1)、PATH=$PATH:$ORACLE_HOME/bin。配置文件目录通常为 $ORACLE_HOME/network/admin(包含 listener.ora、tnsnames.ora)。

二、常用 lsnrctl 命令

  • 启动/停止/重启:lsnrctl start [listener_name]lsnrctl stop [listener_name]lsnrctl restart [listener_name](默认监听器名为 LISTENER)。
  • 查看状态与注册服务:lsnrctl status [listener_name]lsnrctl services [listener_name](可查看监听端口、服务映射、实例注册情况)。
  • 动态生效与切换:lsnrctl reload(不中断现有连接重载配置)、lsnrctl select listener_name(切换当前上下文的监听器)。以上命令均可在命令行直接执行。

三、配置与生效

  • 编辑监听器:修改 $ORACLE_HOME/network/admin/listener.ora,例如监听 TCP 1521 端口:
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521))
        )
      )
    
  • 使配置生效:执行 lsnrctl reloadlsnrctl restart;用 lsnrctl status 核对监听地址与端口。
  • 客户端解析:如需本地解析服务名,可编辑 $ORACLE_HOME/network/admin/tnsnames.ora 添加服务条目(与监听配置分离,按需配置)。

四、日志与排错

  • 实时查看监听日志:tail -f $ORACLE_HOME/network/log/listener.log,定位启动失败、连接拒绝等问题。
  • 诊断信息:使用 lsnrctl status 检查监听端口与服务注册;若监听未启动,常见报错为 TNS-12541: TNS:no listener,应先 lsnrctl start 再验证。
  • 深入日志:若问题持续,检查 $ORACLE_HOME/diag/tnslsnr//listener/alert/log.xml 获取更详细的告警与跟踪信息。

五、与 systemd 的配合(可选)

  • 某些安装(如 Oracle XE)可能提供 systemd 服务单元,可用 sudo systemctl stop oracle-xe 等方式启停;但这与 lsnrctl 管理的监听器进程不同。建议统一用 lsnrctl 控制监听,或用 systemd 管理服务包装器,避免混用导致状态不一致。

0