在连接数据库的时候,有时会遇到一个“ORA12514:监听程序当前无法识别连接描述符中请求的服务”的错误,这个错误其实就是数据库动态注册(关于动态注册会在稍后讲解)不生效,导致监听器无法识别客户端连接符中提供的服务名,从而拒绝建立数据库连接时报的错误信息,所以就需要对监听器配置做修改。

在这里,还需对问题进行细化,有时候可能会发现,在刚开启监听器的时候会发生这个错误,但过了一会再进行连接就不会报错,这其实是因为动态注册需要时间,而刚开启监听器时,数据库还未注册到监听器,导致报错,这种情况不在本文讨论范围内。

listener.ora文件存放在$ORACLE_HOME/network/admin,这个文件存放的就是监听器的配置,监听器在启动时会读取该文件,我们先来了解一下这个文件。

该文件的大概配置如下:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /home/oracle/oracle/product/10201)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST =IP)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

ADR_BASE_LISTENER = /home/oracle

SID_LIST_LISTENER参数就是数据库注册,动态注册或是静态注册(注册就是将数据库作为一个服务注册到监听器。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库,动态注册就是在监听器配置文件中不明确的声明数据库实例和服务名,而是在数据库启动时才由数据库自动注册到监听器,静态注册就是在监听器配置文件中明确声明数据库实例和服务名。),LISTENER参数就是监听器的配置,其中,PROTOCOL参数是协议名,一般为TCP,HOST参数是地址,可以写IP地址、服务器名、localhost、127.0.0.1,PORT参数是端口号,默认为1521。

既然是因为动态注册引起的问题,那么最简单的解决方法自然是由动态注册改为静态注册,如下:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /home/oracle/oracle/product/10201)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = trade)
      (ORACLE_HOME = /home/oracle/oracle/product/10201)
      (GLOBAL_DBNAME = trade)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST =IP)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

ADR_BASE_LISTENER = /home/oracle

红线框内的就是静态注册,SID_NAME参数是数据库实例名,GLOBAL_DBNAME参数是全局数据库名(在配置客户端的本地服务名时“服务名”要与全局数据库名一致),配置好后,重启监听器,就可正常连接了。

修改为静态注册看起来虽简单,但也有不足之处,首先,要修改为静态注册需对配置文件和参数较为熟悉,否则很有可能会配置错误,其次当参数的值有所改变时必须重新修改配置才行。

还有一种方法就是修改host参数的值,host参数可以有四种值:IP地址、服务器名、localhost、127.0.0.1,由于可取值变多了,导致了解决办法也随着导致出现问题的原因而多样化了起来,各种情况都可能有不同的解决办法,可以在这四个值之间尝试修改,需要注意的是,当采用localhost和127.0.0.1时,客户端的本地服务名不能使用IP地址和服务器名进行配置,否则会报“ORA12541:无监听程序”的错误,还有就是修改之后要重启监听器。

转载于:https://www.cnblogs.com/jiahm/p/10608604.html

Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务问题解决相关推荐

  1. oracle无监听程序的解决方法(PLSQL)Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务...

    \PLSQL\instantclient_11_2 listener.ora # listener.ora Network Configuration File: E:\software\PLSQL\ ...

  2. PLSQL登录时,“ORA-12514:监听程序当前无法识别连接描述符中请求的服务” 错误解决

    打开oracle安装路径下D:\Oracle11g\product\11.2.0\dbhome_1\NETWORK\ADMIN 文件夹中 listener.ora 文件 在图中位置处加入以下字段: ( ...

  3. oracle中srv添加监听服务,Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务...

    Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 解决过程: 1. 找到listener.ora监听文件,具体位置:D:\app\Administrator ...

  4. ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

    在安装完Oracle10g后,使用PL/SQL工具连接,提示如下的问题: ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 解决办法是手动修改监听配置文件: # listen ...

  5. ora-12514: tns: 监听程序当前无法识别连接描述符中请求的服务 问题解决

    通过PlSQL Developer 访问oracle出现: ora-12514: tns: 监听程序当前无法识别连接描述符中请求的服务 通过重启服务的方式启动数据库,也不能连接上oracle数据库   ...

  6. ORACLE11g ORA-12514 TNS 监听程序当前无法识别连接描述符中请求的服务

    1.TNS连接错误 同事跟我说连接oracle数据库报错ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,如下所示: 2.查看本地TNSPING 查看本地的tns配置: WX ...

  7. ORACLE11g ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

    1.TNS连接错误 同事跟我说连接oracle数据库报错ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,如下所示: 2.查看本地TNSPING 查看本地的tns配置: WX ...

  8. windows 2008 64位oracle11g部署问题(3)之ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务...

    oracle11g安装完毕了,监听也起来了,发现通过客户端 本地网络服务名配置(如下图)链接oracle11g服务器,确报ORA-12514的错误,该如何解决呢? 1. 找到listener.ora监 ...

  9. ORACLE11g ORA 12514 TNS 监听程序当前无法识别连接描述符中请求的服务

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1.TN ...

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

    你还有可能是遇到了定时的问题.如果监听器被重新启动,那么数据库实例就必须向它重新注册.通常情况下,每60秒就会出现这样的问题.如果你迫不及待,那么就以数据库管理员的身份登录到数据库服务器,并且运行&q ...

最新文章

  1. VC2019无法打开文件msvcrtd.lib和Spectre 缓解库相关问题
  2. JAVA基础知识(2)--队列的操作
  3. 分享B2B信息发布小技巧
  4. React 中使用sass
  5. Vue.js响应式原理
  6. 本次奔驰漏油事件,要花多少钱打广告才能弥补损失?
  7. web 服务器 内存 影响_C/C++服务器开发常用的7大开源库,让你在同行中脱颖而出...
  8. BUAAOO P5-P7 Elevator Simulation
  9. python爬虫菜鸟教程-Python爬虫学习100练001
  10. 递归下降文法C语言实验报告,编译原理实验报告:实验二编写递归下降语法分析程序...
  11. [深度学习] 自然语言处理 ----- Attention机制中的Q,K,V介绍
  12. 为什么打工人996会猝死,而老板007不会?
  13. 安卓桌面html便签,手机桌面便签
  14. python中length用法_为什么Python代码使用len()函数而不是length方法?
  15. linux云服务器配置JDK教程(博主阿里云,腾讯云亲测成功案例教程)
  16. *关键字retry:很像goto语句,跳到标记处
  17. Python爬取猫眼电影数据并对其进行数据可视化
  18. 【疯壳·嵌入式平板开发教程5】手把手教你做平板电脑-触摸屏驱动实验教程
  19. 男人选择什么样的人做老婆?
  20. 行业深度:区块链与金融、保险业那些不得不说的故事

热门文章

  1. 第一行代码中过时的通知写法更正;
  2. python配对t检验_T检验第二篇(SPSS,SAS,R,Python) 配对T检验
  3. 【招聘】STM32、LINUX、FPGA工程师,硬件设计工程师,待遇7000~15000!
  4. Python在Linux环境下Word转PDF
  5. 《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)
  6. word中如何将所有同一级标题统一格式
  7. 邻家的百万富翁(一)
  8. 成功解决TypeError: only size-1 arrays can be converted to Python scalars
  9. incompatible types: Object cannot be converted to String
  10. WPF Binding表达式