Client 19C client and Oracle Home Name - oracle

We are packaging Oracle 19C client 64 bits. Eventually 32 bits too.
With 11GR2, I was using Oracle_Home_Name parameter to set a dictinct name for the 32 and 64 bits. In the start menu and registry I have the same name.
Now I get a failure when using this parameter?
I found no documentation for this parameter on 19C client. Is it stil accept? If no how doing it?

Related

F#, SqlDataProvider, and Oracle

I can connect to my database just fine if I do this
let connection = new Oracle.DataAccess.Client.OracleConnection("User Id=hr;Password=hr;Data Source=localhost")
connection.Open()
This, however, will not work
#r "FSharp.Data.SqlProvider"
open FSharp.Data.Sql
type sql = SqlDataProvider<
ConnectionString = "User Id=hr;Password=hr;Data Source=localhost",
DatabaseVendor = Common.DatabaseProviderTypes.ORACLE,
ResolutionPath = "C:\apps\Oracle\product\12.1.0",
Owner = "hr">
The compiler says:
The type provider 'FSharp.Data.Sql.SqlTypeProvider' reported an error:
Exception of type 'System.Collections.Generic.KeyNotFoundException'
was thrown.
My best guess is a problem with my ResolutionPath. The ResolutionPath I've pasted here is to my Oracle client. I've also tried a ResolutionPath of [OracleClient]\bin and gotten the same result.
The resolution path of your Oracle should point to Oracle's ODP.NET (Oracle Data Provider for .NET), instead of common installation path of Oracle Database of Oracle 12c. Because basic installation of Oracle database since Oracle 11g and then 12c can't be guaranteed to include ODP.NET installation properly. Also ODP.NET installation is independent of any Oracle database installation on your machine.
You can download ODP.NET by going to Oracle Data Access (ODAC) for Windows page:
http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
Then download the ODP.NET provider for your specific needs, either 32 or 64 bit.
Install the latest ODP.NET, and then point the ResolutionPath to the path of ODP.NET installation, especially the folder that contains common DLL of ODP.NET.
Let me know if you still have problems. Good luck!
The key UserId needs to have a space between "User" and "Id", just like in your working connection string.

ODP.NET and OLEDB with Multiple Oracle Homes

For legacy reasons, our .NET 4.0 application currently uses both the Oracle OLEDB and ODP.NET providers to connect to an Oracle instance. We have standardized on the 11.2.0.3.0 Oracle client. Both data providers work as expected when one Oracle client is installed.
Issues have been reported on computers that already had the 11.2.0.1.0 client installed. A second client, 11.2.0.3.0, was installed for our application. The installation looks like this:
c:\oracle
\product
\11.2.0
\client_1 <-- (existing) 11.2.0.1.0
\bin <-- OraOLEDB11.dll registered here
\network
\admin <-- TNSNAMES does NOT contain ORACLESVR
\client_2 <-- (new) 11.2.0.3.0
\bin
\network
\admin <-- TNSNAMES contains ORACLESVR
Due to a bug in the 11.2.0.3.0 installer, the OLEDB driver is not registered in the second home, meaning the 11.2.0.1.0 driver remains registered.
This leads to some interesting/odd behavior that I cannot explain:
if the "ODP.NET from 11.2.0.3.0" part of the application is used first, both providers can connect, meaning the "OLEDB from 11.2.0.1.0" is using the tnsnames.ora from the _2 home.
if the "OLEDB from 11.2.0.1.0" part of the application is used first, neither provider will connect, presumably because both are using the tnsnames.ora from the _1 home.
So, once the Oracle home is determined for the application, both clients attempt to use that home, causing complete success or complete failure.
To work around this, we can do things like: register the 11.2.0.3.0 OLEDB provider, add the TNS_ADMIN environment variable, or add ORACLESVR the tnsnames.ora from the _1 home.
However, I want to know WHY this is happening? I cannot find, in the Oracle documentation for each provider, how the tnsnames.ora file is located when two clients are present and TNS_ADMIN is not specified.
How does one provider affect the other?
OLEDB is based on Microsoft COM and each DLL you register has to have a distinct name. Thus you cannot register OraOLEDB11.dll several times from different locations, i.e. OLEDB can be installed only once (per architecture).
In case you try to install several OLEDB on one machine the Oracle Installer creates a mess. It is always a challenge to have several Oracle Clients installed.
These locations are searched for tnsnames.ora, resp. sqlnet.ora:
current path (associated with the running client application)
Environment variable TNS_ADMIN defined for the session
Environment variable TNS_ADMIN defined for the system
Windows Registry Key HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (for x64) or HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (for x86)
%ORACLE_HOME%\network\admin
I got this list from Oracle Metalink 111942.1 (referring to Oracle 9.x and Windows NT/2000)
I don't know whether it applies for each individual Oracle Provider/Driver you may use. When you trace your application with Process Monitor you can get a different order.

