How to change the Oracle Client user in a connection - oracle

I have the oracle 10 and 11 clients instaled in my machine. When i go to the command line and type TNSPING the output tells my something like this
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-OUT-2012 09:34:39
so, i assume that this machine is using the 10 version of oracle client to handle the connections.
How to change it?

If you go to a command line and type "tnsping" on a Windows machine, whichever Oracle Home is listed first in your PATH environment variable will be the Oracle Home that is used. If you want the 11g Oracle Home to be the default, you can edit the PATH environment variable (Control Panel | System | Advanced | Environment Variables) and move the 11g Oracle Home path ahead of the 10g Oracle Home path. Alternately, you should be able to open the Oracle Universal Installer from the 11g install and use the Oracle Home selector that is in that utility to change the order of the paths in your PATH environment variable. Behind the scenes, that tool is just rearranging the directories in your PATH.
Whether the default Oracle Home is being used by a particular application, though, is a somewhat different matter. Some applications are set up to use whichever Oracle Home happens to be the default. Other applications can make use of components installed in the non-default Oracle Home. Since you tagged this question ODP.Net, I assume that the application(s) you are actually concerned about are using ODP.Net. If that's the case, you probably want to look through the ODP.Net FAQ where it discusses using ODP.Net on a client with multiple Oracle Homes.

Exactly for the same reason I have made the following tool:
http://oratools.codeplex.com/wikipage?title=Oracle%20Home%20Selector&referringTitle=Home
it searches for oracle clients installed on machine, and allows to switch current oracle home by modifying registry, environment variables and registered libraries

Related

How can I configure DOS and SQL Developer to use the TNSAMES file I want to use?

