首页主机资讯Ubuntu lsnrctl如何实现自动化运维

Ubuntu lsnrctl如何实现自动化运维

时间2025-11-17 21:56:03发布访客分类主机资讯浏览1370
导读:Ubuntu 上 lsnrctl 自动化运维实践 一 基础准备与多监听器管理 以 oracle 用户执行,确保环境变量正确:设置 ORACLE_HOME、PATH,必要时设置 LD_LIBRARY_PATH,例如:export ORACL...

Ubuntu 上 lsnrctl 自动化运维实践

一 基础准备与多监听器管理

  • oracle 用户执行,确保环境变量正确:设置 ORACLE_HOMEPATH,必要时设置 LD_LIBRARY_PATH,例如:export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export PATH=$ORACLE_HOME/bin:$PATH。lsnrctl 是 Oracle 监听器工具,并非通用系统服务管理工具,操作需具备相应权限。
  • 管理多个监听器:使用 lsnrctl 对指定监听器执行操作,如 lsnrctl start|stop|status [listener_name];配置文件为 $ORACLE_HOME/network/admin/listener.ora,变更后用 lsnrctl stop/start 使生效;日志位于 $ORACLE_HOME/network/log/listener.log,可用 tail -f 实时查看。

二 脚本封装与日志审计

  • 将常用操作封装为脚本,统一日志、错误处理与返回码,便于 systemd/cron/Ansible 调用。示例要点:定义 LOG_FILE;函数 start/stop/status/restart;在 status 中解析输出,非 READY 状态返回非 0;支持传参 listener_name。
  • 最小可用示例(可按需扩展):
    #!/bin/bash export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH LISTENER=${ 1:-LISTENER} LOG_FILE=/var/log/lsnrctl-wrapper.log log(){ echo “$(date ‘+%F %T’) [$LISTENER] $*” | tee -a “$LOG_FILE”; }

case “$2” in start) log “Starting…”; lsnrctl start “$LISTENER” ; ; stop) log “Stopping…”; lsnrctl stop “$LISTENER” ; ; status) log “Checking…”; lsnrctl status “$LISTENER” grep -q “READY” “$LOG_FILE” & & exit 0 || exit 1 ; ; restart) $0 “$LISTENER” stop; $0 “$LISTENER” start ; ; *) echo “Usage: $0 < listener_name> { start|stop|status|restart} ”; exit 2 ; ; esac

三 系统级集成与开机自启

  • 使用 systemd 托管(推荐):创建 /etc/systemd/system/oracle-listener.service,示例要点:Description;After=network.target;Type=forking;ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start;ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop;User=oracle;Group=oracle;Restart=on-failure;WantedBy=multi-user.target。执行 systemctl daemon-reload & & systemctl enable --now oracle-listener。
  • 兼容旧系统(init.d):创建 /etc/init.d/oracle-listener,使用 su - oracle -c “$LSNRCTL start” 等方式封装启停;chmod +x 后 update-rc.d oracle-listener defaults。
  • 说明:部分环境将 Type 设为 simple 也可工作,但使用 lsnrctl 原生命令时,采用 Type=forking 更贴近其运行特性。

四 定时巡检 告警与批量编排

  • 定时巡检与自愈:在 oracle 用户 crontab 中加入,如 0 * * * * /opt/scripts/lsnrctl-wrapper.sh LISTENER status || /opt/scripts/lsnrctl-wrapper.sh LISTENER start,输出重定向至日志;结合阈值与重试次数避免抖动。
  • 监控与告警:用 Monit/Nagios/Zabbix 定期执行脚本,依据返回码与关键字(如 READY)判定状态并触发告警/恢复动作。
  • 批量编排:使用 Ansible 统一管理多台主机监听器,Playbook 中调用封装脚本的 start/stop/status/restart,集中记录与回滚。
  • CI/CD 联动:在 Jenkins Pipeline 前后执行检查脚本,部署后再次校验监听器状态,异常时阻断发布或自动回滚。

五 生产实践与风险控制

  • 变更流程:修改 listener.ora 后优先使用 lsnrctl reload 让配置生效;必要时再重启。
  • 日志与审计:统一落盘到 /var/log/,为脚本与 systemd 配置合适的日志轮转(如 logrotate)。
  • 权限与环境:始终以 oracle 用户运行;在脚本中显式设置 ORACLE_HOME/PATH/LD_LIBRARY_PATH,避免依赖交互式环境。
  • 幂等与容错:status 判定需明确(如检测 READY),失败可有限次数重试;自愈动作要记录审计信息。
  • 版本与路径:示例路径为 /u01/app/oracle/product/19.0.0/dbhome_1,请按实际环境替换;多监听器场景务必在脚本参数中显式指定 listener_name

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu lsnrctl如何实现自动化运维
本文地址: https://pptw.com/jishu/749388.html
如何在Debian上使用cxImage进行批量处理 在Debian上如何解决cxImage的错误提示

游客 回复需填写必要信息