【各种问题系列】plsql developer 报错 ORA-12154:TNS:无法解析指定的连接标识符

使用plsql developer连接数据库时报错:ORA-12154:TNS:无法解析指定的连接标识符
1、首先使用tnsping命令

Oracle Net 工具(命令)tnsping,是一个OSI会话层的工具,它用来:
1)验证名字解析(name resolution,是oracle自己的网络服务名)
2)远程的listener是否启动

如下表示配置成功

C:\Users\***>tnsping 192.168.90.13:1521
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 22-11月-2018 17:29:11
Copyright (c) 1997, 2010, Oracle.  All rights reserved.
已使用的参数文件:
D:\app\***\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora
已使用 HOSTNAME 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.**.**)(PORT=****)))
OK (10 毫秒)

2、但是用plsql developer连接数据库仍报错,因此应该是配置文件的问题
【各种问题系列】plsql developer 报错 ORA-12154:TNS:无法解析指定的连接标识符
我按照网上查到的tnsnames.ora的文件内容改了很久,还是不对。
首先,要有最原始自动生成的版本。如果你的上述路径没有这几个文件,就按照这篇文章的做法生成。https://blog.csdn.net/u010902500/article/details/78605867
打开自动生成的tnsnames.ora,可以看到是如下内容:(我的oracle是11G,所以其他版本的可能内容会不同)

# tnsnames.ora Network Configuration File: D:\app\pku\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

之后要添加你需要连接的数据库信息,格式必须和这段内容一样。我的报错原因就是因为我后面添加的数据库信息和这段的内容和格式有点不同,是从其他人的文章中粘过来的。所以我们要按照系统生成的配置文件格式来添加内容。如下:

test =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.**.**)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME=test)
    )
  )

192.168..:1521就是我要连接的数据库,SERVICE_NAME是数据库实例名。

Done!