首页主机资讯Ubuntu lsnrctl备份与恢复策略

Ubuntu lsnrctl备份与恢复策略

时间2025-11-21 22:32:06发布访客分类主机资讯浏览833
导读:Ubuntu 上 Oracle 监听器 lsnrctl 的备份与恢复策略 一 核心原则与范围 lsnrctl 是 Oracle Net 的监听器控制工具,备份与恢复的重点是监听器的网络配置文件与运行状态信息,而非工具本身。 关键备份对象:...

Ubuntu 上 Oracle 监听器 lsnrctl 的备份与恢复策略

一 核心原则与范围

  • lsnrctl 是 Oracle Net 的监听器控制工具,备份与恢复的重点是监听器的网络配置文件与运行状态信息,而非工具本身。
  • 关键备份对象:
    • 配置文件:$ORACLE_HOME/network/admin/listener.ora$ORACRA_HOME/network/admin/tnsnames.ora(建议连同整个 network/admin 目录一起备份)。
    • 运行状态快照:lsnrctl status 的输出(便于审计与快速比对)。
    • 日志与诊断:监听器日志(如 $ORACLE_HOME/diag/tnslsnr//listener/alert/log.xml 或同级目录下的文本日志),用于故障定位与回滚验证。
  • 操作前确认 ORACLE_HOME 已正确设置,并以 oracle 用户执行相关命令。

二 备份策略与实施步骤

  • 准备与定位
    • 切换到 oracle 用户:sudo su - oracle
    • 确认 ORACLE_HOMEecho $ORACLE_HOME
    • 标准配置路径通常为:$ORACLE_HOME/network/admin
  • 配置文件备份
    • 单文件备份:
      • cp $ORACLE_HOME/network/admin/listener.ora /path/to/backup/listener.ora_$(date +%F_%H-%M-%S)
      • cp $ORACLE_HOME/network/admin/tnsnames.ora /path/to/backup/tnsnames.ora_$(date +%F_%H-%M-%S)
    • 目录级备份(推荐):
      • rsync -a --delete $ORACLE_HOME/network/admin/ /path/to/backup/network_admin_$(date +%F_%H-%M-%S)/
  • 运行状态快照
    • lsnrctl status > /path/to/backup/listener_status_$(date +%F_%H-%M-%S).txt
  • 日志归档(可选)
    • tar czf /path/to/backup/listener_logs_$(date +%F_%H-%M-%S).tgz $ORACLE_HOME/diag/tnslsnr/$(hostname)/listener/
  • 自动化与保留
    • 建议以 cron 定时执行备份脚本,并保留近 7–30 天 的历史副本(按变更频率与合规要求调整)。

三 恢复策略与实施步骤

  • 快速恢复(有可用备份)
    • 先备份当前配置:cp $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora.bak_$(date +%F_%H-%M-%S)
    • 恢复文件或目录:
      • 文件级:cp /path/to/backup/listener.ora $ORACLE_HOME/network/admin/
      • 目录级:rsync -a /path/to/backup/network_admin_YYYY-MM-DD_HH-MM-SS/ $ORACLE_HOME/network/admin/
    • 使配置生效(二选一):
      • 重启监听器:lsnrctl stoplsnrctl start
      • 热加载:lsnrctl reload
    • 验证:lsnrctl status,并抽查关键服务是否已注册与监听端口可达。
  • 无备份或配置损坏的兜底
    • 删除或重命名损坏配置,让监听器在下次启动时重建默认配置:
      • mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora.old
      • lsnrctl start
    • 使用最小可用模板重建 listener.ora(示例):
      • 编辑 $ORACLE_HOME/network/admin/listener.ora,填入:
        LISTENER =
          (DESCRIPTION_LIST =
            (DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
            )
          )
        SID_LIST_LISTENER =
          (SID_LIST =
            (SID_DESC =
              (SID_NAME = PLSExtProc)
              (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
              (PROGRAM = extproc)
            )
          )
        
      • 启动并验证:lsnrctl startlsnrctl status
    • 若需从其他同版本环境迁移,可拷贝其 listener.ora/tnsnames.ora 到本机并按实际 HOST/PORT/ORACLE_HOME/SID 调整。

四 变更管理与验证清单

  • 变更窗口与回滚预案
    • 选择业务低峰时段;先备份当前配置与状态;准备回滚命令(如 cp listener.ora.bak listener.ora + lsnrctl reload/restart)。
  • 配置与连通性验证
    • 配置语法与注册状态:lsnrctl status(检查监听端口、服务/SID 注册情况)
    • 网络连通性:telnet < host> 1521nc -vz < host> 1521
    • 客户端解析:tnsping < tns_alias> (依赖 tnsnames.ora 正确)
  • 日志与告警
    • 异常时优先查看:$ORACLE_HOME/diag/tnslsnr//listener/alert/log.xml 或同级文本日志,结合告警时间点与变更记录定位问题。

五 自动化脚本示例

  • 备份脚本 backup_listener.sh(以 oracle 用户执行)
    #!/usr/bin/env bash
    set -Eeuo pipefail
    
    : "${
    ORACLE_HOME:?请先设置 ORACLE_HOME 环境变量}
        "
    BACKUP_BASE="/opt/backup/oracle_listener"
    TS=$(date +%F_%H-%M-%S)
    ADMIN_DIR="$ORACLE_HOME/network/admin"
    
    mkdir -p "$BACKUP_BASE"
    
    # 1) 配置文件与目录
    cp -a "$ADMIN_DIR/listener.ora" "$BACKUP_BASE/listener.ora_$TS"
    cp -a "$ADMIN_DIR/tnsnames.ora" "$BACKUP_BASE/tnsnames.ora_$TS"
    rsync -a --delete "$ADMIN_DIR/" "$BACKUP_BASE/network_admin_$TS/"
    
    # 2) 运行状态快照
    lsnrctl status >
         "$BACKUP_BASE/listener_status_$TS.txt"
    
    # 3) 日志归档(可选)
    find "$ORACLE_HOME/diag/tnslsnr" -type f -name "*.log" -o -name "*.xml" | \
      xargs tar czf "$BACKUP_BASE/listener_logs_$TS.tgz" -C "$ORACLE_HOME/diag/tnslsnr" --transform 's,^tnslsnr/,,'
    
    echo "备份完成 ->
         $BACKUP_BASE (时间戳: $TS)"
    
  • 定时任务(每天 02:00 保留最近 14 天)
    0 2 * * * /opt/scripts/backup_listener.sh
    find /opt/backup/oracle_listener -type f -mtime +14 -delete
    
  • 恢复示例
    # 1) 回滚 listener.ora
    cp /opt/backup/oracle_listener/listener.ora_YYYY-MM-DD_HH-MM-SS $ORACLE_HOME/network/admin/listener.ora
    lsnrctl reload
    
    # 2) 或整目录回滚
    rsync -a --delete /opt/backup/oracle_listener/network_admin_YYYY-MM-DD_HH-MM-SS/ $ORACLE_HOME/network/admin/
    lsnrctl restart
    

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


若转载请注明出处: Ubuntu lsnrctl备份与恢复策略
本文地址: https://pptw.com/jishu/753782.html
如何用copirdir处理符号链接 Ubuntu lsnrctl更新流程介绍

游客 回复需填写必要信息