当前位置:首页 > 问答 > 正文

修复Oracle监听器被优化大师误删后,教你两招简单搞定问题

前几天有个朋友火急火燎地给我打电话,说他的电脑用某个优化软件清理了一下,结果公司的Oracle数据库彻底连不上了,业务系统直接瘫痪,把他急得团团转,我问他怎么回事,他说可能就是被那个“优化大师”给坑了,估计是不小心把Oracle的监听器服务给清理掉了,这种事儿其实挺常见的,很多针对小白的系统优化工具,分不清哪些是重要的系统服务,一刀切就给禁用了或者删除了配置。

你别慌,监听器出问题不代表你的数据库数据丢了,它就像一个公司的前台,前台暂时不在岗,但公司的所有资料和员工(数据库实例)都还在办公室里好好的,我们的任务就是把这个“前台”重新请回来上岗,下面我就教你两招,非常简单,基本上照着做就能恢复。

第一招:重启监听器服务(最简单快捷,首选尝试)

这个方法适用于监听器的配置文件还在,只是它的Windows服务被优化软件给停掉了,这是最常见的情况。

  1. 打开服务窗口: 在你的电脑上,同时按下键盘上的 Win + R 键,会弹出“运行”对话框,在里面输入 services.msc,然后按回车。
  2. 寻找Oracle服务: 你会看到一个长长的服务列表,你需要在这个列表里找到名字里带“Oracle”和“Listener”字样的服务,它的名字可能不太一样,常见的有 OracleOraDB19Home1TNSListenerOracleOraDB11g_home1TNSListener 这种格式,其中中间那部分(如OraDB19Home1)会根据你安装的Oracle版本而变化。
  3. 检查并启动服务: 找到这个监听器服务后,你看看它的“状态”那一列是不是空的,启动类型”是不是被改成了“禁用”或“手动”,如果是,那就找到问题了,你右键点击这个服务,先选择“属性”,把“启动类型”从“禁用”改回“自动”,然后点击“启动”按钮,如果启动成功,服务状态会变成“正在运行”。
  4. 测试连接: 这时候,你再去用SQLPlus或者你的业务软件尝试连接数据库,大概率就已经恢复正常了!

根据Oracle官方文档对于监听器服务的描述,这个服务是负责接收客户端连接请求的核心进程,如果这一招就解决了问题,那恭喜你,你是最幸运的。

第二招:重新创建监听器配置(当第一招无效时使用)

如果第一招试了之后,服务启动失败,或者列表里根本就找不到这个监听器服务了,那说明情况严重一点,可能监听器的配置文件(listener.ora)也被损坏或删除了,没关系,我们重新给它创建一个。

  1. 打开命令提示符(CMD): 同样按 Win + R,输入 cmd,回车,为了保险起见,最好右键点击“命令提示符”,选择“以管理员身份运行”。
  2. 使用LSNRCTL工具: Oracle自带一个强大的监听器控制工具,叫lsnrctl,我们在命令行里直接输入以下命令来启动它:
    lsnrctl

    回车后,命令提示符会变成 LSNRCTL>

  3. 重新配置监听器:LSNRCTL> 提示符下,输入一个非常实用的命令:
    set password lsnrctl
    save_config_on_stop on
    exit

    更直接的方法是使用Oracle Net Configuration Assistant图形化工具,但用命令也很简单,最简单粗暴的方法是直接删除现有配置并重建,你可以先尝试用命令查看状态:LSNRCTL> status,如果报错说找不到监听器,那我们就可以重建。

  4. 实际重建步骤(更稳妥): 更清晰的做法是退出lsnrctl,回到CMD命令行,我们先找到Oracle的NETCA(网络配置助手)工具,它通常在你的Oracle安装目录下的bin文件夹里,D:\app\product\19.0.0\dbhome_1\bin\netca.exe,直接双击运行这个netca.exe
  5. 图形化界面操作: 运行后,会弹出一个图形窗口,你选择“监听程序配置”,然后点击“下一步”,接着选择“重新配置”,然后跟着向导一步步走,它会让你选择监听器名称(一般用默认的LISTENER就行)、监听端口(一般是1521),你基本只需要不停地点击“下一步”,使用默认配置,直到完成。 这个过程根据Oracle官方安装和配置指南中的描述,会自动生成一个新的、标准的listener.ora配置文件。
  6. 完成并测试: 配置完成后,它会自动启动监听器服务,你再次回到Windows的“服务”窗口,应该就能看到Oracle监听器服务了,并且状态是“正在运行”,这时再去连接数据库,问题就应该解决了。

遇到优化大师误删Oracle监听器这种事,第一步先去“服务”里看看能不能手动启动;如果不行,第二步就用Oracle自带的网络配置助手(NETCA)重新配置一下监听器,相当于给它恢复出厂设置,这两招下来,绝大多数类似问题都能迎刃而解,数据是安全的,只是连接通道暂时关闭了而已,冷静处理一定能搞定。

修复Oracle监听器被优化大师误删后,教你两招简单搞定问题