开发者

ORA-12545: Connect failed because target host or object does not exist

开发者 https://www.devze.com 2023-02-06 23:17 出处:网络
Have anyone encounter this error before? I tried to refer to this link: http://www.ardentperf.com/2007/04/02/local_listener-and-ora-12545/

Have anyone encounter this error before? I tried to refer to this link: http://www.ardentperf.com/2007/04/02/local_listener-and-ora-12545/

But it doesn't really resolve o开发者_开发技巧ur issue. Our scenario is that we are able to connect to the database however we will encounter this error when we try to select data from a view.

I have enabled Client-side sqlnet trace but i am unable to interpret what is the exact cause of the issue.

Any ideas anyone?

Thanks


For me the problem was the HOST was not being detected by name in the TNSNAMES.ora, using the IP address instead resolved it (I think its due to a domain controller issue):

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

Do a command: “ping HOST” to find the servers IP address.

  • PING HOST
  • TELNET HOST PORT
  • TNSPING TNS_ALIAS

Edit:

Just ran into this again, this time it was a Firewall blocking TCP via the port.


This issue can be multiple things:

1. Your TNSNAMES.ora isn't up to date

Fix: Find your Oracle Home Find Directory: /network/ADMIN/

TNSNAMES.ora should be in there if you're experiencing this issue on a local machine

2. Create TNS_ADMIN Environmental Variable

In my case:

Variable Name: TNS_ADMIN

Value: C:\Programs\Ora10g\network\ADMIN

For testing purposes, try connecting to the Oracle DB using sqlplus (you may already be trying this).


I also had this issue, and since I was not using a tnsnames.ora file, I almost gave up hope, when I stepped on this link.
So, now my code looks like this:

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)

Now you can create a cursor and write your query.
Note: This is not a recommended practice, but I used it just for testing.

0

精彩评论

暂无评论...
验证码 换一张
取 消