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

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

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

打开看到内容如下:

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,

ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第5张图片
修改为图中红框内容后,重启监听

lsnrctl stop
lsnrctl start

在这里插入图片描述

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

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

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

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

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

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

在这里插入图片描述
根据查询结果知道服务监听有问题。
方法二 :通过sqlplus连接串连接数据库看是否能连接:
sqlplus username/passwd@localhost:1521/orcl as sysdbaORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第7张图片
看到仍旧提示 ORA-12514
所以判断服务的监听有问题,想着刚刚修改监听文件,然后还原监听文件,再重启
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第8张图片

重启后通过连接串连接:看到同样能连接上了,
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第9张图片
再次通过PLSQL 连接时,发现仍然不能连接还是同样的错误。ORA-12154,此时可以断定是客户端tnsnames.ora配置有问题,我们可以通过在plsql 中配置连接串来连接 表示客户端监听配置文件tnsnames.ora有问题

username/[email protected]:1521/orcl as sysdba

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

配置后通过如下方式连接
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第11张图片
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第12张图片
看到通过连接串能连接数据库。
方法二: 通过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)
    )
  )

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

即网络服务名为local_orcl
step 2 测试tnsname.ora配置是否正常
tnsping local_orcl
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第14张图片

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

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

再次打开该监听文件
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第15张图片

乍一看,内容都没有问题,仔细比对会发现,这里local_orcl 没有顶格,我勒个苍天……
然后修改配置文件
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路_第16张图片

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

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

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

你可能感兴趣的:(数据库)