温馨提示×

如何使用lsnrctl管理Ubuntu数据库

小樊
34
2026-01-01 19:00:09
栏目: 智能运维

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

一 准备与环境

  • 确认已安装 Oracle 数据库或客户端,并将 $ORACLE_HOME/bin 加入 PATH,以便直接执行 lsnrctl
  • 建议使用 oracle 用户执行相关命令(或具备等效权限的用户),避免权限不足导致操作失败。
  • 常用环境变量示例:ORACLE_HOME(如:/opt/oracle/product/19c/dbhome_1)、PATH 包含 $ORACLE_HOME/bin

二 常用管理命令

  • 启动/停止/重启监听器
    • 启动:lsnrctl start(或指定名称:lsnrctl start LISTENER
    • 停止:lsnrctl stop(或:lsnrctl stop LISTENER
    • 热重载配置(不中断现有连接):lsnrctl reload
  • 查看状态与注册服务
    • 查看状态:lsnrctl status(或:lsnrctl status LISTENER
    • 查看已注册服务与实例:lsnrctl services(或:lsnrctl services LISTENER
  • 日志与诊断
    • 查看日志文件路径:lsnrctl logfile LISTENER
    • 实时查看日志:例如 tail -f $ORACLE_HOME/network/log/listener.log
    • 监听响应测试:tnsping my_service
  • 动态调参与环境
    • 设置日志级别:lsnrctl setloglevel LISTENER debug
    • 设置环境变量:lsnrctl setenv variable_name value
  • 进入交互模式
    • 直接输入 lsnrctl 进入交互界面,可执行 help 查看全部子命令。

三 配置与文件

  • 监听器配置 listener.ora
    • 路径通常为:$ORACLE_HOME/network/admin/listener.ora
    • 示例(监听 TCP 1521):
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521))
          )
        )
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (SID_NAME = your_sid)
            (ORACLE_HOME = /path/to/your/oracle/home)
          )
        )
      
  • 客户端解析 tnsnames.ora
    • 路径通常为:$ORACLE_HOME/network/admin/tnsnames.ora
    • 示例:
      YOUR_SID =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521))
          (CONNECT_DATA =
            (SID = your_sid)
          )
        )
      
  • 修改配置后,优先使用 lsnrctl reload 使配置生效,减少业务中断。

四 常见问题排查

  • 命令不可用或未找到
    • 执行 which lsnrctl 确认路径;未找到需安装 Oracle 客户端/数据库或修正 PATH;必要时以 oracle 用户执行。
  • 监听器无法启动或端口占用
    • 检查 listener.log 定位错误;确认 $ORACLE_HOME/network/admin/listener.ora 配置正确;排查端口冲突(默认 1521)。
  • 客户端连接失败
    • 核对 tnsnames.ora 与数据库实际 SID/SERVICE_NAME 一致;确认网络连通与防火墙策略。
  • 防火墙与端口放行(Ubuntu)
    • UFW:sudo ufw allow 1521/tcp
    • iptables:sudo iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
  • 监听响应测试
    • 使用 tnsping my_service 验证监听器可达性与解析是否正常。

0