Oracle connections from a COM+ application - oracle

We have an Oracle 10.2.0 server running. There is a schema on the server called FOO. I have created an ODBC connection to the schema using the 10.2.0 client.
We have a desktop application that has core database access libraries written by ourselves that uese SQLDriverConnect etc.
We also have a COM+ application that makes use of the same core libraries.
When I connect with the desktop application, using the ODBC connection, there are no problems.
Connecting with the COM+ application, I cannot perform any queries. SQLDriverConnect returns SUCCESS but then any attempt to peform a query gives an Oracle error "not connected". The COM+ application is set to run as the "logged in user".
I'm sure this is probably a security issue, but I don't know where to start.
Any ideas?
Thanks.

I found what was causing the problem, it's an Oracle bug.
Cause:
Oracle Bug 4991478; COM application not able to connect when using Oracle10g Client 10.2 if using Neutral Threading or Free-Threaded Marshaller, Fails With ORA-21561 / ORA-00022
Solution:
Install Oracle Client (patch) 10.2.0.3.0.

Related

Export Database connection to Oracle Developer

I have a database Connection established in odbcad and Microsoft Access (aswell as working in Excel) via ODBC and want to also get it working in Oracle SQL developer.
It is a Windows SQL Server as far as i know and I have tried several Settings, of which None works. I have also installed Driver for ODBC. I would like to Import Settings into SQL developer as applied in MS Access, is there any possibility?
No, SQL Developer is a Java application and uses a JDBC driver.
But if you look at the odbc properties for your connection, those should largely translate to what you need to define a basic connection.
Oracle:
Server name or IP address of the DB, port # for the listener, and the name of the SID or Service, plus a valid username and password is all you need to connect to Oracle.
What error do you get when you try to connect?
Show us what you're trying.
Update:
You're trying to connect to SQL Server but you're getting"
Native SSPI library not loaded
You're trying to use OS Authentication for your connection. For this to work with the jTDS driver, you need to copy a DLL file named ntlmauth.dll (which is for NT authentication) under the jtds-x.x.x-dist\x86\SSO\ or jtds-x.x.x-dist\x64\SSO\, to any directories in the PATH environment.
Please update your question such that's it's clear you're connecting to SQL Server and share the error message so others can find it.
I imagine this question is a duplicate of many previous iterations of the same challenge.

Delphi win32 application to work with Oracle

I have to create win32 client on Delphi, which can work with database on Oracle. The only problem with this task that client have to demand "zero administration".
In other words user downloaded it from our site and ran it without any installing oracle client and tuning tnsnames.ora.
My first aproach was to install apache on server side with connection to Oracle. Our win32 client this case is like web brouser works with Oracle via https.
It works but performance is not so good as expected. Delay in reaction between clent and server side is too long.
Is there any way to acheve my goal (zero adminstration client with good enough performance)?
The product ODAC (Oracle Data Access Components) from DevArt has a "no oracle client needed" mode. This would probably be the easiest solution. You could also just include the Oracle Instant Client with your product and use Oracle's "EZConnect" syntax so that you don't have to configure anything on the client. Using EZConnect allows you to connect to an Oracle Database without using a TNSNames.ora file.

How to sniff Oracle's credentials from a connection attempt to the database?