I am using SQL Developer to connect to a few Oracle databases on different versions i.e. 18.0.0 and 11.2.0.
I have installed both sets of drivers on my PC. It appears that when I use TNSPING (via a command prompt); it uses the TNSNAMES file in the 18.0.0 folder and when I use the SQL Developer tool (https://www.oracle.com/uk/tools/downloads/sqldev-v192-downloads.html) it uses the TNSNAMES file in the 11.2.0 folder.
How can I configure DOS (TNSPING) and SQL Developer at runtime to use the TNSAMES file I want to use?
I have spent one hour Googling this, but I have not found an answer.
Two platforms, two different answers.
For 'DOS' - or say a command line interface running from the Oracle Client. SQLPlus is set to honor an ENV Var called TNS_ADMIN, but it will also check the ORACLE_HOME/network/admin folder, and it will also check the Windows Registry under HKEY_LOCAL_MACHINE and Oracle, also for TNS_ADMIN.
For SQL Developer, a Java application using JDBC driver, it also tries to honor the TNS_ADMIN environment variable, although it does NOT go into the Windows Registry, looking for known TNSNames.ora files. It will also look in the current folder, or it will look where you TOLD it to look, in the application preferences.
You can see for yourself where SQL Developer is looking, but running this command through the script engine (F5) -
show tns
This will show you what files we've found and are using, in addition to the first dozen or so services.
TNS Lookup locations
--------------------
1. USER Home dir
C:\Users\jdsmith
Location used:
-------------
C:\Users\jdsmith
Available TNS Entries
---------------------
LISTENER_ORCL12C
ORCL
ORCL12C
If you want to tell SQLDev which tnsnames to use, look at the perferences
If you google 'tnsnames sql developer' the first couple of hits are StackOverflow questions that already cover this, and the 3rd one is to my blog.

ora-12560 :TNS: protocol adapter error after installing ODP.NET

I have installed Oracle Database 11.2.0.1 Win64 and also Client 11.2.0.1 Win64 in my windows 7 Ultimate and I was able to access Oracle database using Sql*plus
using sqlplus / as sysdba. After that I installed ODP.NET ODTwithODAC1120320_32bit to work with Oracle using C# in Visual Studio 2010. When i tried to add connection to Oracle database using ODP it pops out ora-12560 :TNS: protocol adapter error and even during logging to Oracle using SqlPlus / as sysdba.
I have read several articles that say stopped service will cause but mine is running.
What could be the problem???
The main problem that I faced Connecting to Oracle 11g using Server explorer in VS 2010 was not version compatibility of ODP with Oracle database but it's architecture. After such errors I uninstalled Oracle Database 11g using deinstall.bat file then cleaned Registry Key ../Software/Oracle and cleaned up temp files, did a system restart. Then installed Oracle 11g Database x32 Database server, ODP.NET x32, checked Env vars.
First success was that I was able to connect to DB using SQL*Plus. After that started VS 2010 and tried to connect ..... Connected! wow has worked in VS IDE. I was so happy :)
I remember how many times I reinstalled Oracle(cleaning,configuring checking listeners, restarting services). Then my hard work really paid off.
here is a screenshot
Generally, I advise to install Oracle server under different credentials than what you usually use. The Oracle server (under Windows) makes use of a few environment variables; and the same is the case with ODP.NET as well. And while you can't easily switch between different sets of env variables in your user profile, you can assign different env var values to a (different) user under which the Oracle server is installed and/or being run.
If you already have your Oracle server installed (which, I suspect, is your case), then try:
Create a new user in your Windows, make him sufficiently privileged. ("Admin" rights will do fine. :-))
Log in as the new user.
Set up ORACLE_HOME, ORACLE_SID, NLS_LANGUAGE and PATH environment variables for that particular user (not globally for the whole Windows!) to point to your Oracle server.
Log in as the original user.
Start the Services management console ("services.msc").
Change "Log On" credentials for the OracleServiceSOMETHING and Oracle SOMETHING VSS Writer Service and OracleJobSchedulerSOMETHING and OracleOraDb11g_home1TNSListener to that new user+password you just created. (... where SOMETHING is usually the name of your instance)
Stop all Oracle services.
Set up ORACLE_HOME and PATH env var to point to your ODP.NET root and root\bin folders respectively; set up the ORACLE_SID and NLS_LANGUAGE vars to whatever values you need.
Start all Oracle services. (After this moment they should be running under their own credentials.)
Let's pray that it works.
I myself would have to improvise, too, if this scenario didn't work. But so far I have successfully run two Oracle servers and one Oracle client on the same machine this way with no problems, so I hope it works for you too. If it does not, then there's still the option of reinstalling your Oracle server completely.
Don't forget about backing up your database ... just in case something horrible happens.

Can Oracle client versions 9 and 11 both be installed on the same machine?

I have a program using odac(11.2) and oracle client 11.2. Now I want to deploy it to a box which is already installed a oracle 9i client.
Some existing programs is depend on it so I fear the new client will harm the existing program. Is this true? And how can I keep them all working properly?
Normally you install oracle products in a dedicates ORACLE_HOME in different directories (like /ora/app/oracle/product/9.2 and /ora/app/oracle/product/11.2). Then you set the $ORACLE_HOME and $PATH variables to that directory which will be working fine.
We use many different client versions from 8.1.6 to 11.2 on one machine. Every application has an own shell script setting up the correct environment prior to starting.

Cognos 8.3 failing to connect to data source. Why?

