Oracle在TNS名称中查找不正确:TNS:无法解析指定的连接标识符



我正试图使用cx_oracle连接到oracle数据库,但收到以下错误消息:

ORA-12154: TNS:could not resolve the connect identifier specified

我正在使用这样一个连接字符串:

'xxxx/pw@lonod-com:1221/LNOUND_USER.uk.something.com'

连接字符串绝对正确,因为它在同一网络上的不同计算机上工作。当使用Oracle SQL Developer时,我也可以连接到数据库,因为它根本无法在Python中工作。

我怀疑出于某种原因,它一直在寻找TNS名称条目,而我没有使用它。是否存在可能导致cx_Oracle继续查找TNS名称条目的标志,或者其他原因可能导致此问题?

如果您的sqlnet.ora配置文件在names.directory_path配置变量中不包含EZCONNECT选项,则会出现这种情况。以下是一些检查您正在使用的内容的方法。您也可以使用SQL*Plus测试这个连接字符串——如果它与SQL*Plus一起使用,它也将与cx_Oracle一起使用。

1) 如果设置了环境变量TNS_ADMIN,则其值指示Oracle在哪里搜索配置文件。如果没有,并且您安装了完整的Oracle客户端,它将查看$Oracle_HOME/network/admin

2) 如果您安装了完整的Oracle客户端,还可以使用tnsping实用程序来确定Oracle正在使用什么以及它正在读取什么配置文件。

3) 如果您在Oracle搜索配置文件的位置有一个sqlnet.ora文件,请在该文件中查找names.directory_path=行。如果它被发现了,它需要看起来像这样:

names.directory_path = (TNSNAMES, EZCONNECT)

希望能有所帮助!

最新更新