ORA-12545:连接失败,因为目标主机或对象不存在

时间:2011-01-26 02:35:32

标签: sql oracle ora-12545

之前有没有人遇到此错误?我试图引用此链接:http://www.ardentperf.com/2007/04/02/local_listener-and-ora-12545/

但它并没有真正解决我们的问题。我们的场景是我们能够连接到数据库,但是当我们尝试从视图中选择数据时,我们将遇到此错误。

我已启用客户端sqlnet跟踪,但我无法解释问题的确切原因。

任何想法?

由于

3 个答案:

答案 0 :(得分:2)

对我来说,问题是在TNSNAMES.ora中没有通过名称检测到HOST,而是使用IP地址解决了它(我认为是由于域控制器问题):

XYZD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 123.45.67.89)(PORT = 1521))
    (CONNECT_DATA = (SERVICE_NAME = XYZD))
  )

执行命令:“ping HOST”以查找服务器IP地址。

  • PING HOST
  • TELNET HOST PORT
  • TNSPING TNS_ALIAS

编辑:

再次碰到这个,这次是防火墙通过端口阻止TCP。

答案 1 :(得分:0)

这个问题可能有很多:

<强> 1。您的TNSNAMES.ora不是最新的

修复:找到您的Oracle主页 查找目录:/ network / ADMIN /

如果您在本地计算机上遇到此问题,TNSNAMES.ora应该在那里

<强> 2。创建TNS_ADMIN环境变量

就我而言:

变量名称:TNS_ADMIN

值:C:\ Programs \ Ora10g \ network \ ADMIN

出于测试目的,尝试使用sqlplus连接到Oracle DB(您可能已经尝试过这个)。

答案 2 :(得分:-1)

我也遇到了这个问题,并且由于我没有使用tnsnames.ora文件,所以当我踩到这个link时,我几乎放弃了希望。
因此,现在我的代码如下:

import cx_Oracle 
connection_string = '''username/password@(DESCRIPTION=
                                            (ADDRESS_LIST=
                                                (ADDRESS=
                                                    (PROTOCOL=TCP)
                                                    (HOST=<host_name>)
                                                    (PORT=<port_numer>)
                                                )
                                            )
                                            (CONNECT_DATA=
                                                (SID=<your_SID>)
                                            )
                                        )'''
db = cx_Oracle.connect(connection_String)

现在您可以创建一个游标并编写查询。
注意:这不是推荐的做法,但我只是将其用于测试。