I have installed Cognos BI 8.3 on my machine, which has a Windows 7 OS 64-bit. In IBM's supported environment list for Cognos 8.3, Windows 7 is not listed. On top of that, it says the product will only integrate with 32-bit 3rd party libraries. So, you can already see that I'm already starting on a bad foot. But anyways, this is the machine I have and that is the software I got, so I decided to see if they would work together..
I installed Oracle 10g Express database also in my machine and Apache 2.2 server. Up to there no problems.
Before moving further, I copied ojdbc14.jar to cognos/.../webapps/p2pd/WEB-INF/lib and added the Oracle database in Cognos Configuration. Tested, passed.
With the database started, the Apache server started, and Cognos started, I was successfully able to start Cognos Connection on the computer. So, it looks like the OS is not an issue.
(You can see everything I did by following the steps on this site, which since two days ago seems to be down but I'm thinking will eventually come back up)
Then I decided to try the samples, so I tried to create a data source connection from Cognos to the Oracle database. So, in the admin config console (i.e. Administer Cognos Contents > Configuration), I decided to create a new Oracle data source. I put the credentials, but BAM.. testing fails.
Fail Message:
QE-DEF-0285 The logon failed.
QE-DEF-0323 The DSN(ODBC)/ServiceName is invalid. Either the DSN is missing or the host is inaccessible.
RQP-DEF-0068 Unable to connect to at least one database during a multi-database attach to 1 database(s) in:
testDateSourceConnection
UDA-SQL-0031 Unable to access the "testDataSourceConnection" database.
UDA-SQL-0532 Data Source is not accessible: "XE".
ORA-12154: TNS:could not resolve the connect identifier specified
RSV-SRV-0042 Trace back:
...
From what I have researched, it could be a number of things, but nothing seems to work. Here is what I tried:
Adding ODBC driver. Added the Oracle XE driver, even making sure it was done in the 32-bit ODBC manager (i.e. Windows\SysWOW64\odbcad32.exe). That didn't work.
Added ORACLE_HOME, LD_LIBRARY_PATH, and TNS_ADMIN to my environment variables.
tnsping'ed the XE database and it the ping returned ok.
There are no tnsnames.ora duplicates in the computer.
I tried and I am able to connect to the database via sqlplus. Did I mention that Cognos Config database test also passed?
Installed Oracle XE client. But didn't do much with it because the Oracle server is installed in the computer and also has a client component.
Has anyone come across this problem? I haven't been able to diagnose the problem or make even the slight progress for days. If you would like me to provide more information on any of the solutions I tried, please do ask. If you have a potential solution or, even better, if you have been able to solve this problem before, please let me know how!
Thanks!
One thing to keep in mind : certain portions of Cognos BI are implemented via Java and other portions are implemented via native C++ processes (the BI Bus processes)
Cognos connects to the content store database from the Java process using JDBC.
The BI Bus processes will connect to Oracle using a native oracle client.
So based on your description, I'd say that the problem area is in the native oracle client configuration (or the Cognos service's perspective of it).
You mentioned adding the ORACLE_HOME, LD_LIBRARY_PATH, and TNS_ADMIN environment variables in windows, and the fact that Oracle Utilities like SQLPlus and TNSPing are working for you.
When you added the environment variables, did you add them to the SYSTEM area for environment variables or the User area...?
If you're running Cognos as a service, its going to be a child process of SERVICES.EXE, which is run as system (this process is also not restarted unless you reboot the machine).
I'd try this :
make sure the above environment variables are defined for the SYSTEM user (in the system area, not the user area)
once you've done this, reboot the machine
See if you can create the database connection now.
If that doesn't work, I'd suggest doing a "run as" of SQLPlus or TNSPING as the SYSTEM user (and see if that works).
In order to use oracle as data source, you must install 32 bit client.
64 bit client will not work.
So if you installed oracle express 64 bit, and you don't want to uninstall it,
you can just install additional 32 bit client, and make sure to set it as your default home.

Multiple Oracle Clients

If I have multiple Oracle clients installed on a given workstation (i.e. Oracle 9 and Oracle 10), how do I specify which one is used by ADO? Is there a way to swap between the two clients?
I am currently using the Oracle Provide - oraoledb, not the Microsoft provider.
Apparently, I asked a trick question...although you can indeed use multiple Oracle Homes, the Oraoledb driver does not support multiple homes. In fact, since the OraOLEDB component is based on COM, it can only be installed correctly to one location at a time...
The Microsoft provider depends upon the current Oracle Home (environment path). Now you can change this through the Oracle Home selector but the Microsoft provider does not support the ability to change the path programmatically.
Source
The first oracle home which is specified in the PATH environment variable is used. Be aware that this is user specific and if you change it in a process, it's local to that process.
In general you shouldn't switch homes inside software, though simply use the latest one. Unless you're targeting 8i, the 10g client can connect to 9i without problems.

Resources