ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路

今天通过plsql 连接本地的数据库是,报如下错误
ORA-12154: TNS: 无法解析指定的连接标识符
在这里插入图片描述
先查看本地数据监听是否启动:
可以通过任务管理器查看,本地数据库服务的监听也启动
在这里插入图片描述
或者通过命令 lsnrctl 查看
在cmd窗口中输入 lsnrctl
然后在弹出的窗口中输入status
在这里插入图片描述
看到本地监听启动没有问题, 查看本地服务监听配置文件:
listener.ora 位置在oracle_home下/network/admin 下 这里oracle_home 指安装oracle时配置的环境变量,
本实例路径为 D:\software\oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN

在这里插入图片描述

打开看到内容如下:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
	 
    )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\software\oracle11\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\software\oracle11\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
	(SID_DESC =
	   (GLOBAL_DBNAME= orcl)
      (ORACLE_HOME = D:\software\oracle11\product\11.2.0\dbhome_1)
	   (SID_NAME = orcl)
      
       
    )
  )
 
ADR_BASE_LISTENER = D:\software\oracle11\product\11.2.0\dbhome_1\log

看到上面的内容,自己想当然的认为 SID_LIST_LISTENER 应改为 SID_LIST_LISTENER _ORCL,

在这里插入图片描述
修改为图中红框内容后,重启监听

lsnrctl stop
lsnrctl start

在这里插入图片描述

然后再去连接,仍然提示 ORA 12154 错误

然后想到会不会本地服务监听有问题,这里虽然能通过sqlplus 如下的方法连接

在这里插入图片描述

方法一:
但是该方法是不会通过监听连接的,sqlplus直接通过IPC的方式连接,所以不能证明本地服务的监听是否正常。

但是连接后可以通过获取IP的方式判断,如果获取不到IP表是监听不正常

select sys_context('userenv','ip_address') from dual;

在这里插入图片描述
根据查询结果知道服务监听有问题。
方法二 :通过sqlplus连接串连接数据库看是否能连接:
sqlplus username/passwd@localhost:1521/orcl as sysdba在这里插入图片描述
看到仍旧提示 ORA-12514
所以判断服务的监听有问题,想着刚刚修改监听文件,然后还原监听文件,再重启
在这里插入图片描述

重启后通过连接串连接:看到同样能连接上了,
在这里插入图片描述
再次通过PLSQL 连接时,发现仍然不能连接还是同样的错误。ORA-12154,此时可以断定是客户端tnsnames.ora配置有问题,我们可以通过在plsql 中配置连接串来连接 表示客户端监听配置文件tnsnames.ora有问题

username/passwd@127.0.0.1:1521/orcl as sysdba

在这里插入图片描述

配置后通过如下方式连接
在这里插入图片描述
在这里插入图片描述
看到通过连接串能连接数据库。
方法二: 通过tnsping 网络服务名

step1 找到网络服务名
找到环境变量TNS_ADMIN 即找到客户端的监听文件配置:
本实例路径:D:\software\oraclient\network\admin
打开tnsnames.ora文件
看到本地服务的监听配置如下:

  local_orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

在这里插入图片描述

即网络服务名为local_orcl
step 2 测试tnsname.ora配置是否正常
tnsping local_orcl
在这里插入图片描述

看到报错 TNS-03505: 无法解析名称

由此判定是客户端tnsnames.ora配置文件的问题

再次打开该监听文件
在这里插入图片描述

乍一看,内容都没有问题,仔细比对会发现,这里local_orcl 没有顶格,我勒个苍天……
然后修改配置文件
在这里插入图片描述

修改配置文件后,再次检测监听是否正常
在这里插入图片描述
通过上面的内容表示监听配置没有问题了,再次通过plsql也能正常连接了。

最后总结下,ORA-12154: TNS: 无法解析指定的连接标识符 以及 TNS-03505: 无法解析名称
或者跟监听相关的报错信息,解决问题的思路是
1、先判断服务器的监听是否正常,
1)可以通过 lsnrctl 命令 status来看,其实也开始的时候,仔细看到status的信息中说道了监听不支持服务,这就表示服务监听有问题
2)通过sqlplus连接串的方式连接数据库,如果能正常连接表示服务监听没有问题
3)通过sqlplus不用连接串的方式登录后,如果能正常获取ip表示数据库监听没有问题

2、如果服务器ip没有问题后,一般就是客户端监听文件配置问题了,客户端监听文件的配置可以通过
tnsping + 网络服务名 来测试,

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值