【一个不太一样的解决办法】ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

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

这个问题很头疼,找了很多博客,大家的回答都差不多,经过很久之后,终于弄懂了,现在记录一下

问题背景:shutdown数据库后,一直用不了DBA权限,也就是conn scott/scott@orcl as sysdba会提示ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

产生原因:Oracle9i之后有些设定被修改了,这就导致了oracle10的一些操作会出错。我们通过修改配置文件,其目的是让oracle服务重启之后,自动加载数据库的相关配置。

解决方案:

1、找到listener.ora文件

这个文件的路径在D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN,其中我的oracle安装在了D:\oracle,也就是说前两个地址不太一样,后面的product\10.2.0\db_1\NETWORK\ADMIN都是一样的,在你电脑里面找到oracle后,找到product\10.2.0\db_1\NETWORK\ADMIN后找到listener.ora文件就好了

2、原本文件是

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORACLE)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = orcl)
    )
  )

修改成

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORACLE)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = orcl)
    )
  (SID_DESC =
    (GLOBAL_DBNAME = orcl)
    (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)  
    (SID_NAME = orcl)
    )
  )

注意!!!!不要人云亦云!!!!看你的电脑配置是什么!!!!!

首先要保证后来添加的

(SID_DESC =
    (GLOBAL_DBNAME = orcl)
    (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)  
    (SID_NAME = orcl)
    )

里面的GLOBAL_DBNAME和SID_NAME的名称要一致(严格区分大小写!!!!)

3、找到tnsnames.ora文件(这个文件和上一个文件在同一个目录下)

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

里面的SERVICE_NAME要和上面GLOBAL_DBNAME和SID_NAME的名称一致(同样严格区分大小写!!!!)

4、oracle的所有服务重新启动(或者重新启动电脑也可以)

之后就会发现conn scott/scott@orcl as sysdba可以用了(注意我电脑里面的scott用户的密码是scott!!不要不结合自己电脑的实际去解决问题)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值