ORA-12514(TNS:监听程序当前无法识别...)的解决方案



在安装ORACLE 11G 过程中由于配置的原因,安装过程中报了如下错误:


 
按照安装提示执行后面的操作后,打开PL/SQL DEVELOPER 连接 数据库时总报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务!
ORACLE NET MANAGER里面测试,测试服务是否能够成功。结果还是报如上错误


 
在网上百度了一下这个错误ORA-12514,原来很多人都碰到过这个问题,于是按照别人的处理步骤依依配置了,这个问题解决了,不过还是觉得有必要把这个问题解决的步骤记录下来,一来让自己能跟深刻的体会一下,锻炼一下总结能力,二来可以帮助到以后碰到这个问题的人。
先找到找到listener.ora 文件,实验机器位于:E:\app\kerry\product\11.2.0\dbhome_1\NETWORK\ADMIN 目录下的listener.ora文件。问题都在这个文件上。
该文件初始如下所示:
# listener.ora Network Configuration File: E:\app\kerry\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\kerry\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)  www.2cto.com  
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\kerry\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.32.106)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = E:\app\kerry

解决办法:
在  
 (SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = E:\tools\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\tools\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
后面添加
(SID_DESC =
(GLOBAL_DBNAME =  orcl.20.32.106 )
(ORACLE_HOME = E:\tools\oracle\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
添加后的文件内容:
# listener.ora Network Configuration File: E:\app\kerry\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\kerry\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\kerry\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
     (SID_DESC =
      (GLOBAL_DBNAME = orcl.20.32.106)
      (ORACLE_HOME = E:\app\kerry\product\11.2.0\dbhome_1)
      (SID_NAME = ORCL)  www.2cto.com  
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.32.106)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = E:\app\kerry
注意SID_NAME对应网络服务命名, GLOBAL_DBNAME对应服务名。配置这些后,然后重新开启服务从新连接,OK,问题迎刃而解!
### 解决方案 当遇到 `ORA-12514: TNS:listener does not currently know of service requested in connect descriptor` 错误时,通常意味着客户端尝试连接到数据库实例时,TNS 监听器未能识别所提供的服务名称。这可能是由于配置文件中的设置不正确或监听器未注册该服务。 #### 配置检查与修正 为了确保能够成功建立连接,需验证并调整如下几个方面: - **tnsnames.ora 文件** 确认 `tnsnames.ora` 中定义的服务名是否匹配实际运行的数据库实例名称,并且地址部分指向正确的主机和端口[^3]。 ```plaintext PROD1_S = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD1) # 应与目标数据库的服务名一致 ) ) ``` - **listener.ora 文件** 同样,在 `listener.ora` 中也需要指定相同的服务名以便于监听器可以正常工作。如果存在多个服务,则应全部列出[^1]。 ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = PROD1) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = PROD1) ) ) ``` - **重启监听器和服务** 完成上述修改之后,记得重新启动监听器以及对应的数据库服务以使更改生效。可以通过命令行工具执行这些操作[^2]。 ```bash lsnrctl stop lsnrctl start sqlplus "/ as sysdba" startup force; exit ``` 通过以上步骤应该能有效解决 `ORA-12514` 的问题。另外建议定期备份重要数据以防意外情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值