【Linux Centos6/7连接Oracle11g数据库,提示:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务】

8 篇文章 0 订阅
6 篇文章 0 订阅

Linux Centos6/7连接Oracle11g数据库,提示:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

故障描述

请添加图片描述

提示该异常说明了两个前提:

第一是Oracle数据库是开启状态

第二是监听程序处于开启状态

解决步骤

1.登录oracle用户权限并查看监听状况
[root@localhost ~]# su oracle
# 查看监听状态
[oracle@localhost ~]$ lsnrctl status 
# 文章最后第一个链接介绍了动态监听和静态监听不通处理方法,我主要是静态监听故障

请添加图片描述

READY说明为动态监听,UNKNOWN则为静态监听(该判断不够准确,具体要到/network/admin/目录下的listener.ora里查看,如果不存在该配置文件,或者未配置SID_LIST_[监听名](ps:SID_LIST_LISTENER)则为动态监听)

2.修改配置文件(重点

必看备注:下面所更改的文件是恢复成功后直接从服务器拷贝的文件,和一些其它作者配置可能有所不同,如有问题还请多尝试几种,文章最后放上大佬们遇到该问题的配置文件。

(1) 修改listener.ora
# Oracle11g 64位软件的安装位置为data/oracle/product/11.2.0/db_1,数据库名为默认的orcl,CentOS7虚拟机的IP设置为:68.219.182.33
[oracle@localhost ~]$ vim /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# /network/admin/目录下,查看自己Oracle的安装目录

原文件:

# listener.ora Network Configuration File: /opt/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
  
ADR_BASE_LISTENER = /opt/app/oracle

改为如下: 切记格式非常重要,一定要仔细检查

# listener.ora Network Configuration File: /opt/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 68.219.182.33)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)

ADR_BASE_LISTENER = /opt/app/oracle

[监听名]和SID_LIST_[监听名]配置是成对出现
配置listener.ora中GLOBAL_DBNAME的值等于tnsnames.ora中的SERVICE_NAME

(2) 修改tnsnames.ora
[oracle@localhost ~]$ vim /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# /network/admin/目录下,查看自己Oracle的安装目录

原文件:

# tnsnames.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

改为如下: 切记格式非常重要,一定要仔细检查

# tnsnames.ora Network Configuration File: /opt/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

orcl =
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 68.219.182.33)(PORT = 1521))
     (CONNECT_DATA =
     (SERVICE_NAME = orcl11g.us.oracle.com)
     )  
  )
3. 重启监听并更新注册
[oracle@localhost ~]$ lsnrctl stop             # 先关闭监听服务
[oracle@localhost ~]$ lsnrctl start            # 开启监听服务

注意看启动端口时候生效

[oracle@localhost ~]$ sqlplus / as sysdba     #登入
SQL> shutdown immediate             #立即关闭数据库服务
SQL> startup                                    #开启数据库服务
SQL> alter system register;        #注册
SQL> quit         #登出
[oracle@localhost ~]$ lsnrctl status        #查看监听状态
4.再次用plsql访问成功
附:
# sqlnet.ora内容

# sqlnet.ora Network Configuration File: /opt/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = /opt/app/oracle

总结:本文主要参考大佬文章,其中少部分为自己个人看法和配置,个人记性不好,所以总结加记要;再次感谢CSDN各位大佬的贡献,我只是个小小搬运工。

参考大佬文献

https://blog.csdn.net/weixin_37769855/article/details/99435520

https://www.cnblogs.com/nichoc/p/6417505.html

https://blog.csdn.net/u013310119/article/details/80995238

https://bbs.csdn.net/topics/390463788?sharesource=xiongben0102

http://blog.itpub.net/23718752/viewspace-1061787/

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值