Informatica Connection to OCI ADW during installation - oracle

I'm trying to install Informatica 10.1 on OCI and thereby connecting it to ADW for the INFA users access.
I've successfully established connectivity with ADW through sqlplus using the wallet keys. However, during the Informatica installation I'm not able to connect to the ADW database. Below is an excerpt of the connection that is being tried by the installer.
Configure the database for the domain configuration repository:
Database type:
* 1->Oracle
2->SQLServer
3->DB2
4->Sybase
(Default: 1):
Database user ID: (default :- dbadmin) :
User password: (default :- ) :
Configure the database connection
1->JDBC URL
* 2->Custom JDBC Connection String
(Default: 2):
I'm wary on the custom JDBC Connection String that is being asked. Usually the default string is something like this:
jdbc:informatica:oracle://somestringfromtnsnames.oraclecloud.com:1521;ServiceName=somestringfromtnsnames.adb.oraclecloud.com
But in this case I'm connecting to ADW via wallet & ideally the wallet information should be provided. I just am not sure how. I've prepared a string in accordance to the same which I thought was correct, but it doesn't work.
jdbc:informatica:oracle:#tnsnamesalias?TNS_ADMIN=/path/to/my/wallet/store
Has anyone got any idea on this? Any pointers would be helpful.

From what I understand, the DataDirect JDBC drivers used by Informatica do not support Oracle's encryption, which is required to access ADW. It appears that you can use Oracle Client on an existing Informatica installation to add ADW as a target, but not using JDBC or ODBC. There appear to be limitations to this in terms of metadata access, and some import steps will need to be completed manually.
In spite of what it implies in "Autonomous Database 3rd Party Tools and Applications" for Informatica, the only way to complete a new installation - according to the steps in Appendix A of the doc - is to first disable the SQL*Net encryption. This requires a level of access to the Oracle configuration files and processes that does not exist for Autonomous Database services (i.e. access to sqlnet.ora and lsnrctl). It only exists if you are running your own VM host (Infrastructure as a Service) with a stand-alone installation of Oracle Database that you fully control.

Related

How to connect to Oracle 21c in Oracle Cloud from DataGrip

I have created an Autonomous Transaction Processing database in Oracle Cloud. There are no ready-for-use JDBC links around, but there are "wallets". There is an instance wallet and regional wallet. Oracle says one of them, preferably instance wallet, should be used to connect to this DB instance.
A wallet is a ZIP file with a dozen of files inside. I've downloaded an instance wallet and unzipped it. Now I'm trying to connect DataGrip to this instance.
There is a TNS connection type in DataGrip and there is a famous tnsnames.ora in the wallet, so I guess I should use them. TNS connection type accepts a TNSADMIN parameter, which, I guess, is a directory of that wallet. tnsnames.ora from the wallet lists a few service names, AFAIU they differ by their priority, e.g. one for low-priority queries, another for medium-priority and one for the highest priorities question. I'm OK with medium priority, so I did this:
As you see, I'm getting an error:
[08006][17002] IO Error: The Network Adapter could not establish the connection
SSO KeyStore not available.
I've googled around, but this topic seems to be complicated. Oracle has a lot of connection parameters with certificates involved in the connection process, and I'm really new and I just want to connect to this instance. Why it should be so complicated? Can I use this wallet directly in DataGrip?
It seems that I've did everything correctly and the only problem is actually the driver version.
As of today, 2021-02-02, the latest available Oracle driver version in DataGrip is 19.8.0.0:
To fix the issue I've just created another Oracle driver in DataGrip and manually provided the latest JARs:
Go to the Oracle Database 21c (21.1) JDBC Driver & UCP Downloads
Download the ZIPped JDBC driver and companion JARs corresponding to your Java version: 8 or 11. Or just download the version for Java 8 (ojdbc8-full.tar.gz). It should work with any modern Java.
Create new subdirectory in the DataGrip's drivers directory for you driver. Something like ~/.config/JetBrains/DataGrip2020.3/jdbc-drivers/Oracle/21.1 for Linix.
Unzip the driver in that directory.
Configure new driver in DataGrip. Just clone the existing Oracle driver and replace the "Driver Files" with the ones from the ZIP.
Use this new driver to connect to the instance:
DataGrip 2021.1 provides Oracle JDBC Driver 21.1.0.0 with all required jar files.
Also, read DataGrip article about connection to Oracle using wallets.

Oracle instant client 12c EZConnect Using tcps instead of tcp

I download oracle instant client 12.2.0.1.0, I try to use sql loader to load csv data to the database. I can successfully load using following:
sqlLdr.exe userid=user/password#//192.9.200.228:1521/oracle ERRORS=4000 control=D:\temp\csma\xx_20190225.ctl log=D:\temp\csma\xx.log
However my production would only allow secured connection only (use tcps), can I use tcps by EZConnect? If not how can I connect using tcps using just the instant client (not full client)?
Instant Client based applications can connect using a Net Service Name from a tnsnames.ora file. The Instant Client installation instructions (eg. the instructions for Linux x64) tell you where to put the Oracle Net configuration files. Create the default location, put the files there, and update the connect string in your application.
With Oracle 19c, the Easy Connect syntax was extended to be 'Easy Connect Plus' so you specify things like the wallet location in-line, see the Understanding the Easy Connect Naming Method in the Oracle Net 19c documentation. No Instant Client 19c has been released yet.

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.

Is Oracle Instant Client an actual database?

I want to create a small dev database just to use for developing my application. I've downloaded the Oracle Instant client and followed the directions to "install" (ie, copy/paste and set up some environment variables), but I can't find any information on how to connect, login, create database, etc, or even exactly what Instant Client is, specifically. So, a few specific questions:
Is Instant client just a set of drivers and components that allow you to connect to an existing database, or can you use Instant Client to create and administer a completely new database?
If it CAN be used to create a new database:
How do you "start" (or similar concept) the database so that it is ready for connections.
Because there is no installation, and no default configuration, I haven't set up a default schema, port, etc. So, what is the default connection information to connect to the database for the first time?
For example, I use SQL Developer to connect to and administer my remote database, so how could I connect to Instant Client from SQL Developer?
The client is JUST a client.
You'll want to download the Oracle Database installs. The easiest would be the XE (Express Edition) - it's free, and gets going on windows or linux pretty quick.
You'll then install the server software and THEN create a database. Then you can use your client to connect to said database. You can use your client now to connect to any Oracle database running on any server that you can see on your network.
There are more alternatives.
I talk about this in more detail here.

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.

Resources