I have a legacy application, which connects to the configured Oracle database.
It seems it has some logic that alters the database credentials as it is unable to successfully log in to the Oracle database, while sqlplus started on the same machine is able to log in.
The error I am getting is: [DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-01017: invalid username/password; logon denied
How to find out what is the database username and password that are sent to the database?
What I have tried so far:
Enabled auditing of failed sign-on attempts on Oracle (audit create session whenever not successful). It does not solve the issue, because it only logs the username, which seems to be correct, without the password.
Used a sniffer to eavesdrop the network traffic between the machine running the application and the database, but since Oracle's TNS protocol is encrypted, it did not help a lot.
Started a server using netcat on port X, provided port X in the application configuration file. The application did connect to my server, that is how I know the application is connecting to the correct server. But since the TNS protocol is pretty complex (requires a series of messages to be exchanged between the client and the server) I hope there is a simpler why of achiving what I want without having to reverse engineer Oracle and implementing my own server.
Enabled tracing of the JDBC driver (Trace=1, TraceFile, TraceDll). The trace file shows the correct username, but obviously the password is not getting logged.
My environment:
Database: Oracle 11g
Application runs on: Solaris
Application uses: DataDirect ODBC Oracle Wire Protocol v70
I not sure, but if connection established by ODBC driver (as described in question tags) then you can try ODBC sniffing tools like ODBC Tracing.
Citation:
Password "Sniffing" Using Trace
ODBC provides a means for tracing the conversation taking place between the driver and the host database. Used by developers for testing purposes, the tracing feature is designed to help programmers find out exactly what is going on and to help fix problems. However, tracing (also called "sniffing") can be used by nefarious bad guys to retrieve user passwords.
When tracing is enabled, communications with the host are written to a file. This includes the user ID and password, which are captured in plain text.
Update
SQLPlus connects to Oracle with OCI interface, but DataDirect ODBC driver uses it's own proprietary implementation of communication protocol. So, most probable point of failure is driver misconfiguration or incompatibility.
DataDirect provides some tools for ODBC drivers diagnostics, but only option applicable to case described in question is using snoop utility, which acts like a netcat which already tried.
Because connection failed at credential verification stage, the most probable source of error is using localized symbols for user name or password. There are some issues with Oracle authentication process, listed in DataDirect Knowledge Search (search for ORA-01017).
It seems that DataDirect provides two separate version of driver with and without Unicode support, therefore one of possible points of failure is to connecting with non-Unicode version of driver to Unicode version of database and vice verse.
P.S. For now I don't have any experience with DataDirect ODBC driver. So it's only suggestions about possible source of failure.

ADO.NET for connecting Oracle Database on server

Recently we have developed an application which connects to oracle database for fetching records. For fetching records, we are using OLEDB for Oracle. Application runs fine on my machine by connectng properly with Oracle ,since i have oracle client installed on my machine. Now i tried to test application on another machine, which doesnot have any oracle instance/Client installed on his machine. Application fails to connect to oracle central DB Server. Is it necessary for users to install oracle client on their machine before the application communicates with Oracle.
Here is Connection string
connectionString="Provider=msdaora;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XYZ)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=abc.com)));Persist Security Info=False;User Id=mahens; Password=XXXXXXXXX" providerName="System.Data.SQLOLEDB"/>
The above code is for OLEDB for oracle. Is there any thing i required to install for connecting to central Oracle DB server from my windows application(.NET application installed on local machine).
If we try to use ODP.NET dll and include those dll's along within BIN directory,will that work?..Can any1 tell me a way wherein user need not install any oracle Client on their machine and communicate to server.
-Mahender
I believe you always need the oracle client installed as everything in .net ultimately uses ODP.NET. However, you can use the Oracle Instant Client to make your users' setup process easier.

.NET application times out or does not connect when invoking a stored procedure accesses Oracle linked server

This .NET application used to work. When it did we were using the Oracle ODBC 9i. We moved to 10 g did not work anymore. Now at 11g stills does not work. I have set SQL Command Timeouts all over the place. I have set the connection timeout and the query timeout in the linked server properties to 120. I can run the proc from SQL Server Management studio and it works. It just does not work within my .NEt application anymore. Should I create a second connection string( to linked server) in the .NET app? We are at SQL Server 2005. Any Ideas??
Has your server you're connecting to moved, or are there now firewalls in place between the two servers?
I would check connectivity between the two first.
Try connecting to the oracle server using telnet on port 1521.
Alternatively, try using ODAC and checking your tnsnames.ora is configured correctly.
(It depends what provider you're using though.)

Resources