解决oracle报错 ora-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

本文记录了在Linux环境下迁移Oracle数据库时遇到的ORA-12514错误,并详细描述了如何通过检查tnsnames.ora文件中的实例名称来解决问题的过程。

今日将数据库移植到linux环境中,启动oracle实例以及监听后,使用客服端连接,报错:ora-12514:TNS:监听程序当前无法识别连接描述符中请求的服务,最早以为是监听器没有开启成功的问题,所以重新开启一次,问题依旧,于是想到是用了虚拟机的网络原因,重新启动虚拟机后,问题依旧,后来查看oracle的tnsnames.ora里,发现实例名写错。

DEV197 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 21.7.23.197)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

由于重新装过linux上的Oracle,客户端忘记了修改成最新的

DEV197 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 21.7.23.197)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = jfdb)
    )
  )

更改后,成功。

### 解决Navicat连接Oracle数据库时遇到的ORA-12514错误 当面对Navicat连接Oracle数据库时报出`ORA-12514:TNS:监听程序当前无法识别连接描述符中的请求服务`错误时,通常意味着客户端尝试访问的服务名称未被监听器所知。这可能是由于配置文件设置不正确、监听器未能加载正确的网络地址或监听器本身未启动等原因造成的。 #### 配置tnsnames.ora服务名匹配 确保`tnsnames.ora`文件中定义的服务名与试图通过Navicat建立连接时指定的服务名相一致非常重要。该文件位于Oracle客户端安装路径下,用于映射易于记忆的名字到实际的网络位置上。如果此文件内不存在对应条目,则需手动添加一条记录来指明目标实例的位置和协议信息[^2]。 ```plaintext MY_SERVICE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = myservicename) ) ) ``` #### 启动并验证监听器状态 另一个常见问题监听器可能并未处于活动状态。可以通过命令行工具检查监听器的状态以及它是否已成功注册了所需的服务: ```bash lsnrctl status ``` 上述指令会显示所有由本地监听器管理的服务列表;如果没有找到预期的服务项,则说明要么是监听器尚未完全初始化完成,或者是存在其他阻止其正常工作的因素。此时应当重启监听器以解决问题: ```bash lsnrctl stop lsnrctl start ``` 对于Windows操作系统而言,也可以借助图形化界面的服务控制面板来进行同样的操作——查找名为“OracleOraDB19Home1TNSListener”的服务(版本号可能会有所不同),右键点击选择重新启动选项[^3]。 #### 检查listener.ora配置准确性 有时即使监听器已经开启并且能够看见想要连接的目标,仍然会出现类似的认证失败情况。这时应该仔细审查`listener.ora`文档里的参数设定是否有误。特别是要注意区分不同环境变量指向的具体文件夹位置差异可能导致的行为变化。例如,在某些情况下,Navicat读取的是解压缩后的临时目录而非正式安装路径内的副本作为参考依据[^4]。 #### 确认Oracle相关后台进程健康状况 最后但同样重要的一点是要确认构成整个数据库系统的各个组成部分均能良好运作。除了前面提到过的监听组件外,还包括负责处理SQL语句解析执行的核心引擎及其附属模块等都在稳定运行之中。一旦发现任何异常迹象都应及时采取措施予以纠正,比如利用任务管理器观察是否存在缺失的关键守护线程,并依照官方指南实施必要的修复手段[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值