Ruby 2.0 on windows connecting to MS SQL varchar(max) truncating to 2048

background:
i have written a few ruby transformation scripts
they get data from MS SQL transform them and then store it back to the data base
i am using tiny tds gem which works over freetds
--Problem:
for columns in sql that are varchar max and have string length greater than 2048 when data is extracted using tiny tds these columns get truncated to 2048 length exactly.
Freetds protocol 7.2 does fix this issue but is not available on windows platform
the code works perfectly on a mac. but due to integration with ETL tool i have to deploy it on a windows machine.
-- does any one have a solution for this.
I don't have any code doing this myself, but have you tried using the set textsize command. I think the default is 2048.
From the MS article on Set TextSize
The SQL Server Native Client ODBC driver and SQL Server
Native Client OLE DB Provider for SQL Server automatically
set TEXTSIZE to 2147483647 when connecting.
But I think you may need to call this explicitly (using the same connection, prior to getting data).

Issue with Oracle Client Data Source in SQL Server 2012 SSIS

I am having an issue with Oracle connectivity from an SSIS project, and have been Googling around to try to find a solution for over a week, now, and haven't found anything.
I have the following configuration in my dev environment:
O/S: Windows Server 2008 R2 Datacenter, 64-bit
SQL Server Data Tools, 2010
I need to configure an SSIS Data Flow Task to pull data from four different Oracle Data Sources (among others). One is Oracle version 11.1.0.7, two are version 9.2.0.4.0 and one is 9.2.0.8.0.
We use local TNSNAMES and SQLNET.ora files for our configuration.
I have tried this with many different Oracle clients, and basically get the same result, so will highlight one that I did:
Installed the Oracle Client 11gR2 64 bit.
Installed the Oracle Client 11gR2 32 bit (that order is recommended).
Copied my TNSNAMES and SQLNET.ora files into both network/admin configuration folders.
Did a successful TNSPING on each of the 4 databases named above. Successful.
Opened up SQL Server Data Tools and opened a new project
Did a "Create new Connection Manager", picked ADO.NET
Selected "Oracle Client Data Provider", enter the details of the 11g database
Did a "test Connection". Success.
Repeat the procedure for one of the 9.0 databases. When I do the "Test Connection" I get a "Test Connection failed because of an error in initializing provider. ORA-12645: Parameter does not exist".
I get this same result for all three of the 9.x databases.
Oracle "help" says that this error is caused by a missing parameter in the SQLNET.ora file, and that the solution is to add the missing parameter. Trouble is, nowhere does it say what is missing.
I have tried this same procedure with other Oracle client installs other than the two clients - ODTwithODAC1120320_32 bit, ODAC1120320_x64 and get exactly the same result. I can't go to a version 12 client because as I understand it, it won't work with a 9 database. I can't go to a 10 client because that won't work with an 11 database.
I have a feeling that it's very specific to the 64-bit O/S and version of SQL server, but that is our target platform, so need to make it work.
Can anyone help me with this, please?

SQL*Plus 8.0600 crashes at the trial of connect to Oracle 10g (10.2040)

Background: Oracle Forms - DB migration; 6i to 10g
Hi everyone!
Customer situation:
We want to attemp a DB connection with SQLPlus 8 to a Oracle 10g DB (standard installation). Unfortunately SQLPlus always crashes without any error message.
We tried the same scenario with our systems - there was no problem.
Now we are confused. Where should we look first to solve the problem? I have no idea.
Perhaps someone of you..
Thanks in advance,
Arne
Don't use SQL*Plus 8.0.6.
There's a limit on the compatibility and 10g doesn't accept connections from clients that old.
There's a metalink note (207303.1) and 8.0.6 was only supported for connections up to 9iR2
If you can get an 8.1.7 client, that was supported for connecting to servers from Oracle8 to 10gR2. If you just need to connect to a 10gR2 database, go with an instant client
People have got Forms 6i working against Oracle 10g.
It does need the latest patchset (17 or 18, I believe) for Forms 6i
There are also restrictions regarding the character set for the 10g database (can't be AL32UTF8 - metalink note 236231.1).

Resources