I'm having problems accessing an Oracle database via ODBC in Access and hope someone has some advice. I've spent a fair time trying to find a solution, but nothing useful has come up.
I have a connection setup in ODBC that access an Oracle 9 database. I can use the Test option on ODBC administrator and receive a Test Successful message. I can also connect to the DB using SQL*PLUS. However, when I try to create a new linked table in Access 2007 and use the ODBC option, I get the following error when it tries to connect:
ODBC--Call failed.
[Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve service name
(#12154)[Microsoft][ODBC Driver Manager]Driver's SQLSetConnectAttr failed IM006 0 [Microsoft][ODBC Driver Manager]Driver's SQLSetConnectAttr failed (#0)
I know the TNS lookup is working because ODBC Admin tool works as does tnsping. The question is, why does it work outside Access but Access can't do it?
EDIT (2012-02-22 15:05): Just tried on a different PC and the same thing occurs, although another user logged in and the connection worked for them, so it appears to be linked to my WinXP profile. Does this help any?
Any advice would be greatly appreciated.
BBz
I think I've resolved the issue, but it took some digging. Using Process Monitor from Sysinternals, I discovered that Access had found a sqlnet.ora file in the "My Documents" folder of my profile and was using this in preference to the global tnsnames.ora file.
We had previously disabled sqlnet.ora (renamed the file in the Oracle folder) but Access obvisouly checks other locations for it. I've renamed the file and can now access the DB as expected via ODBC.
Interesting what you can learn!
Hope somebody finds this useful one day.
Thanks for reading
BBz
Related
I have a LOCAL Oracle 19c database. I am trying to get ADO to connect to it. The first step is to get ODBC working. I have one PDB container called orclpdb, which is what I want to use. I can connect from SQL*Plus...
Y:\INSTALL_UNZIP\bin\sqlplus.exe acs/<Password>#localhost:1521/orclpdb
I go into the 64-bit ODBC Administrator, and had to fight a little bit (adding OCI_LIB32 and TNS_ADMIN paths), but finally got the ODBC Admin tool to connect, but ONLY to the root/system database. My root question is 'How do I get ODBC administrator to connect to a specific container DB?
Within the ODBC Administrator, the TNS Service Name field dropdown only shows ORCL, not orclpdb. Again, I can connect using ORCL, but as system/.
UPDATE: Due to issues such as this, I switched most apps to Devart's Oracle Data Access components to Delphi. They have a DIRECT mode, which does not need SQL*Net or TNS stuff
.
Make sure your TNS_ADMIN/tnsnames.ora file has an entry for the PDB (orclpdb).
I have recently downloaded toad for oracle and i want to connect it to my databases but all I have is a cloud wallet for the database.
I have tried to unzip the cloud wallet and point the toad to that location so it can read the tnsnames.ora file but it did not work. I tried editing the current TOAD tns file and adding the host, port, service name and the credentials but it still did not connect. I kept getting a lot of different errors for example connection failed. file could not open
I do not know how to configure TOAD for it to connect.
Can anyone guide me in the process, I researched it a lot but nobody seem to do it often.
Thanks
This is entirely an Oracle Client configuration issue; there is nothing to do in TOAD itself. You need to either unzip the cloud wallet into your ORACLE_HOME/network/admin directory, or unzip it to a custom directory and set the TNS_ADMIN environment variable to point that directory. Note that TNS_ADMIN must be set before you start TOAD.
Here's one reference I found:
https://forums.toadworld.com/t/toad-connection-to-oracle-cloud-autonomous-database-using-wallet/48202
I am new to Programming. I am learning JAVA and for DB i wanted to learn Oracle so I downloaded sqldeveloper from Oracle website. It was a zip file so I didnot have to install anything, simply extracted it. When I open the sqldeveloper and try to make a new connection, it shows error.
Test failed: IO Error: The network adapter could not establish the connection.
I am not sure what to put in username and pwd. and i am also not sure if i have to connect this to jdk or jre or set classpath for database.
Can anyone help me?? I have uploaded the snapshot of the error too.
You downloaded a client.
You did NOT download the server component though - the actual database.
SQL Developer just allows you to work with an existing database.
No worries, you're not that far away. You have several options.
Oracle Database Express Edition (XE) - it's completely free.
We also have a VirtualBox appliance you can use for personal learning purposes, also completely free.
I talk about this and give step by step instructions here.
Check if oracle service, TNSListener service is up and running before trying to make any new connection from sql developer.
Even if TNS Service is down , connection can not be established with oracle instance.
I am new to Programming. I am learning JAVA and for DB i wanted to learn Oracle so I downloaded sqldeveloper from Oracle website. It was a zip file so I didnot have to install anything, simply extracted it. When I open the sqldeveloper and try to make a new connection, it shows error.
Test failed: IO Error: The network adapter could not establish the connection.
I am not sure what to put in username and pwd. and i am also not sure if i have to connect this to jdk or jre or set classpath for database.
Can anyone help me?? I have uploaded the snapshot of the error too.
You downloaded a client.
You did NOT download the server component though - the actual database.
SQL Developer just allows you to work with an existing database.
No worries, you're not that far away. You have several options.
Oracle Database Express Edition (XE) - it's completely free.
We also have a VirtualBox appliance you can use for personal learning purposes, also completely free.
I talk about this and give step by step instructions here.
Check if oracle service, TNSListener service is up and running before trying to make any new connection from sql developer.
Even if TNS Service is down , connection can not be established with oracle instance.
Currently I am trying to understand how can two databases communicate to each other (for instance: get data from one to another).
Detailed description
I have two Oracle databases, one on Windows and latter on Oracle VirtualBox. On Windows DB I have one user (PAI) with single table called TESTME. On VirtualBox, only user (PAI_VB) was created. Now, I want to display the content of the TESTME table from SQL Developer from VB.
I have done
I want to display table TESTME using LINK statement:
CREATE DATABASE LINK LINK_TO_PAI
CONNECT TO PAI IDENTIFIED BY PAI
USING 'DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=myIP)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=XE))';
Note: data from 'DESCRIPTION' section were taken from tnsname.ora file on Windows.
Having that, via following query I will manage to display table:
SELECT * FROM PAI.TESTME#LINK_TO_PAI;
Unfortunately, it does not work.
Error from console
ORA-12154: TNS:could not resolve the connect identifier specified
12154. 00000 - "TNS:could not resolve the connect identifier specified"
*Cause: A connection to a database or other service was requested using
a connect identifier, and the connect identifier specified could not
be resolved into a connect descriptor using one of the naming methods
configured. For example, if the type of connect identifier used was a
net service name then the net service name could not be found in a
naming method repository, or the repository could not be
located or reached.
*Action:
- If you are using local naming (TNSNAMES.ORA file):
- Make sure that "TNSNAMES" is listed as one of the values of the
NAMES.DIRECTORY_PATH parameter in the Oracle Net profile
Questions
Could you please propose solution to my problem (I know that in *Action section there is a hint but still I cannot solve it).
Maybe, you could introduce me another way to make communication between two databases possible.
EDIT
I managed to connect from my VB machine to one on Win10 via SQLDeveloper and SQLPlus. Unfortunately, using Oracle LINK I can not access data from database.
SOLVED !!
I managed to solve my issue. The problem laid in LINK. Since following part:
'DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=myIP)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=XE))'
was inside tnsnames.ora file i should define my link as follows:
CREATE DATABASE LINK LINK_TO_PAI
CONNECT TO PAI IDENTIFIED BY PAI
USING 'xe';
After that minor change, I was able to freely us LINK in my example. Cheers :)
Here's what you need to have for a working database link:
Network connectivity between the two hosts.
Oracle Listener process running on the host you want to connect to.
Correct TNS entry while creating the link.
Correct username and password to connect to the remote database.
The TNS-12154 error you're getting means the database running on the virtual host can't get to XE's listener using the description you gave it.
Make sure you're using the correct IP address when trying to connect to your Windows host from your virtual machine.
Run tnsping from your virtual environment to see if it can get to the Windows host listener.
tnsping 'DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=your_windows_host_ip_from_step_1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE))'
or just tnsping XE if you have the TNS entry stored as XE in tnsnames.ora file on your virtual machine.
See also: Oracle documentation — Testing Connections.
Once you get OK response from tnsping try connecting to XE with sqlplus (sqlplus PAI/PAI#XE) or via SQL Developer running on the virtual host. If you can connect that way your database link should also work with the same TNS entry.
This is a tricky part of oracle because there are a number of diverent ways to make a connection.
I suggest that you begin to make sure that you have a tnsnames.ora file both on windows and in your virtualbox environment. What os are you running in VirtualBox by the way?
In both tnsnames.ora files both databases should be named. Easiest to make them identical.
Then connect with sql*plus from windows to your database in VirtualBox and from VirtualBox to your database on Windows.
Just to make sure your network and tns config are OK.
If this works recreate your db-link with the servce alias from tnsnames after using. This should work.