oracle监听服务启动后停止的一次故障分析记录

注:本文侧重的是故障分析思路

场景还原

某天公司断电了 ,开发服务器关机了,开机之后意外的发现pl/sql登录失败,报的是没有监听程序

分析步骤

  1. 首先打开服务 发现oracle服务启了,但是监听没有启,第一反应就是很奇怪 服务都自动启动了,监听为什么没有自动启动? 于是手动开启 发现报的是监听启动但自动停止(说明是启动出现故障,开机时系统肯定也尝试过自启 只是失败了)
    在这里插入图片描述

  2. 找到安装目录下 …\app\Administrator\diag\tnslsnr\每台机器不同的一串码\listener\trace 的listener.log 文件,这个日志里面记录了监听失败详情 并查看 翻到最底下 看到TNS-12545: 因目标主机或对象不存在, 连接失败

  3. 接着就是网上很多的教程,两个…\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN的ora
    (listener.ora tnsnames.ora)的配置 这个一般只适用于刚部署oralce时,因为一般我们部署好了之后 ip用手动设置的固定ip 就不会变了 ,换句话说 我们遇到的情况是原本好好的 突然崩了

listener.ora 配置


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.92.22)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = D:\app\Administrator

tnsname.ora配置


LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.92.22)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

#tcp协议 host:你的ip  (该行为博主手写注释 配置文件里面请删除)
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.92.22)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


  1. 按照网上大部分的教程 如果还失效 重新配置监听 net configuration assistant 监听程序配置 一路点击下一步即可

  2. 重启oracle服务与监听

  3. 意料之中 ,结果还是启不了监听服务,百思不得其解,查看计算机的ip配置,确实也是上述配置文件host所指向的在这里插入图片描述

  4. 于是我们再次打开cmd窗口 ipconfig,结果意外发现了 IPv4地址和我们设置里面的不一致,到现在还是有点奇怪的,为什么会出现这种情况?

  5. 输入命令 ipconfig/? 查看到两条命令:ipconfig空格/release (释放连接) ipconfig空格/renew (更新连接)依次输入后 发现ipconfig的ip地址还是和我们预设的不一样
    在这里插入图片描述

  6. 于是进行手动操作:我们现在是指定的ip 于是改为自动获取 再重新指定ip一遍(记得先拍个照记录原来的手动ip参数)
    在这里插入图片描述

  7. 在我们重新手动配置ip的时候 报了ip冲突 ip已被占用了 ,再换成其它ip(或者叫同事ping该ip 发现能ping通) 至此真相大白! 原来我们认为的ip配置 一直没有生效 因为被其它机器占用了 ! 接下来就是沟通环节,让占用ip的同事更改一下, 服务正常启动成功

总结:ip被占用 导致监听配置失效

Guess you like

Origin blog.csdn.net/qq_36268103/article/details/119535009